我有一个控制器(例如.MyManager),我调用组件类(bean)的方法(例如myMethod()),例如MyComponent。我有servlet,我想调用myMethod()。在servlet中,我通过@Autowired
注释注释了MyManager,尽管我得到了NullPointerException。我看到了这种话题,但它对我没用。为了想象,我写了很少的代码:
public class myClass extends HttpServlet {
@Autowired
private MyComponent component;
public void init(ServletConfig config) throws ServletException{
super.init(config);
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
protected void doGet(HttpServletRequest req,HttpServletResponse res) throws ... {
List<MyObject> objects =component.myMethod(); // Here is the problem, component is null
}
}
}
我将Spring配置文件设置为“context.xml”并且我获得了bean(组件)对象,但是现在我在bean对象中注入了EntityManager有问题。现在它是null,任何人都可以帮我解决这个问题吗?还要更新init()方法。
public void init(ServletConfig config) throws ServletException{
ApplicationContext con = new ClassPathXmlApplicationContext("context.xml");
component = (MyComponent) con.getBean("myBean");
}
答案 0 :(得分:6)
你不能自动装配那样的依赖,因为Servlet不是Spring Beans。您需要执行以下操作:
@Override
public void init() throws ServletException {
super.init();
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
component= applicationContext.getBean(MyComponent.class);
}
同时从@Autowired
component
注释