【发布时间】:2019-07-31 18:56:36
【问题描述】:
请查看以下代码,我正在尝试学习@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());
}
但我得到空指针异常:
线程“main”中的异常 java.lang.NullPointerException at com.example.first.mySimpleSpringApp.DependencyInjectionExample.printHigh(DependencyInjectionExample.java:13) 在 com.example.first.mySimpleSpringApp.GoodNightServiceImpl.main(GoodNightServiceImpl.java:9)
【问题讨论】:
-
您需要启动 Spring 应用程序以便注入您的依赖项,例如
SpringApplication.run(Application.class, args); -
为了让 Spring 连接你的 bean,你需要让 Spring 初始化 bean。这可以通过programmatically 或通过将
DependencyInjectionExample连接到另一个bean 来完成。 -
我已经试过了,还是一样的问题。我什至尝试过@Controller 注解。
-
还要保证Spring应用可以组件扫描包。
-
@joy 如果你这样做了,那你就做错了。如果您希望 Spring 为您连接 bean,您不能自己实例化实例(即使用
new)。