组件的添加在SpringBoot2中是利用注解方式实现的,也就是我们常说的注解代替配置文件
- 在某个配置类前加上
@Configuration
注解,就告诉了SpringBoot这是一个配置类,而在配置类中可以用一个方法来定义一个Bean
组件,并且在方法前加上@Bean(value)
,表示该方法为一个组件,组件id为value
,如果没写value
则为方法名,返回类型为组件类型,返回值为组件实例
该注解中有一个参数是Boolean proxyBeamMethods
- 值为
true
时,称为Full
模式,保证该组件为单实例对象 - 值为
false
时,称为Lite
模式,方法每次返回的都是新的实例
当该配置类下的某个组件依赖另一个组件时,该组件在实例化时必须检查容器中是否已经存在该组件实例,因此此时必须保证该组件为单实例,也就是proxyBeanMethods = true
- 值为
因此,当某个配置类的组件有依赖其他组件时,必须保证该配置类为
Full
模式,否则,推荐Lite
模式,因为其轻量级,加载速度更快
- 还有一种方法就是用
@Component、@Repository、@Service、@Controller
来对组件类添加组件,不多赘述 - 还可以通过
@Import({User.class,Person.class})
对组件进行添加 @Condition()
表示按照某些条件判断是否添加组件,该注解有许多"子注解":
比如ConditionalOnBean(value)
表示如果容器中存在某Bean
组件,则将其注入容器,其他的可自行查询功能
@Conditional
多在SpringBoot自动配置底层源码中经常用到