春天自动装配

时间:2014-04-10 21:39:51

标签: java spring dependency-injection

我试图检查Spring框架中的一些代码,其中编码了自动装配的功能。

让我举个例子。

@Component
public lass Service{
   @Autowired
   private DaoLayer daoLayer;
}

我的问题是:当使用自动装配标记相应字段时,春天如何注入DaoLayer或任何实例。

  1. 使用反射制作吗? ,如果使用反射:反射是否可以访问私有字段?
  2. 使用新创建的代理进行此操作?并在其上注入引用?如果发生这种情况,当getter和setter不存在时会发生什么?
  3. 使用其他技术和哪一种?
  4. 任何人都可以指出我可以在哪里找到这些信息,或者向我解释这个过程的更多信息。

    我记得在sring2.5中,getter和setter需要存在但在spring3.2中不再存在,所以现在spring是由它自己创建的?或者不再使用了?

    感谢。

1 个答案:

答案 0 :(得分:1)

  

使用反射制作吗? ,如果使用反射:反射   可以访问私人领域吗?

是的,Spring在任何地方使用反射。通过反射,您可以执行许多操作,例如access private fields, methods, constructors, and classes.

  

使用新创建的代理进行此操作?并在其上注入参考?,   如果发生这种情况,当没有吸气剂和固定剂时会发生什么?

Spring直接在字段上解析@Autowired。在创建bean时,它只需要getter和setter(使用Java bean常规名称)来解析<property>声明的<bean>元素。请注意,Spring再次使用反射来调用这些getter / setter。

  

使用其他技术和哪一种?

不需要任何其他内容。

如果您对执行此操作的实际课程感兴趣,请查看AutowiredAnnotationBeanPostProcessorSpring documentation也解释了其中一些内容(查看IoC章节)。

相关问题