[英]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.