gpt4 book ai didi

java - @Autowired 对象中的 Spring 空指针异常

转载 作者:行者123 更新时间:2023-12-02 02:23:56 25 4
gpt4 key购买 nike

你好,我是 Spring 依赖注入(inject)方面的新手。
我制作了一些配置文件,其中包含 bean,并且我使用 @Autowired 注释注入(inject)这些 bean。

配置:

@Configuration
@Component
public class FirstConfig {

@Bean
A getA() {
return new A(secondConfig.getB());
}

@Autowired
SecondConfig secondConfig;

}

第二个配置

@Configuration
public class SecondConfig {
@Bean
B getB() {
return new B();
}
}

最后的配置

@Configuration
public class ThirdConfig {

@Bean
D getD() {
return new D();
}
}

这是使用 A() 的服务

@Component
public class XYZService
{
private C c;

@Autowired
private A a;

public XYZService()
{
this.c = a.doSomething("Hello world");
}
}

此外,如果这有帮助,

@Component
public class B implements someInteface
{
@Autowired
private D d;
}

我在这一行收到 NPE:this.c = a.doSomething("Hello world");

知道出了什么问题吗?

最佳答案

您不能在类构造函数中使用 Autowiring 属性,因为 Spring 只是在创建该类后注入(inject) @Autowired 属性。但是,您可以在带有注释 @PostConstruct 的方法中使用 Autowiring 属性,该属性将在构造函数运行后立即运行。

@Component
public class XYZService
{
private C c;

@Autowired
private A a;

public XYZService()
{
// Move the initialization to @PostConstruct
}

@PostConstruct
private void init() {
this.c = a.doSomething("Hello world");
}
}

关于java - @Autowired 对象中的 Spring 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48070202/

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