[英]Spring lazy initialization in configuration with constructor
我有一个组件
@Component
public class ExpenseCalculator {
@Autowired
private TaxService taxService;
@Autowired
private EmployeeService employeeService;
@Autowired
@Lazy
private PurchaseService purchaseService;
}
这里PurchaseService
仅在调用使用purchaseService
的代码的任何部分时才被初始化(?)。
现在我必须将ExpenseCalculator
移动一个配置 class (它没有@Component
注释)
@Configuration
public class ExpenseConfig {
@Bean
@Lazy
public ExpenseCalculator getExpenseCalculator(
TaxService taxService,
EmployeeService employeeService,
PurchaseService purchaseService
) {
return new ExpenseCalculator(taxService, employeeService, purchaseService);
}
}
但是,当ExpenseCalculator
被初始化时, purchaseService
不再是@Lazy
组件, purchaseService
被初始化。
有什么方法可以使用configuration
来延迟初始化purchaseService
吗?
您必须在两个地方都使用 @Lazy 注释您的 PurchaseService - 创建它们的位置以及自动装配它们的时间。 请参阅https://www.baeldung.com/spring-lazy-annotation#2-with-autowired ,评论:“请注意,@Lazy 在这两个地方都是强制性的。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.