有人能告诉我
之间有什么区别@Autowired
private MovieFinder movieFinder;
和
private MovieFinder movieFinder;
@Autowired
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
答案 0 :(得分:2)
在您提供的示例中,它们是等效的。 setter语法允许你做其他事情,因为你有被调用的方法。例如:
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdcTemplate= new JdbcTemplate(dataSource);
}
我通常使用第一种表示法,除非我有一个像我的例子一样的特殊情况。
编辑:只是为了澄清,第一种情况称为场注入,通过直接使用反射设置字段来完成。第二种情况是setter注入,通过调用setter方法完成。还有第三种注射方式,即构造注射。