A.3. dispatcher-spring.xml
The files of this type define configuration of an additional Spring Framework container for client blocks containing Spring MVC controllers.
The additional container for controllers is created with the main container (configured by spring.xml files) as its parent. Therefore, the beans of the controllers container can use the beans of the main container, while the beans of the main container cannot "see" the beans of the controllers container.
The dispatcher-spring.xml
file of the project is specified in the cuba.dispatcherSpringContextConfig application property.
The platform web and portal modules already contain such configuration files: cuba-dispatcher-spring.xml
and cuba-portal-dispatcher-spring.xml
respectively.
If you have created Spring MVC controllers in your project (for example, in the web module), add the following configuration:
-
Assuming that your controllers are located inside the
com.company.sample.web.controller
package, create themodules/web/src/com/company/sample/web/dispatcher-config.xml
file with the following content:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <context:annotation-config/> <context:component-scan base-package="com.company.sample.web.controller"/> </beans>
-
Include the file into the cuba.dispatcherSpringContextConfig application property in the
web-app.properties
file:cuba.dispatcherSpringContextConfig = +com/company/sample/web/dispatcher-config.xml
Controllers defined in the web module will be available on addresses starting with the URL of the dispatcher
servlet, which is /dispatch
by default. For example:
http://localhost:8080/app/dispatch/my-controller-endpoint
Controllers defined in the portal module will be available in the root context of the web application. For example:
http://localhost:8080/app-portal/my-controller-endpoint