这是我的Spring存储库界面。
@Repository
public interface WebappRepository extends CrudRepository<myModel, Long> {
}
在我的控制器中,由于Spring注释的魔力,即使它是一个接口,我也可以实例化
WebappRepository
。public class controller{
@Autowire
WebappRepository repo;
public controller(){
}
}
但是,使用构造函数的此变体不起作用,并且正确地如此,因为WebappRepository是一个接口。
public class controller{
WebappRepository repo;
public controller(){
this.repo = new WebappRepository();
}
}
Olivier Gierke本人advocates to avoid
@Autowire
fields at all costs。如何在避免使用@Autowire
的同时“实例化”我的Spring应用程序中的存储库接口? 最佳答案
在构造函数中注入依赖项:
@Component
public class Controller{
WebappRepository repo;
@Autowire
public Controller(WebappRepository repo){
this.repo = repo;
}
}