我的主要课程如下:
package main;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import testbean.MySpringBeanWithDependency;
public class Main {
public static MySpringBeanWithDependency mySpringBeanWithDependency;
@Autowired
public void setTest(MySpringBeanWithDependency mySpringBeanWithDependency) {
Main.mySpringBeanWithDependency = mySpringBeanWithDependency;
}
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
mySpringBeanWithDependency.run();
}
}
我的AppConfig类如下:
package main;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import testbean.MySpringBeanWithDependency;
import writer.NiceWriter;
import writer.Writer;
@PropertySource("atm.properties")
@Configuration
public class AppConfig {
@Bean
public MySpringBeanWithDependency mySpringBeanWithDependency() {
return new MySpringBeanWithDependency();
}
@Bean
public Writer writer() {
return new Writer();
}
@Bean
public NiceWriter niceWriter() {
return new NiceWriter();
}
}
虽然我正在实例化名为mySpringBeanWithDependency的bean并将其分配给静态字段,但run()方法命令正在抛出NullPointerException。
我看到这个解决方法是在一些答案中注入静态字段,但我想这对我不起作用。有人可以指出我哪里出错了,我该怎么做?
答案 0 :(得分:1)
Main
不是bean,也不是实例化的。我确信可能有一种方法可以将bean注入到静态字段中,但是在需要时从应用程序上下文中获取bean会更有意义:
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
MySpringBeanWithDependency bean = context.getBean(MySpringBeanWithDependency.class);
bean.run();
}