我有自动装配弹簧自动装配问题在Servlet
首先有些问题我创建一个嵌入式服务器
Main.java
Server server = new Server(8080);
CXFNonSpringServlet cxf = new CXFNonSpringJaxrsServlet();
ServletHolder servlet = new ServletHolder(cxf);
servlet.setInitParameter("javax.ws.rs.Application", "com.asd.dispatcher.rest.testApplication");
servlet.setName("services");
servlet.setForcedPath("services");
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/hello");
server.setHandler(context);
context.addServlet(servlet, "/*");
server.start();
testApplication.java
public class testApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(testServlet.class);
return classes;
}
}
testServlet.java
@Path("/people")
@Component
@Scope("prototype")
public class testServlet {
@Autowired
private StatsService statsService;
@Produces({ "application/json" })
@GET
public String getPeople(@QueryParam("page") @DefaultValue("1") final int page) {
System.out.println("======= getPeople");
//statsService.printStats();
return "Hello World";
}
}
现在我的问题是,我的statsService没有被自动装配在testServlet.java,但我可以自动装配成与@Service注解另一个类,
是因为我的这种使用CXFNonSpringServlet? 还是因为我尝试Autowire的方式?
是的,这正是我在我的XML配置文件,我也尝试注释我的服务,因为你建议(事实上,我的服务甚至定义为我的XML中的bean),但它仍然没有区别 – Daxxy
好吧,但你如何检测到自动装置没有影响?当你使用变量'myservice'时你有一个空指针异常吗? – daniele
如果您在客户端添加以下代码,会发生什么情况? 'BeanFactory factory = new XmlBeanFactory(new ClassPathResource(“application-context.xml”)); MyService myservice =(MyService)factory.getBean(“myservice”);' – daniele