Я заменяю мои контроллеры отдыха Джерси на Spring 4 MVC.Поэтому я преобразовал все контроллеры в пружинный mvc RestController.Проблема в том, что я не могу заставить работать контроллеры.Это мой контроллер:
@RestController @RequestMapping("/person") public class PersonController { // .... // // Spring xml injections private PersonService personService; public void setPersonService(PersonService personService) { this.personService = personService; } }
Боб настроен с конфигурацией xml -> person-beans.xml:
<bean id="personController" class="de.some.package.PersonController"> <property name="personService" ref="personService"/> </bean>
И полное приложение собирается вместе в файле с именемbeans.xml -> beans.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <import resource="classpath:spring/person-beans.xml"/> <!-- and some more.. --> </beans>
Это мой web.xml:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/spring/beans.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>RESTServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>RESTServlet</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping>
Я думаю, мне нужно добавить:
<context:component-scan base-package="de.some.package" /> <mvc:annotation-driven />
Чтобы эта аннотация @RestController работала, но инъекции в мой класс PersonController равны нулю (так что здесь personService).
Есть ли способ использовать конфигурацию пружины из beans.xml вместе с аннотацией @RestController?
Как вы сказали, если вы добавите <mvc:annotation-driven /> в ваш файл beans.xml, вы сможете иметь как аннотации, так и конфигурационные файлы Spring xml
<mvc:annotation-driven />
beans.xml