tutorial que mvc example español java spring spring-mvc

java - example - spring mvc que es



¿Cómo configurar Spring MVC con una configuración pura basada en Java? (1)

Tengo, lo que consideraría una configuración bastante simple de Spring MVC. Mi applicationContext.xml es este:

<mvc:annotation-driven /> <mvc:resources mapping="/css/**" location="/css/" /> <context:property-placeholder location="classpath:controller-test.properties" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/views/" p:suffix=".jsp" />

Mi web.xml es actualmente este:

<servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

Estoy tratando de convertir esta configuración a pura configuración basada en Java. He buscado en la web y, hasta ahora, he encontrado cosas que explican (cómo) cómo hacer la configuración de Java pero no explica cómo registrar esa configuración de Java con el entorno, es decir, el contexto web.

Lo que tengo hasta ahora en términos de @Configuration es esto:

@Configuration @EnableWebMvc @PropertySource("classpath:controller.properties") @ComponentScan("com.project.web") public class WebSpringConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/css/**").addResourceLocations("/css/"); } @Bean public ViewResolver configureViewResolver() { InternalResourceViewResolver viewResolve = new InternalResourceViewResolver(); viewResolve.setPrefix("/WEB-INF/views/"); viewResolve.setSuffix(".jsp"); return viewResolve; } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){ configurer.enable(); } }

¿Cómo registro esto con el contenedor web? Estoy usando la última primavera (4.02).

¡Gracias!


Debe realizar los siguientes cambios en web.xml para admitir la configuración basada en Java. Esto le indicará al DispatcherServlet que cargue la configuración usando la configuración java basada en la AnnotationConfigWebApplicationContext . solo necesita pasar la ubicación de su archivo contextConfigLocation a contextConfigLocation param. como a continuación

<servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextClass</param-name> <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> </init-param> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/*path to your WebSpringConfig*/ </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>

Actualización: hacer lo mismo sin realizar cambios en web.xml

Incluso puede hacerlo sin web.xml ya que Servlet Specification 3.0 hace que web.xml opcional. Solo necesita implementar / configurar la interfaz WebApplicationInitializer para configurar el ServletContext que le permitirá crear, configurar, registrar y configurar el DispatcherServlet programación. Lo bueno es que WebApplicationInitializer se detecta automáticamente.

El resumen es la necesidad de implementar WebApplicationInitializer para deshacerse de web.xml .

public class MyWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { // Create the ''root'' Spring application context AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); rootContext.register(WebSpringConfig.class); // Manage the lifecycle of the root application context container.addListener(new ContextLoaderListener(rootContext)); // Create the dispatcher servlet''s Spring application context AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext(); dispatcherContext.register(DispatcherConfig.class); // Register and map the dispatcher servlet ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherContext)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } }

Actualización : de los comentarios
Una explicación un poco más enrevesada también se incluye en la referencia oficial de Spring ahora Spring 4 Release Reference:

http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/web/WebApplicationInitializer.html