我有一个现有的Spring应用程序,我自己的上下文被引导 来自几十个Spring xml文件。 Grizzly Web服务器开始发布Soap服务。
现在我也想从同一个Grizzly那里提供休息请求。 我使用的是jersey-spring3,但它启动了自己独立的应用程序上下文 的applicationContext.xml。
这是创建Grizzly HttpServer的代码,其中包含Rest和Soap Web服务 已注册:
//rest services
ResourceConfig resourceConfig = new ResourceConfig(
RestService1.class, //these are
RestService2.class //jersey-spring services
);
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create("http://localhost:8080/rest"), resourceConfig, false);
//soap services
HttpHandler httpHandler = new JaxwsHandler(mySoapWebService, false);
httpServer.getServerConfiguration().addHttpHandler(httpHandler, myPath);
httpServer.start();
My Rest服务(由第二个Spring上下文创建)具有来自第一个应用程序上下文的注入依赖项。 这些注射显然不起作用。 Curreetly我自己用一些hacky代码手动注入它们。
在现有应用程序中为Rest请求处理注入Spring服务的正确方法是什么,其中 球衣重新利用现有的背景?
答案 0 :(得分:3)
在GitHub上查看Jersey项目的helloworld-spring-annotations。您只需要在Jersey应用程序中set the "contextConfig"
property,其值为Spring的实例ApplicationContext
resourceConfig.property("contextConfig",
new AnnotationConfigApplicationContext(SpringAnnotationConfig.class));
然后你应该能够将你的Spring组件@Autowired
放入Jersey组件中。
另见: