一、<context:annotation-config> 和 <context:component-scan>

<context:annotation-config>的作用:将已经在spring容器中注册的bean激活。实际含义是,使注解能使用已经在spring容器中注册的过的bean,不论是通过xml配置和通过包扫描注册的bean,都包含在内。

<context:component-scan>的作用:在<context:annotation-config>的基础上,可以扫描指定包,将包含注解的类注册到spring容器中。如:<context:component-scan base-package="ki"/>。

二、<mvc:annotation-driven>

<mvc:annotation-driven>会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean,这是Spring MVC为@Controller分发请求所必需的,并且提供了数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持读写XML的支持(JAXB)和读写JSON的支持(默认Jackson)等功能。

我们找到对应的实现类是:

org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser.
通过阅读类注释文档,我们发现这个类主要是用来向工厂中注册了

  1. RequestMappingHandlerMapping
  2. BeanNameUrlHandlerMapping
  3. RequestMappingHandlerAdapter
  4. HttpRequestHandlerAdapter
  5. SimpleControllerHandlerAdapter
  6. ExceptionHandlerExceptionResolver
  7. ResponseStatusExceptionResolver
  8. DefaultHandlerExceptionResolver

上面几个Bean实例.这几个类都是用来做什么的呢?

前两个是HandlerMapping接口的实现类,用来处理请求映射的.

  • 其中第一个是处理@RequestMapping注解的.
  • 第二个会将controller类的名字映射为请求url.

中间三个是用来处理请求的.具体点说就是确定调用哪个controller的哪个方法来处理当前请求.

  • 第一个处理@Controller注解的处理器,支持自定义方法参数和返回值(很酷).
  • 第二个是处理继承HttpRequestHandler的处理器.
  • 第三个处理继承自Controller接口的处理器.

后面三个是用来处理异常的解析器.

另外还将提供以下支持:
① 支持使用ConversionService实例对表单参数进行类型转换; 
② 支持使用@NumberFormatannotation,@DateTimeFormat注解完成数据类型的格式化; 
③ 支持使用@Valid注解对Java bean实例进行JSR 303验证; 
④ 支持使用@RequestBody和@ResponseBody注解

三、<mvc:default-servlet-handler />和<mvc:resources />

这两个注解都是用来处理静态资源的,其实不使用它们也可以访问静态资源,那么使用这两个注解的意义是什么。

这其实是书写规范的问题,其强调HTTP应当以资源为中心,并且规范了URI的风格,这种书写规范不希望待.html或.do等后缀,但是早期的Spring MVC不能很好的处理静态资源,所以在请求映射里,不会使用/,而通常使用*.do等的方式。

所以为了,规范,为了使用/的请求映射,新加了这两个功能。

当使用*.do的后缀时,spring在找不到相应的映射处理时,会按照请求路径查找静态资源路径。但是,在使用/的映射处理时,spring容器会将所有的请求当成映射路径,不回去查找资源文件,处理这种情况,就用到了这两个注解。

1、<mvc:default-servlet-handler />

在springMVC-servlet.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。

一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web应用服务器的默认Servlet名称不是"default",则需要通过default-servlet-name属性显示指定:

<mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" />

2、<mvc:resources />

<mvc:default-servlet-handler />将静态资源的处理经由Spring MVC框架交回Web应用服务器处理。而<mvc:resources />更进一步,由Spring MVC框架自己处理静态资源,并添加一些有用的附加值功能。

<mvc:resources />通过location和mapping参数,可以访问项目中的任何一处静态资源。

<mvc:resources location="/,/css/,/WEB-INF/classes/,/WEB-INF/classes/,classpath:/" mapping="/resources/**/"/>

location属性:项目内的文件路径(部署后的路径),其中classpath:/等同于/WEB-INF/classes/。

mapping属性:将项目内的实际路径,映射到的一个虚拟的用于请求静态资源的路径。

注意:每个location路径只能报该文件夹下的资源文件映射到mapping,如:/只能映射项目根目录下的资源文件,而不能映射跟目录下的css文件夹下的目录,必须新加一个/css/的配置。

配置完成后,当要请求静态资源路径时:

例如 ,在跟目录径下的css文件夹下有个style.css,那么请求路径就是:http://localhost:8080/ssm-login/resources/style.css

即使是WEB-INF下的文件,也可以得到,WEB-INF下的login.jsp的请求路径:http://localhost:8080/ssm-login/resources/login.jsp

 四、 <tx:annotation-driven transaction-manager="" />

含义为:支持使用注解来进行实物管理,并指定一个事务管理器。

  1. <util:properties id="cfg" location="classpath:config.properties"/>
  2. <!--配置DruidDataSource连接池 -->
  3. <bean id="ds" class="com.alibaba.druid.pool.DruidDataSource"
  4. destroy-method="close" init-method="init" lazy-init="true">
  5. <property name="driverClassName" value="#{cfg.driver}" />
  6. <property name="url" value="#{cfg.url}" />
  7. <property name="username" value="#{cfg.username}" />
  8. <property name="password" value="#{cfg.password}" />
  9. <!-- 初始化连接大小 -->
  10. <property name="initialSize" value="#{cfg.initialSize}" />
  11. <!-- 连接池最大数量 -->
  12. <property name="maxActive" value="#{cfg.maxActive}" />
  13. <!-- 连接池最小空闲 -->
  14. <property name="minIdle" value="#{cfg.minIdle}" />
  15. <!-- 获取连接最大等待时间 -->
  16. <property name="maxWait" value="#{cfg.maxWait}" />
  17. </bean>
  18.  
  19. <!-- 事务管理器 -->
  20. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  21. <property name="dataSource" ref="ds" />
  22. </bean>
  23. <!-- 支持使用注解来进行事务管理 -->
  24. <tx:annotation-driven transaction-manager="transactionManager" />

spring注解的相关配置的更多相关文章

  1. 转-spring boot web相关配置

    spring boot web相关配置 80436 spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何w ...

  2. spring boot web相关配置

    spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何web相关的配置便能提供web服务,这还得归于spri ...

  3. 【转】spring boot web相关配置

    spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何web相关的配置便能提供web服务,这还得归于spri ...

  4. Spring注解(赋值相关)

    上面是与生命周期有关的内容,下面是属性赋值相关的: @Configuration public class ProperTyValueConfig { @Bean public Person pers ...

  5. Spring Data Solr相关配置

    1.增加Maven POM文件的存储库:pom配置如下: <repositories> <repository> <id>spring-milestone</ ...

  6. Spring Boot SSL [https]配置例子

    前言 本文主要介绍Spring Boot HTTPS相关配置,基于自签证书实现: 通过本例子,同样可以了解创建SSL数字证书的过程: 本文概述 Spring boot HTTPS 配置 server. ...

  7. Spring注解+Axis2开发WebService

    用Spring注解方式: 配置扫描指定包下的类 <context:component-scan base-package="包名" />   标识类为spring管理的 ...

  8. 使用spring注解@Controller @Service @Repository简化配置

    前言:在web项目中引入spring框架中的配置文件,我们给每一个java bean进行相关配置可以非常安全,便捷的管理我们的bean.那么,问题来了,如果一个项目中所涉及到的java bean十分庞 ...

  9. spring,mybatis事务管理配置与@Transactional注解使用[转]

    spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...

随机推荐

  1. android颜色color.xml设置

     XML Code  12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...

  2. 位运算-出现k次与出现一次

    题目:数组中arr只有一个数出现了1次,其他的数都出现了k次,请输出这个只出现了一次的数. 思路:这道题目要求使用位运算实现,如果采用数据结构Map就会简单很多.解此题前先了解不进位加法的思想,比如两 ...

  3. HTTP协议概念与特点,HTTP的状态码,HTTPS是什么?

    很多人在打开网页的时候,在浏览器地址栏里都会看到http  ,在Java WEB里,HTTP也是个重点内容,今天我们就来详细了解和学习HTTP . HTTP是Hyper Text Transfer P ...

  4. Python程序里的注释和#号

    Python程序里的注释是很重要的.它们可以用自然语言告诉你某段代码的功能是什么.在你想要临时移除一段代码时,你还可以用注解的方式将这段代码临时禁用.接下来的练习将让你学会注释 : # A comme ...

  5. FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe

    一.简述 ffprobe是ffmpeg命令行工具中相对简单的,此命令是用来查看媒体文件格式的工具. 二.命令格式 在命令行中输入如下格式的命令: ffprobe [文件名] 三.使用ffprobe查看 ...

  6. LeetCode724. 寻找数组的中心索引

    1.题目描述 给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法. 我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和. 如果数组不存在中 ...

  7. [Swift]LeetCode205. 同构字符串 | Isomorphic Strings

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  8. [Swift]LeetCode783. 二叉搜索树结点最小距离 | Minimum Distance Between BST Nodes

    Given a Binary Search Tree (BST) with the root node root, return the minimum difference between the ...

  9. [Swift]LeetCode899. 有序队列 | Orderly Queue

    A string S of lowercase letters is given.  Then, we may make any number of moves. In each move, we c ...

  10. MySQL5.7.25(解压版)Windows下详细的安装过程

    大家好,我是浅墨竹染,以下是MySQL5.7.25(解压版)Windows下详细的安装过程 1.首先下载MySQL 推荐去官网上下载MySQL,如果不想找,那么下面就是: Windows32位地址:点 ...