因为spring容器是对框架容器内的对像注解相互作用,所以如果该类既不是@controller或者也不是@component,直接调用service注解常会报nullException
javaWeb中前期都用的HttpServlet,所以踩了各种坑才搞好了调用@service.
就是在servlet实现类中写一个初始化操作:
public void init() throws ServletException {
super.init();
WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
AutowireCapableBeanFactory factory = wac.getAutowireCapableBeanFactory();
factory.autowireBean(this);
}
在类中加入上述方法,然后doGet()或doPost()时,第一步先调用该初始化方法即可。或者你也可以先一个继承HttpServlet类实现init()方法,再让后面的servlet类继承该类也行。
注意:该serlvet类在我这里实际上就是controller的作用,只是之前的项目修改没有用ssm去做。现在加了这个后就可以用注解了。当然还有配置文件,对applicationContext.xml的配置,以及mapper文件的定位。还有数据库dataSource等。dao下是用的”bean”节点设置的.