@autowired注释如何用于私有字段?

@Autowired注释如何在没有getter setter的私有字段中工作? spring如何进入私人领域?

它适用于reflection 。 在这里,您可以找到如何设置公共字段的示例。 但设置私有字段并没有多大区别

 @Component public class A(){} @Component public class B(){ @Autowired private A a; } 

Spring创建了作为@Component提到的bean。 这里首先创建bean A,因为B依赖于A,所以完成A到B的注入。 不需要任何制定者。 只需要@Component。 Spring使用CGLib使用reflection创建bean。

三种类型的dependency injection

对象至少有三种方式可以接收对外部模块的引用:

构造函数注入:依赖项是通过类构造函数提供的。

setter injection:客户端公开了一个setter方法,注入器用它来注入依赖项。

接口注入:依赖项提供了一个注入器方法,该方法将依赖项注入传递给它的任何客户端。 客户端必须实现一个接口,该接口公开接受依赖关系的setter方法。