Компоненты с автопроводкой не обрабатываются в моем компоненте Controller (Spring-MVC) - PullRequest
1 голос
/ 06 сентября 2010

Я создаю компонент Controller для сопоставления выделенного URI.

web.xml file:

    <!-- Spring MVC Servlet (that will route HTTP requests to BlazeDS) -->
 <servlet>
  <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/spring-main-config.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <!-- We are only using BlazeDS AMF channels to communicate with FlexClient, so let's map URLs accordingly. -->
 <servlet-mapping>
  <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
  <url-pattern>/messagebroker/*</url-pattern>        
 </servlet-mapping>   

        <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-filter-config.xml</param-value>
        </context-param>

        <listener>
               <listener-class>
                org.springframework.web.context.ContextLoaderListener
               </listener-class>
        </listener>

spring-main-config.xml file:

 <!-- Import configuration base -->
 <import resource="spring-base-config.xml"/>  

 <!-- Flex integration within Spring. -->
 <flex:message-broker services-config-path="/WEB-INF/flex-services-config.xml">
  <flex:remoting-service />
 </flex:message-broker>

 <!-- Session-scoped bean for User Info -->
 <bean class="com.sharehunter.businessservices.common.UserSessionInfo" scope="session">
  <aop:scoped-proxy proxy-target-class="false"/>
 </bean>    

spring-filter-config.xml file:

    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
   <value>
   /fbauth=myController
   </value>
  </property>
 </bean>

 <bean id="myController" 
  class="myapp.controller.myController" />

Мой файл контроллера бинов:

package myapp.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

    public class MyController extends AbstractController{

    @Autowired
    UserSesson userSession;

    @Autowired
    BusinessLogger logger;

 @Override
 protected ModelAndView handleRequestInternal(HttpServletRequest request,
   HttpServletResponse response) throws Exception {

  // TO DO - Facebook authentication
  return null;
 }
 }

Моя проблема: все мои компоненты Autowired в компоненте Controller уже равны нулю.Я не понимаю, где проблема в моей конфигурации ...

Большое спасибо за вашу помощь!

Энтони

Ответы [ 2 ]

2 голосов
/ 06 сентября 2010

Вы определили два разных contextx (spring-filter-config.xml и spring-main-config.xml), но, вероятно, у вас должен быть только один. <context:annotation-driven/> определяется только в spring-main-config.xml, а не в spring-filter-config.xml, поэтому любые bean-компоненты, определенные в spring-filter-config.xml, не будут автоматически подключаться.

Ваши контроллеры определены в spring-filter-config.xml, но предполагается, что контроллеры связаны с ServiceDispatcherServlet. Вам нужно переместить содержимое spring-filter-config.xml в spring-main-config.xml, а затем удалить ContextLoaderListener - кажется, вы не используете его должным образом.

0 голосов
/ 09 ноября 2011

где ваше отображение бина ??

упоминание в файле xml, тогда @Autowired определяет по умолчанию, какой класс бина должен называться ...

...