spring配置文件[servlet-name]-servlet.xml

注解式控制器简介:

在spring2.5之前都是通过实现controller接口或其实现来定义处理器类。

spring2.5开始支持通过注解@controller和@requestmapping来定义处理器类,DefaultAnnotationHandlerMapping、AnnotationMethodHandlerAdapter为@controller和@requestmapping提供支持。

spring3.0引入restful架构风格支持,引入了更多的注解。

spring3.1使用新的HandlerMapping和HandlerAdapter来支持@controller、@requestmapping注解处理器类,requesthandlermappingadapter和requesthandlermapping。

spring中的[servletname]-servlet.xml配置文件分为三步:

1.配置扫描包

<context:component-scan base-package="com.tgb.web.controller.annotation"> </context:component-scan>

  当spring启动的时候会自动扫描包下面含有@Component @Controller@Service等这些注解的类并把它们注册为bean。也可以用传统方式直接在容器中为控制器注册,见例子。

注意:如果配置了<context:component-scan>那么<context:annotation-config/>标签就可以不用再xml中配置了,因为前者包含了后者。另外<context:annotation-config/>还提供了两个子标签如下,具体功能在此不介绍。

     1).    <context:include-filter>

     2.)    <context:exclude-filter>

  且必须要在文件头声明context如下:

xmlns:context="http://www.springframework.org/schema/context"

  使用<context:annotation- config/>隐式地向 Spring容器注册AutowiredAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor以及PersistenceAnnotationBeanPostProcessor这4个BeanPostProcessor使得系统能够识别@Autowired、@ Resource 、@ PostConstruct、@ PreDestroy等注解。传统的注册方式如下(比较繁琐):

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor "/>

 

2.配置处理器映射和处理器适配器

    <!--Spring3.1开始的注解 HandlerMapping -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> 
    
    <!--Spring3.1开始的注解 HandlerAdapter -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <!--线程安全的访问session-->
        <property name="synchronizeOnSession" value="true"/>
    </bean> 

  为@controller和@requestmapping提供支持(开启该注解支持)。

3.配置视图解析器

    <!-- ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

  加上前/后缀解析视图。


 

 

一份配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:p="http://www.springframework.org/schema/p"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context.xsd
  http://www.springframework.org/schema/mvc
  http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:component-scan base-package="com.tgb.web.controller.annotation">
    </context:component-scan>

    <!--Spring3.1开始的注解 HandlerMapping -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> 
    
    <!--Spring3.1开始的注解 HandlerAdapter -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <!--线程安全的访问session-->
        <property name="synchronizeOnSession" value="true"/>
    </bean> 
       
    <!-- ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

<!--引用静态资源-->
  <mvc:resources location="/img/" mapping="/img/**" />

  <!-- 处理器配置,也可以在此处注册控制器(其实扫描包时已经注册到容器中)-->

  <bean class="com.javass.mvc.web.controller.SuccessController"/>

  <bean class="com.javass.mvc.web.controller.FinshController"/>

</beans> 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。