一些ioc容器相关注解的理解模糊问题

来源:11-3 SpringIOC的应用

莨菽菽

2020-05-24

http://img1.sycdn.imooc.com/szimg/5eca78740904d02403860333.jpg

老师好:

老师原话:@Configuration就会把applicationConfig注入到容器,spring容器就根据这些配置来生成ioc容器去装配对应的bean。

问题1.这个意思是使用@Configuration会创建ioc容器?这么说每使用一个@Configuration就会有ioc容器,然后spring里面有多个ioc容器了么?


问题2.使用@Configuration是把ApplicationConfig类注入了ioc容器,然后使用@Bean又把Person类注入到容器;还是说@Configuration+@Bean才把Person类注入了IOC容器?


问题3:SpringBoot的@Component完全替代了原来的@Configuration+@Bean了么?@Configuration+@Bean还有什么独有的应用场景不?


问题4:之前我一直理解扫描注入的原来是,先是AOP切有@ComponentScan这个注解,然后使用AOP切面去切相关的@Component实现注入,这个理解是错的么?应该是@Component的就注入了IOC容器,然后@ComponentScan就是去IOC容器找相关的类,是这样理解么?


问题5:老师讲课说的Spring容器就是指IOC容器么?

写回答

1回答

翔仔

2020-05-25

同学好,

  1. 不是,主要是springIOC容器会认这些标签注解,扫描整个package,然后把这些注解标记的类创建好放入容器里。spring项目确实可以存在多个容器。

  2. @Bean标记的方法会把Person类注入了IOC容器,但是首先所在类需要@Configuration标记,这需要看源码

  3. 并没有,两个属于不同用法。@Configuration+@Bean用于灵活的编码配置,比如根据不同的情况创建实现了同一个接口的不同bean

  4. 理解是正确的,ComponentScan主要是去指定要扫描的范围,然后在这个范围里面被@Configuration等注解标签标记的bean会被扫描近来

  5. 指的是spring里面IOC容器的具体实现

其实同学的这些问题,基本都能在我的新课 https://coding.imooc.com/class/420.html 里得到答案,而且更深刻,毕竟是从源码分析

0
2
翔仔
回复
莨菽菽
同学好, 1 跟aop不相关,主要是通过反射去后去。 2 这个主要就是跟spring设计有关,里面实现了一套加载的顺序去处理注解标签,具体需要看源码,或者看我的课程 3 不对,主要是加载@ComponentScan里面的package,扫描包,然后去找找@Controller之类的注解,然后创建Beandefinition 之后按需按配置创建bean实例
2020-05-27
共2条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程