我有一个组件
@Component
public class ExpenseCalculator {
@Autowired
private TaxService taxService;
@Autowired
private EmployeeService employeeService;
@Autowired
@Lazy
private PurchaseService purchaseService;
}
这里
PurchaseService
仅在调用使用purchaseService
的代码的任何部分时被初始化(?)。现在我必须移动
ExpenseCalculator
一个配置类(它没有@Component
注解)
@Configuration
public class ExpenseConfig {
@Bean
@Lazy
public ExpenseCalculator getExpenseCalculator(
TaxService taxService,
EmployeeService employeeService,
PurchaseService purchaseService
) {
return new ExpenseCalculator(taxService, employeeService, purchaseService);
}
}
但是
purchaseService
不再是 @Lazy
组件,当 ExpenseCalculator
被初始化时, purchaseService
被初始化。
有什么方法可以使用
purchaseService
来延迟初始化configuration
?
你必须在两个地方用
PurchaseService
注释你的 @Lazy
- 你创建它们的地方和你自动装配它们的时间。
请参阅 2.2 中的 Spring @Lazy Annotation 快速指南 帖子。 @Autowired 部分存在评论:
Note, that the @Lazy is mandatory in both places.