Spring往容器中注入组件四种方式:

1. 包扫描(@ComponentScan+@Controller,@Service,@Component,@Repository)
开发中经常使用。

2. 配置类 @Configuration + @Bean方式
一般用导入第三方的组件

3. 使用@Import[快速的给容器中导入组件]
            1.使用@Import 导入组件,id是组件全类名
            2. ImportSelector:返回需要导入ioc容器组件的全类名
            3. ImportBeanDefinitionRegistrar:手动将组件添加到容器中

4. 使用Spring提供的FactoryBean (工厂Bean)
           1.默认获取的FactoryBean.getObject()
          2.如果需要获取当前类本身,需要在id前加一个& getBean("&FactoryBean")
 

Spring通过DI(依赖注入),完成对ioc容器中各个组件依赖关系赋值

1.@AutoWired自动注入:

       默认优先按照类型去容器中查找对应的组件,applicationContext.getBean(Xxx.class);

       如果找到多个相同类型的组件,则会再按当前属性的名称作为属性的id去容器中查找
applicationContext.getBean("xxxx");

       可以结合@Qualifier("id"):使用@Qualifier指定需要装配的组件id,而不是根据属性名

       自动装配一定要将属性赋值好,没有就会报错; @AutoWired(required = false) 避免报错

2.@Primary:让Spring进行自动装配的时候,默认使用首选的名字

3. Spring还支持使用@Resource(JSR250)和@Inject(JSR330)[java注解规范]

     @Resource:可以和@AutoWired一样实现自动装配功能;默认是按照组件名称进行装配的;
但不支持@Primary功能,也没有@AutoWired(required = false);

     @Inject: 需要导入javax.inject的包,和@AutoWired的功能一样.没有required=false的功能
@Autowired:是Spring定义的;@Resource和Inject是java规范

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信