自动装配_笔记

自动装配;
       Spring利用以来注入,完成对IOC容器中各个组件的依赖关系赋值
   1、@Autowired:自动注入 ,这是Spring的组件
        1.1 默认优先按照类型去容器中找对应的组件,如果找到,就给它赋值
        1.2 如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找
        1.3 使用@Qualifier("bookDao")明确指定要装配组件的id,而不是使用属性名
        1.4 如果容器中没有相对应的组件,会报错。所以,默认一定要将属性赋值好
        1.5 可以使用@Autowired(required=false)表示非必须组件
        1.6 @Primary: 让spring进行自动装配的时候,默认使用首选的bean。也可以继续使用@Qualifier指定需要装配bean的名字
       以BookerService为例,这里需要BookerDao这个组件
       BookerService{
         @Autowired
         BookerDao   bookerDao;
       }
   2、Spring还支持使用@Resource(JSR250规范)和@Inject(JSR330规范)   这两个都是Java规范的注解  
        @Resource可以和@Autowired一样实现自动装配功能,默认是按照组件的名称进行装配的,没有能支持@Primary的功能和@Autowired(required=false)的功能
      

      @Inject:使用该注解还要导入pom.xml文件Javax.inject的依赖.功能和@Autowired一样,不过没有@Autowired(required=false)的功能
      

   3、@Autowired:可以标注构造器,参数,方法,属性;
       3.1 标注在方法上时,Spring容器创建当前对象,就会调用方法,完成赋值,方法使用的参数,自定义类型的值从IOC容器中获取.(例如:@Bean+方法参数,这些位置默认不写@Autowired)   
       3.2 标注在构造器上时,要用到组件,都是从容器中获取。如果当前类只有一个有参构造器,这个有参构造器的@Autowired可以省略,参数位置的组件还是可以自动从容器中获取
       3.3 放在参数上

 4、自定义组件想要使用Spring容器底层的一些组件(如:applicationContext, beanFactory,xxx等等)
       自定义组件只需实现xxxAware接口;在创建对象的时候,会调用接口规定的方法注入相关的组件。把Spring底层一些组件注入到自定义的Bean中
       xxxAware的功能都是使用xxxProcessor来处理的。


 Spring中AutowiredAnnotationBeanPostProcessor:解析完成自动装配的功能

一般来说,默认加在IOC容器中的组件,容器启动会调用无参构造器创建对象,再进行初始化赋值等操作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值