Spring - использование applicationContext.xml и XXXXX-servlet.xml - PullRequest
2 голосов
/ 16 августа 2010

Я интегрирую Spring MVC в существующий проект, над которым я работаю.Под интеграцией я имею в виду, что я переписываю проект, используя Spring, и использую большую часть моего старого кода.Я уже настроил среду и начал работать над ней.Я буду называть этот проект ProjectX .

. Я уже настроил и настроил мой ProjectX-servlet.xml , который содержит компонент разрешения вида и контроллер.bean-компоненты и т. д. Я хочу создать файл applicationContext.xml , в который я могу поместить все свои bean-компоненты DAO, например ...

<bean id="MemberDAO" class="com.xxx.xxx.MemberDAO"/>
<bean id="ProductDAO" class="com.xxx.xxx.ProductDAO"/>

Я хочу эти значениянаходиться в applicationContext.xml , чтобы в моих контроллерах я мог сделать следующее.

public SomeController extends SimpleFormController{

   private MemberDAO memberDao;
   private ProductDAO productDao;

   ...getter/setter methods for memberDao;

   ...getter/setter methods for productDao;

и значения будут доступны (вводя их в контроллеры)

Я настроил контроллеры в ProjectX-servlet.xml , как показано в следующем определении.

<bean name="/SomeController.thm" class="com.xxx.xxx.controllers.SomeController">
      <property name="memberDao" ref="MemberDAO"/>
      <property name="productDao" ref="ProductDAO"/> 
</bean>

Я считаю, что мне нужно настроить что-то вроде следующего в моем web.xml , чтобы он знал, что нужно загрузить контекст приложения.

  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>

  <servlet>
   <servlet-name>context</servlet-name>
   <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>

Мой вопрос: что мне нужно сделать после создания файла applicationContext.xml, чтобы иметь возможностьделать то, что я показал выше, и вводить бины, такие как ProductDAO и MemberDAO в мои контроллеры, настроенные в ProjectX-servlet.xml

Я использую Spring MVC дляконтракт на пару месяцев, и я не боюсь его использовать, но я новичок в настройке его самостоятельно, для собственного использования, поэтому я был бы признателен, если бы какой-либо совет или ответы были объяснены немного легче для меня.

Спасибо

Ответы [ 3 ]

2 голосов
/ 16 августа 2010

По соглашению, имя, которое вы даете своему экземпляру DispatcherServlet, будет связано с {name}-servlet.xml. Этот контекст будет дочерним по отношению к applicationContext.xml, как вы описали, то есть он будет иметь доступ к bean-компонентам в applicationContext.xml.

Попробуйте в вашем web.xml следующее:

<servlet>
        <servlet-name>ProjectX</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
        <servlet-name>ProjectX</servlet-name>
        <url-pattern>/projectx/*</url-pattern>
</servlet-mapping>
1 голос
/ 16 августа 2010

Вам не нужно делать ничего особенного.Вы можете продолжить внедрение bean-компонентов, определенных в applicationcontext.xml, в bean-компоненты, определенные в xx-servlet.xml, как если бы все они были объявлены в одном файле.Не забудьте использовать атрибут ref вместо ref-local , как показано ниже.

<bean id="mycontroller" class="x.y.z.CustomerController>
   <property name="service" ref="myservice"/><!--myservice defined in applicationcontext-->
</bean>
1 голос
/ 16 августа 2010

Если не ошибаюсь, решение, которое вы ищете, заключается в использовании оператора import в вашем applicationContext.xml.Это эффективно объединяет два XML-файла в один контекст, позволяя вам ссылаться на bean-компоненты в любом из них:

Например:

<import resource="classpath:foo/bar/ProjectX-servlet.xml" />

Вы можете или не можете использовать «classpath».Подробнее см. в разделе 3.2.2.1 документа Spring .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...