【发布时间】:2020-06-22 06:39:37
【问题描述】:
我有一个组件
@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);
}
}
但是,当 ExpenseCalculator 被初始化时,purchaseService 不再是 @Lazy 组件,purchaseService 被初始化。
有什么方法可以使用configuration 对purchaseService 进行延迟初始化?
【问题讨论】:
-
用
@Lazy而不是@Bean方法注释配置中的方法参数。
标签: java spring lazy-initialization