我有一个组件
@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
?
1条答案
按热度按时间k97glaaz1#
您必须在两个位置使用
@Lazy
注解PurchaseService
-创建它们的位置和自动连接它们的位置。参见A Quick Guide to the Spring @Lazy Annotation帖子,在2.2中。@Autowired部分存在注解: