Spring 复习 四、自动装配

190 阅读2分钟

四、自动装配

当一个bean依赖另一个bean时,在后者创建时自动将后者装配到前者中

1. bean装配

@Autowired

按照类型装配

  • 常标注在bean的属性上

    若存在多个相同类型的bean,则按照被注解的属性的属性名来注入

  • 标注在参数上

    bean将会被装配在该参数上

  • 标注在属性的setter方法上

    bean将会被装配在参数上,接下来spring将会调用setter方法

  • 标注在构造器上

    bean将会被装配在参数上,接下来spring将会调用该构造方法

    当bean有且只有一个有参构造器,没有无参构造器,可以省略@Autowired注解,并依旧可以自动装配

  • 标注在被@Bean标注的方法的参数上

    bean将会被装配在参数上,参数也可以省略@Autowired注解,并依旧可以自动装配

属性名作用
required是否必须装配(其他装配注解都不支持)

@Primary

标注在被装配的bean上(可以是Class、@Component@Bean

被标注有@Primary的bean会被优先装配

@Qualifier

常标注在bean的属性上,当有多个bean作为候选装配时(如使用@Autowired时),按照该注解的value属性值作为bean的id进行装配,优先级高于@Primary

@Resource

功能类似于@Autowired,但不支持@Primary@Qualifier

属性名作用
namebean的id

2. Aware装配

可以通过实现xxxAware接口来将Spring的一些底层组件注入到bean中

有一些比较有趣的Aware

Aware作用
EmbeddedValueResolverAware可以用来解析spEL
MessageSourceAware可以用来国际化文本信息
ResourceLoaderAware获取资源加载器读取资源文件
EnvironmentAware能获取当前容器的环境属性信息