Java 使用构造函数配置中的Spring惰性初始化
我有一个组件Java 使用构造函数配置中的Spring惰性初始化,java,spring,lazy-initialization,Java,Spring,Lazy Initialization,我有一个组件 @Component public class ExpenseCalculator { @Autowired private TaxService taxService; @Autowired private EmployeeService employeeService; @Autowired @Lazy private PurchaseService purchaseService; } 此处,仅当调用使用Purch
@Component
public class ExpenseCalculator {
@Autowired
private TaxService taxService;
@Autowired
private EmployeeService employeeService;
@Autowired
@Lazy
private PurchaseService purchaseService;
}
此处,仅当调用使用PurchaseService
的任何代码部分时,PurchaseService
才会初始化(?。现在我必须移动
expenseculator
一个配置类(它没有@Component
注释)
但是purchaseService
不再是一个@Lazy
组件当expensecculator
被初始化时,purchaseService
被初始化
是否有任何方法可以使用
配置对purchaseService
进行延迟初始化?您必须在两个位置用@lazy注释您的purchaseService,即您创建它们的位置和自动连接它们的位置。请参阅,注释:“请注意,@Lazy在这两个位置都是必需的。”您必须在两个位置用@Lazy注释您的PurchaseService,即创建它们的位置和自动关联它们的时间。请参阅,注释:“注意,@Lazy在这两个位置都是必需的。”用@Lazy
而不是@Bean
方法注释配置中的方法参数。用@Lazy
而不是@Bean
方法注释配置中的方法参数。
@Configuration
public class ExpenseConfig {
@Bean
@Lazy
public ExpenseCalculator getExpenseCalculator(
TaxService taxService,
EmployeeService employeeService,
PurchaseService purchaseService
) {
return new ExpenseCalculator(taxService, employeeService, purchaseService);
}
}