以下是应用程序中错误为
的任何指针import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
@SpringBootApplication
public class SpringAutoWApplication {
public static void main(String[] args) {
SpringApplication.run(SpringAutoWApplication.class, args);
DestClass dc = new DestClass();
dc.showTestWired();
}
}
import org.springframework.beans.factory.annotation.Autowired;
@Component
public class DestClass {
@Autowired
private TestWired testWired;
public void showTestWired() {
System.out.println(testWired.getTestInt());
}
}
要自动装配的类
import org.springframework.stereotype.Component;
@Component
public class TestWired {
int testInt = 234;
public int getTestInt() {
return testInt;
}
public void setTestInt(int testInt) {
this.testInt = testInt;
}
}
错误:
线程" main"中的例外情况显示java.lang.NullPointerException
在DestClass.showTestWired(DestClass.java:13)
我试图调用print的行,int返回空指针异常
答案:经过几个小时的回顾这是它的工作方式,因为我无法发布我的答案我在这里做了
public class SpringAutoWApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringAutoWApplication.class, args);
DestClass dc = context.getBean(DestClass.class);
dc.showTestWired();
}
}
答案 0 :(得分:1)
Autowire仅适用于spring bean。
你的DestClass
不是豆子。因此没有自动发生,@ Autowire没有效果。
将DestClass
标记为@Component
即可:
@Component
public class DestClass {
此外,您初始化自己的实例,而不是从spring bean获取,因此您的测试bean为null:
DestClass dc = new DestClass();
而是在DestClass
课程中自动装配SpringAutoWApplication
。
@Autowired
DestClass dc;
最后它可以测试如下:
@SpringBootApplication
public class SpringAutoWApplication {
@Bean
String test(DestClass dc) {
dc.showTestWired();
return "work";
}
public static void main(String[] args) {
SpringApplication.run(SpringAutoWApplication.class, args);
}
}