我正在学习Spring Boot CommandLineRunner。我有这段代码:
@Component
public class DataLoader implements CommandLineRunner {
private final OwnerService ownerService;
private final VetService vetService;
public DataLoader() {
ownerService = new OwnerServiceMap();
vetService = new VetServiceMap();
}
@Override
public void run(String... args) throws Exception {
...
}
何时调用此构造函数?我想知道这是否是构造函数注入吗?我看到没有@Autowired,但是我知道当只有一个构造函数时,并不一定要放置@Autowired。任何反馈将不胜感激!
答案 0 :(得分:2)
是的,将调用默认的构造函数,但这不是 not 构造函数注入-您无需在该构造函数中注入任何内容。
当所有bean都被构建并放置到应用程序上下文中时,该构造函数将在Spring初始化时被调用。
由于您正在使用new OwnerServiceMap()/new VetServiceMap()
(使用new
进行操作),因此您绕过了Spring的代理-因此,如果它们具有一些像@Transactional
这样的注释,那将是行不通的。 / p>