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);
    }
}