如何在列表中初始化具有构造函数的@Autowired对象

时间:2017-12-19 12:05:57

标签: java spring autowired

我有一个@Service类,可以通过Web请求调用。

它有一个构造函数,用于初始化已实现类型的对象列表

    public void rescale() {
    dx = (1/(Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2)))) * dx;

    dy = (1/(Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2)))) * dy;
}

除非列表中的某个项目具有构造函数,否则它将按预期工作。

private List<Interface> interfaceServices;

@Autowired
public ValidateInterfaceService(List<Interface> interfaceServices) {
    this.interfaceServices = interfaceServices;
}

如果我尝试在列表中使用此类,则代码无法运行为“未找到默认构造函数”

如果方法需要传递给构造函数的值,如何正确初始化此列表?

1 个答案:

答案 0 :(得分:0)

您的问题是由private LocalDate busDate不是上下文中的bean引起的。您可以像这样创建一个注入LocalDate:

@Configuration 
public class FooConfiguration {

    @Bean
    public LocalDate busDate() {
        return ...
    }

}

注意这看起来很奇怪,你最好以不同的方式初始化这个日期,具体取决于你的用例,e.q。使用@Value