我知道我不能在非托管的spring类中使用@Autowired注释。但是我注意到,如果我通过ApplicationContext getBean方法检索它,我能够在非托管的spring类中获取bean实例。 谁能解释我为什么会这样?选项之间有什么不同?在两个春天都不知道非托管类
答案 0 :(得分:3)
1)如果你使用@Autowired
,你可以在非托管的spring类中使用@Configurable
- 使用内部方面weaving spring将设法将引用的bean自动装入你的“Configurable”类当它用“new”运算符构造时。以下是一篇文章如何运作:http://www.javacodegeeks.com/2013/09/spring-configurable-magic.html
如果一个类不可配置spring,则无法注意何时创建新实例以自动装配其引用。
2)ApplicationContext是“中央界面,为应用程序提供配置。”在这里,您可以访问整个Spring托管bean等。这就是为什么您可以通过ApplicationContext访问它来获取所有内容。 http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/ApplicationContext.html
答案 1 :(得分:0)
这就是你如何使用applicationContext从spring应用程序中访问这个bean。
另一件事是,实际上你可以通过@Configurable将bean注入非托管bean。在这种情况下,AspectJ将用于完成这项工作