Nis*_*hit 8 java spring annotations autowired
我正在学习Spring,据我了解,当我们在具有通用名称的方法(不是setter方法)上使用@annotation时,该方法的参数将自动装配。
public class MovieRecommender {
private MovieCatalog movieCatalog;
private CustomerPreferenceDao customerPreferenceDao;
@Autowired
public void prepare(MovieCatalog mC,
CustomerPreferenceDao cPD) {
this.movieCatalog = mC;
this.customerPreferenceDao = cPD;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
因此,在这里,将movieCatalog和customerPreferenceDao字段与mC和cPD的值自动关联。我无法理解的是,这与没有“ @autowired ” 的相同方法有何不同。
当应用于字段名称时,我理解@autowired,但无法理解何时将值显式传递给方法(setter或任何其他方法),那么Spring有什么特别之处?
P.J*_*sch 10
答案很晚,但是这里是:
任何带有注释的方法@Autowired都是config方法。字段注入完成后,将在bean实例化上调用它。方法的参数会在调用时注入到方法中。
您提供的@autowired 方法不需要从您自己的代码中调用。它将被 Spring 框架调用。想象一个声明为@autowired 的类中的setter 方法。setters 参数由 Spring 提供。所以在使用类对象实例之前,你不必编写代码来调用setter方法,就像你不需要提供@autowired构造函数的参数一样。使用自动装配可以做很多事情。看看这两个例子:
@autowired 的优点之一是您不必实例化对象,因为 Spring Framework 会为您完成。但不仅如此,@autowired 对象由 Spring 框架管理,因此您不必担心对象实例的处理,因为 Spring 会为您完成。因此它节省了大量用于跟踪和管理对象的编码和不必要的代码。希望这会有所帮助。
方法上的 @autowired 用于setter-injection。它与现场注入没有什么不同,除了 bean 不太依赖于 spring 容器,您也可以自己实例化并连接它。
使用它的原因之一是如果您有循环依赖项。
setter 注入的另一个用途是它允许稍后重新注入(可能是可选的)依赖项 (JMX)。
| 归档时间: |
|
| 查看次数: |
5212 次 |
| 最近记录: |