我有自動裝配彈簧自動裝配問題在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