Spring学习日志之Bean的装配
2017-11-09 14:13
225 查看
Spring容器负责创建应用程序中的bean并通过依赖注入来协调这些对象之间的关系。但是,作为开发人员,要告诉Spring需要创建哪些bean并且如何将其装配在一起。当描述bean如何装配时,Spring提供了两种主要的配置方式。
基于Java的配置
隐式配置
Spring通过组件扫描来实现隐式配置。
组件扫描
如果在类上使用了@Component注解,则表明该类会作为组件类,并告知Spring要为这个类创建bean。
组件扫描默认不开启,需要在配置类上使用
@ComponentScan注解。默认情况下
@ComponentScan会扫描与配置类相同的包。任何这个包以及这个包下的所有子包中带有
@Component注解的类都会被扫描。
可以为
@ComponentScan设置
basePackages属性来显式指定要扫描的基础包。指定时有三种实现方式:
以
String的形式来指定 -
@ComponentScan(basePackages="myPackage")。此方式类型不安全,重构代码后指定的基础包可能会出现错误。
指定为包中所含的类或接口 -
@ComponentScan(basePackages="Student.class")。
创建一个用来进行扫描的空标记接口。(推荐)
使用了
@Component注解的会得到一个类名首字母小写的bean ID。
显式配置
有些时候是不太适合使用隐式装配的,比如要将第三方库中的组件装配到自己的代码的时候。
需要为配置类添加一个@Configuration注解,表明该类是一个配置类,包含了如何Spring容器如何创建bean的细节。
要在配置类中声明bean,需要编写一个带有
@Bean注解的方法,这个方法会创建所需类型的实例并返回。
@Bean注解会告诉Spring该方法将会返回一个对象,该对象要注册成为Spring应用上下文中的bean,方法体中包含了产生bean实例的逻辑。
默认情况下,生成的bean ID和带有
@Bean的方法的方法名相同。
对带有
@Bean注解的方法的所有调用都会被Spring拦截,以此确保会直接返回该方法所创建的bean,而不是每次都对其进行实际调用。
可以在配置类中直接引用其它的bean而不需加
@autowired注解。
自动装配
简单来说,自动装配就是让Spring自动满足依赖的一种方法,在满足依赖的过程中,会在Spring上下文中寻找所需要的其它bean。为了声明要进行自动装配,可以使用@Autowired
注解。
@Autowired注解可以用在类的任何方法上。
@Autowired会根据所需bean的类型来进行搜索。
如果没有匹配的bean,那么Spring将会抛出一个异常。为了避免异常的出现,可以将
@Autowired的
required属性设置为
false。
在声明bean时,可以为其中一个可选的bean添加
@Primary注解来标记其为首选,从而避免自动装配时多个bean可以选的歧义性。
相关文章推荐
- Spring学习笔记之Bean的装配
- Spring学习-12:Spring的Bean的装配:注解的方式
- Spring学习-----bean的装配(6)
- Spring学习笔记(11.Spring Bean装配注释)
- [Spring]Bean的自动装配Autowire【学习笔记】
- Spring 学习笔记(五)—— Bean之间的关系、作用域、自动装配
- Spring学习之Bean的装配多种方法
- Spring学习笔记(8.Spring Bean装配之自动装配)
- Spring学习笔记(六) --- 装配Bean之高级装配
- 【Spring学习笔记四】-自动装配Bean
- Spring框架学习第二讲(Spring的bean装配)
- [学习笔记]spring实战-装配Bean
- Spring学习----------Spring自动装配Bean的属性
- spring学习——装配Bean
- Spring学习-装配Bean
- 系统学习Spring(二)——装配Bean
- Spring4学习笔记(五):Bean的自动装配
- Spring学习总结之---装配Bean
- Spring入门学习——用XML配置自动装配Bean
- spring学习笔记(4)——配置文件配置bean自动装配