Spring-DI

Spring利用依赖注入(DI),完成对IOC容器中中各个对象的依赖关系赋值;
具体注入规则如下:

  • 默认优先按照类型去容器中找对应的对象;
applicationContext.getBean(UserDao.class);
  • 如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找;
applicationContext.getBean("userDao")
  • 使用@Qualifier可以指定需要装配的组件的id,而不是使用属性名;
@Qualifier("bookDao")
  • 自动装配默认一定要将属性赋值好,没有就会报错,如果不需要赋值可以使用required属性;
@Autowired(required=false)
  • 使用@Primary让Spring进行自动装配的时候,默认使用首选的bean;
@Primary

只需要使用注解,标注该对象需要由容器依赖注入,Spring容器就会完成相关依赖对象的创建及赋值的操作。

    UserService{
        @Autowired
        UserDao  userDao;
    }

Spring支持三种类型的注解:

  • Spring规范的Autowired
  • JSR250规范的Resource
    默认是按照组件名称进行装配的;
    没有能支持@Primary功能;
    没有支持@Autowired(reqiured=false);
  • JSR330规范的Inject
    需要导入javax.inject的包;
    没有required=false的功能;

备注

可以通过继承Spring的Aware接口,为对象注入Spring容器上下文中的对象,Spring提供了以下的Aware接口:

11553600-8940a0373e615ad0.png
spring-aware.png

Spring通过后置处理器 BeanPostProcessor,在容器初始化的过程中,对继承了这些接口的对象注入依赖的对象。

猜你喜欢

转载自blog.csdn.net/weixin_34208283/article/details/87411047