spring 创建 bean 的 几种方式
Spring 创建 bean 有 多种方式: 自动创建,手动创建注入;
方式1: 使用 Spring XML 配置;
<bean id=''id class=''class / >
方式2: 使用 @Component, @Service, @Controler, @Repository 注解;
这几个 注解 都有 同样 的 功能,被注解的 类 将会 被 Spring 容器 创建 单例 对象。
@Component 侧重于 通用的Bean;
@Service 标识 该类 用于 业务逻辑
@Controler 标识 该类为 Spring MVC 控制器类。
@Repository 标识 该类 是一个 实体诶 。只有 属性 和 setter getter。
当用于Spring Boot 时,这些注解类 若不在根路径下 或 子路径下, 请 使用 @ComponentScan 扫描指定路径。
方式3: 使用 @Bean 注解, 这种方式 用在 Spring Boot 应用中。
@Cofiguration 标识 这个类 是 一个 Spring Boot 配置类, 其 将会 扫描 该类中 是否 存在 @Bean 的 注解 的方法。 有就创建一个 bean实例 放入容器中 名字默认就是方法名。
方法4: 使用注解@import,也会创建 对象并 注入容器中。
方式5: 使用 @ImportSelector 或者 ImportBeanDefinitionRegistar 接口, 配合 @Import 实现。
在使用 一些 Spring Boot 第三方 组件时,经常 会 看到 @Enablexxxxxxxx 来使用相关的服务。
方式6: 手动注入 Bean 容器,有些 场景下 需要代码动态注入, 以上方式都不适用。 这时就 需要 创建 手动注入。
通过 DefaultListableBeanFactory 注入。
这种方式 的应用场景 是 为 接口创建动态 代理 对象, 并 向 Spring 容器注册。
比如 Mybatis 中的 Mapper 接口 , Mapper 没有实现类, 启动时 创建 动态 代理对象, 将该对象 注册到 容器中, 使用时 只要 @Autowired 注入 即可使用, 调用接口方法 会被代理 拦截, 进而 调用 相关的 SqlSession 执行相关的 SQL 业务逻辑。
spring 创建 bean 的 几种方式的更多相关文章
- spring创建bean的三种方式
spring创建bean的三种方式: 1通过构造方法创建bean(最常用) 1.1 spring默认会通过无参构造方法来创建bean,如果xml文件是这样配置,则实体类中必须要有无参构造方法,无参构造 ...
- Spring 创建Bean的6种方式
前言 本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案. 方式1: 使用Spring XML方式配置,该方式用于在纯 ...
- 7 -- Spring的基本用法 -- 7... 创建Bean的3种方式
7.7 创建Bean的3种方式 ① 调用构造器创建Bean. ② 调用静态工厂方法创建Bean. ③ 调用实例工厂方法创建Bean. 7.7.1 使用构造器创建Bean实例. 使用构造器来创建Bean ...
- Spring创建JobDetail的两种方式
一.Spring创建JobDetail的两种方式 二.整合方式一示例步骤 1.将spring核心jar包.quartz.jar和Spring-context-support.jar导入类路径. 2.编 ...
- spring 注入bean的两种方式
我们都知道,使用spring框架时,不用再使用new来实例化对象了,直接可以通过spring容器来注入即可. 而注入bean有两种方式: 一种是通过XML来配置的,分别有属性注入.构造函数注入和工厂方 ...
- Spring获取bean的几种方式
工作中需要对一个原本加载属性文件的工具类修改成对数据库的操作当然,ado层已经写好,但是需要从Spring中获取bean,然而,工具类并没有交给Spring来管理,所以需要通过方法获取所需要的bean ...
- spring 装配bean的三种方式
这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 什么是依赖注入呢?也可以称为控制反转,简单的来说,一般完成稍微 ...
- spring-第六篇之创建bean的3种方式
1.创建bean的方式有3种: 1>使用构造器创建bean,即设值注入.构造注入本质都是使用bean的构造器创建bean的. 2>使用静态工厂方法创建bean. 3>调用实例工厂方法 ...
- spring装配bean的三种方式及其混合装配
在spring容器中装配bean有三种基本方式和混合装配方式: 隐式的bean自动发现机制和自动装配 在java中进行显式配置 在xml中配置 混合装配(在多个java文件中配置.在JavaConfi ...
- Spring定义Bean的两种方式:和@Bean
前言: Spring中最重要的概念IOC和AOP,实际围绕的就是Bean的生成与使用. 什么叫做Bean呢?我们可以理解成对象,每一个你想交给Spring去托管的对象都可以称之为Bean. 今天 ...
随机推荐
- 重启系统(等级考试4级 2021-03 T4)
这道题如果没有一次重启系统的机会就相当于两个最长不下降子序列加在一起. 所以只需要改亿点点即可 把dp分为 dpleft 和 dpright 最长不下降子序列程序:最长上升子序列 II 时间复杂度(n ...
- Tengine01
1 简介 Tengine是nginx的一个版本 Tengine文档:http://tengine.taobao.org/ nginx官网: http://nginx.org Nginx (" ...
- springBoot集成flowable
前言 Flowable可以十分灵活地加入你的应用/服务/构架.可以将JAR形式发布的Flowable库加入应用或服务,来嵌入引擎. 以JAR形式发布使Flowable可以轻易加入任何Java环境:Ja ...
- Ubuntu18.04编译ZLMediakit支持webrtc
背景 最近在做流媒体相关的一些东西, 比较了一些开源的流媒体服务, 目前 srs 和 ZlmediaKit 项目是评价比较高的, 今天主要在 Ubuntu18.04 上编译 ZlmediaKit, 并 ...
- NETAPP 设备 C模式开关机顺序
设备正常开关机顺序开机顺序: 1.开启所有磁盘柜的电源,大概20秒后再开启存储控制器: 2.开启接有FAS2750存储的以太网交换机或者光纤交换机: 3.开启有挂载FAS2750存储空间的服务器或者磁 ...
- JZOJ 4043. 【雅礼集训2015Kzf】洪水
题目 题解 很明显的 \(dp\) \(f_u = \min(a_u, \sum_{(u,v) \in E}f_v)\) 然后套路的设 \(g_u\) 表示不管重儿子的 \(f_u\) \(f_u = ...
- 提取show config命令结果
import re import os # 从命令收集日志文件中,提取show config命令结果. file_list = os.listdir(os.getcwd()) dirname = os ...
- MyBatis 查询的条目与预期的不一致
预期查询的数据条目是 4 条: 但是 MyBatis 查询出来的结果只有 2 条数据: resultMap 开启了 autoMapping 功能,就不需要多余地添加 result.下面是错误的映射操作 ...
- IO相关了解
1.IO的概念 IO简单来讲就是对输入输出设备的简化表达形式 单片机中各种接口,进行数据流的传输 从磁盘中读取数据至内存,又或者从内存中写入磁盘 编程中的IO 此时的IO其应用程序的运行态,即进程-- ...
- Java的注释和标识符
java 的注释规则 1. 单行注释 语法:// 描述://用于当行注释,与JavaScript一样 //这是一个代码注释 2. javadoc注释 语法: /** *注释内容 / 描述:多行注释中可 ...