Spring在独立应用程序中工作。你使用错误的方式来创建Spring bean。这样做的正确方法是:
@Component
public class Main {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("Meta-INF/config.xml");
Main p = context.getBean(Main.class);
p.start(args);
}
@Autowired
private MyBean myBean;
private void start(String[] args) {
System.out.println("my beans method: " + myBean.getstr());
}
}
@Service
public class MyBean {
public String getstr() {
return "string";
}
}
在第一种情况下(问题中的那个),你将自己创建对象,而不是从Spring上下文中获取它。因此,Spring没有机会获得Autowire
依赖关系(这会导致NullPointerException
)。
在第二种情况(此答案中的一种)中,你是从Spring上下文中获取bean的,因此它是Spring托管的,而Spring负责autowiring
。