我仍然不知道为什么我要获得NPE
foo.setName("FOOD")
这是我要运行并面对问题的代码。
@SpringBootApplication
public class Application {
@Autowired
private static Foo foo;
public static void main(String[] args) throws Throwable {
SpringApplication.run(Application.class, args);
foo.setName("FOOD");
}
}
@Component
class Foo {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
两个Foo and Application
类都在同一包中。我让它工作的唯一方法是应用Java配置。因此,而不是
@Autowired
private static Foo foo;
我使用
创建了实例@Bean
private static Foo getFoo(){
return new Foo();
}
我试图将@Componentscan添加到配置类中,但是没有用。任何想法?谢谢!
答案 0 :(得分:0)
问好,分享我的答案也很好。如果有人遇到同样的困惑,这可能会有所帮助。我错过的是需要在Application
类的构造函数中注入bean。
按如下所示修改代码不会导致空指针异常。
@SpringBootApplication
public class Application {
private static Foo foo;
@Autowired
public Application(Foo foo) {
this.foo = foo;
}
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
public static void main(String[] args) throws Throwable {
SpringApplication.run(Application.class, args);
foo.setName("FOOD");
System.out.println(foo.getName()); //FOOD ... console out put
}
}
@Component
class Foo {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}