Spring IOC容器中添加bean的几种方式(注解)
Spring IOC容器中添加bean的集中方式(注解)
本文主要是介绍在使用spring 注解驱动开发的过程中像IOC容器中添加bean的几种方式,以及使用场景
1. 通过包扫描(ComponentScan)+(@Component/@Controller…)
这种方式是我们日常开发中最常用到的 spring将扫描路径下带有@Component/@Controller/@Service/@Repository注解的类添加到spring IOC容器中
ComponentScan 常用属性
- basePackages 指定包路径
在指定路径下的带有 @component/@Controller… 注解的类都会被加载进ioc 容器
- includeFilters 包含规则
Filter注解 用 FilterType.CUSTOM 可以自定义扫描规则 需要实现TypeFilter接口实现match方法 其中参数 MetadataReader 当前类的信息(注解,类路径,类原信息…) MetadataReaderFactory MetadataReader的工厂类
- excludeFilters 移除规则
同包含规则
包扫描注解使用
以移除包扫描中的元素为例如下图
通过打印结果可以看出 我们定义的规则生效了
2. 通过Configuration + bean注解
通过包扫描的方式我们可以将本地的代码交给spring管理,但是如果第三方的包我们想让spring进行管理该怎么做呢? 我们可以通过Configuration+bean来注册bean
- 继续用上面的图片进行说明
这里将blue注册进ioc容器中 - 我们还可以根据条件来初始化bean 比如判断ioc里如果有了某个bean 才将这个bean注册到容器中 这里要用到一个新的注解Conditional
通过MyConditional实现如果IOC中存在color才像IOC中注册blue