请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

https://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容器么?

正在回答 回答被采纳积分+3

1回答

翔仔 2020-05-25 18:16:52

同学好,

  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 回复 有任何疑惑可以回复我~
  • 提问者 莨菽菽 #1
    老师,追问点问题:
    1.是不是用到注解的地方,其实都需要使用aop去获取注解,然后再去操作?
    2.不同注解的调用顺序跟什么有关,比如@ComponentScan肯定先于@Component先被调用
    3.扫描注入的过程是,先是类A使用AOP切有@ComponentScan这个注解,然后在切入点的增强逻辑再使用AOP切面去切相关的@Component类B,然后才讲类B注入IOC容器,这么理解对么?
    回复 有任何疑惑可以回复我~ 2020-05-25 23:07:11
  • 翔仔 回复 提问者 莨菽菽 #2
    同学好,
    1 跟aop不相关,主要是通过反射去后去。
    2 这个主要就是跟spring设计有关,里面实现了一套加载的顺序去处理注解标签,具体需要看源码,或者看我的课程
    3 不对,主要是加载@ComponentScan里面的package,扫描包,然后去找找@Controller之类的注解,然后创建Beandefinition 之后按需按配置创建bean实例
    回复 有任何疑惑可以回复我~ 2020-05-27 00:58:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信