请参见以下代码,我正在尝试学习@Autowire属性,因此请尝试以下示例。 但是我收到了空指针异常。
@Component
class GoodNightService {
public String SayGoodNight() {
return "Good night";
}
}
public class DependencyInjectionExample {
@Autowired
GoodNightService goodnightservice;
public String printHigh()
{
return goodnightservice.SayGoodNight();
}
}
您可以看到我已经创建了一个组件,因此可以使用它创建bean。 我正在尝试通过@Autowired属性使用依赖项注入原理。 因此,创建了一个“ DependencyInjectionExample”类并自动连接了服务。
我创建了以下主要功能来获取示例类的对象。
public static void main(String[] args) {
DependencyInjectionExample dependencyexample = new DependencyInjectionExample();
System.out.println(dependencyexample.printHigh());
}
但是我得到了nullpointer异常:
线程“ main”中的异常java.lang.NullPointerException在 com.example.first.mySimpleSpringApp.DependencyInjectionExample.printHigh(DependencyInjectionExample.java:13) 在 com.example.first.mySimpleSpringApp.GoodNightServiceImpl.main(GoodNightServiceImpl.java:9)
答案 0 :(得分:2)
首先,您不调用负责注册bean的应用程序上下文:
SpringApplication.run(MainClass.class, args);
第二,您手动创建DependencyInjectionExample。
它永远不会以这种方式工作。 如果您想做类似的事情,则需要这样编码:
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(MainClass.class, args);
DependencyInjectionExample dependencyexample = context.getBean(DependencyInjectionExample.class);
System.out.println(dependencyexample.printHigh());
}