gpt4 book ai didi

java - Spring在抽象类构造函数中 Autowiring

转载 作者:行者123 更新时间:2023-12-02 08:29:40 32 4
gpt4 key购买 nike

我有一个场景,当在抽象类的构造函数中调用时,autowired 为 null,如下所示:

public abstract class AbstractClass{
@Autowired
@Qualifier("proId")
protected Prop prop;

public AbstractClass(){
prop.getName();

上面在部署时抛出 NullException。

但是当实例化后调用 Autowiring 属性时,以下内容有效

public abstract class AbstractClass{
@Autowired
@Qualifier("proId")
protected Prop prop;

public void Init(){
prop.getName();
}
}


public class DefaultClass extends AbstractClass(){
...

@autowired
DefaultClass dc ;
...

dc.Init();

如何让第一个案例发挥作用?

最佳答案

你不能。注入(inject)只能在创建对象之后发生(或在使用构造函数注入(inject)进行构造期间)。换句话说,当在抽象类构造函数中调用 prop.getName() 时,该字段仍为 null,因为 Spring 尚未处理它。

考虑重构您的代码,以便您的抽象类具有接受 Prop 参数并使用构造函数注入(inject)的构造函数

public AbstractClass(Prop prop) {
this.prop = prop;
prop.getName();
}
...
@Autowired
public DefaultClass(Prop prop) {
super(prop);
}

关于java - Spring在抽象类构造函数中 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21978514/

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