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 移除规则

同包含规则

包扫描注解使用Spring IOC容器中添加bean的几种方式(注解)
以移除包扫描中的元素为例如下图Spring IOC容器中添加bean的几种方式(注解)
通过打印结果可以看出 我们定义的规则生效了
Spring IOC容器中添加bean的几种方式(注解)

2. 通过Configuration + bean注解

通过包扫描的方式我们可以将本地的代码交给spring管理,但是如果第三方的包我们想让spring进行管理该怎么做呢? 我们可以通过Configuration+bean来注册bean

  • 继续用上面的图片进行说明
    这里将blue注册进ioc容器中Spring IOC容器中添加bean的几种方式(注解)
  • 我们还可以根据条件来初始化bean 比如判断ioc里如果有了某个bean 才将这个bean注册到容器中 这里要用到一个新的注解Conditional

通过MyConditional实现如果IOC中存在color才像IOC中注册blueSpring IOC容器中添加bean的几种方式(注解)
Spring IOC容器中添加bean的几种方式(注解)

未完待续。。。。

3. 通过Import 注解

4. FactoryBean 的方式