Jersey @InjectParam creates a new object instead of taking from Spring

I have a Jersey based application using Spring I use @InjectParam in the hope (and what is written in the documentation) that Jersey will get the object from the Spring container, but it seems that Jersey is creating the object instead of the Spring request for this.

Is there a way to check if IOC Spring is registered in Jersey?

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:appContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <servlet> <servlet-name>SpringDispatcher</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringDispatcher</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> 

My class provides basic factory access, but factory is new

 public FileStoreService(@InjectParam("dataAccessFactory") factory ) { this.factory = factory; } 

and I added @Component and still nothing.

+1
source share
1 answer

The wrong servlet is being used. It should be

 <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 

The current one uses its own Jersey container, which will only create objects using the default constructor. The Spring Servlet allows Jersey to join the Spring container.

+1
source

Source: https://habr.com/ru/post/1438956/


All Articles