gpt4 book ai didi

java - 如何同时创建具有 Autowiring 和非 Autowiring 字段的构造函数?

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:42 29 4
gpt4 key购买 nike

我有一个可以执行某些操作的系统。该系统使用以下方法为每个对象创建一个单独的线程:

stp.scheduleWithFixedDelay((EditSite) ctx.getBean("EditSite", site), threadTimeParams);

我想创建一个带有“Site”参数的构造函数,但我应该以某种方式保持我的 Autowiring 构造函数的工作。

public class EditSite{
private final A a;
private final B b;
private final C c;

private Site site;

public EditSite(@Autowired A a, @Autowired B b,@Autowired C c) {
this.a = a;
this.b = b;
this.c = c;
}

public void run(){ check(); }
public void check(){}
}

我的 IDE 说我无法创建 public EditSite(Site site, @Autowired A a, @Autowired B b,@Autowired C c)。以前也有过字段注解,但是最近看到一篇文章说字段注解不好,决定重构一下我的代码。我该怎么做?

最佳答案

您需要在配置中显式创建您的 bean。您不需要在类中进行任何 Autowiring :

public class EditSite{
private final A a;
private final B b;
private final C c;

private Site site;

public EditSite(Site site, A a, B b , C c) {
this.site=site;
this.a = a;
this.b = b;
this.c = c;
}

public void run(){ check(); }
public void check(){}
}

以及配置:

@Configuration
public class EditSiteConfig {

@Bean
public EditSite editSite(A a, B b, C c){
Site site = getSite(); //since site is not a bean, you need to get it manually
return new EditSite(site, a, b, c);
}

}

关于java - 如何同时创建具有 Autowiring 和非 Autowiring 字段的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56770981/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com