Spring-DI

作者: do_young | 来源:发表于2019-01-09 15:19 被阅读10次

    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接口:

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

    相关文章

      网友评论

          本文标题:Spring-DI

          本文链接:https://www.haomeiwen.com/subject/przwrqtx.html