@Autowired是比较常用的注解之一,作用是自动注入被@Autowired所修饰的bean(其实就是java类)。
工作原理:
注解解析器:AutowiredAnnotationBeanPostProcessor
1、Spring容器启动时,AutowiredAnnotationBeanPostProcessor被注册到容器;
2、扫描代码,如果带有@Autowired注解,则将依赖注入信息封装到InjectionMetadata中(见扫描过程);
3、创建bean时(实例化对象和初始化),会调用各种BeanPostProcessor对bean初始化,AutowiredAnnotationBeanPostProcessor负责将相关的依赖注入进来;
扫描过程:
1、扫描当前类中标注@Autowired的属性和方法;
2、 再查找父类中注@Autowired的属性和方法,依次遍历;
**疑问及思考:**为什么要这个@Autowired来修饰类,没有不行吗?难道一个bean不用@Autowired修饰,在Controller层就用不了了吗?
答案是:不用@Autowired修饰,在Controller层还是可以用的。个人理解是,其实就是程序员偷懒,不想多写几个new,所以搞了这个东西。
可以参考:https://blog.youkuaiyun.com/u013257679/article/details/52295106
https://www.cnblogs.com/fnlingnzb-learner/p/9723834.html 再看下