zoukankan      html  css  js  c++  java
  • 第九篇:Spring的applicationContext.xml配置总结

    在前面的一篇日志中,记录了web.xml配置启动的顺序,web启动到监听器ContextLoaderListener时,开始加载spring的配置文件applicationContext.xml(通常就叫这个名字),在查询大量资料之后决心将该文件详细的配置说明和讲解记录下来,以供查阅,加深原理的理解。
            首先是spring的各类命名空间和xml声明:

    <?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"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.1.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-4.1.xsd">
    </beans>
            这一部分, 可以自行查阅资料,不去深究也罢。
            以下配置,均在<beans></beans>标签之类,为了便于讲解,直接写出来,一般的在这个配置文件中主要做两件事,扫描注解和注册数据源(数据库信息相关)

    第一,扫描注解,看下面两个标签
    1、<context:component-scan base-package="cn.byan" use-default-filters="false"/>
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
      </context:component-scan>
    2、<context:annotation-config />
    第1种标签:
    base-package填入你要扫描的包
    use-default-filters这个 属性表示你要扫描注解的类,
    true,默认会扫描注解了这四个标志的类:Service,Component,Repository,Controller;
    false,如果你设为false,那么就需要增加 <context:exclude-filter/>这个子节点,指出哪种注解不让spring去默认扫描
    当设为false时,需要掌握子节点的这几个属性:
    <context:exclude-filter/>:该子节点指定要排除扫描的类,比如一般的@controller的注解类可能会放到mvc的配置文件中去指定扫描
    <context:include-filter/>:相反,该子节点指定要扫描的类,什么时候用,还没遇到过
    type :通常都是annotation(注解的意思)
    expression :注解类的全名(每种注解类在spring中都有全名)
    第2种标签:
    <context:annotation-config />,也是spring用的比较多的默认扫描的配置,功能和1差不多,但是第一种配置包含第2种配置,所以直选其一即可。1用的比较多

    以上标签,通俗点讲,就是:web启动时,默认扫描cn.byan包中注解了@service,@Component,@Repository标注的类,交给spring容器去管理(不扫描@Controller标注的类)。

    第二,配置数据源
    <!-- 用spring提供的PropertyPlaceholderConfigurer读取数据库配置信息-->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
         <list>
        <value>classpath:conf/jdbc.properties</value>
      </list>   </property> </bean>
    数据库的配置信息,一般写成配置文件jdbc.properties,放在项目中,在项目启动时加载读取

    <!-- dataSource读取数据库的配置信息 ,这里用的是dbcp-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" init-method="init" destroy-method="close">
      <property name="driverClassName" value="${jdbc_driverClassName}"></property>
      <property name="url" value="${jdbc_url}"></property>
      <property name="username" value="${jdbc_username}"></property>
      <property name="password" value="${jdbc_password}"></property>
      <!-- 连接池最大使用连接数 -->
      <property name="maxActive" value="${jdbc_maxActive}"></property>
      <!-- 初始化连接大小 -->
      <property name="initialSize" value="${jdbc_initialSize}"></property>
      <!-- 获取连接最大等待时间 -->
      <property name="maxWait" value="${jdbc_maxWait}"></property>
      <!-- 连接池最大空闲 -->
      <property name="maxIdle" value="${jdbc_maxIdle}"></property>
      <!-- 连接池最小空闲 -->
      <property name="minIdle" value="${jdbc_minIdle}"></property>
      <!-- 自动清除无用连接 -->
      <property name="removeAbandoned" value="${jdbc_removeAbandoned}"></property>
      <!-- 清除无用连接的等待时间 -->
      <property name="removeAbandonedTimeout" value="${jdbc_removeAbandonedTimeout}"></property>
      <!-- 事物是否自动提交-->
      <property name="defaultAutoCommit" value="${jdbc_defaultAutoCommit}"></property>
      <!-- 连接属性 -->
      <property name="connectionProperties" value="clientEncoding=UTF-8"></property>
    </bean> 
    
    <!-- 配置SessionFactory,这里用的是hibernate4,mybatis目前还不太熟 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="packagesToScan" value="com.byan.entity" />
      <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">${hibernate.dialect}</prop>
        <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
        <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
      </props>
      </property>
    </bean> 
    
    <!-- 定义事务管理器,用了spring管理的hibernate4的事物,再也不用担心事物。。。-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory" />
    </bean> 
    
    <!-- 声明事务管理器,此时在ServiceImpl或者DaoImpl类上需加上@Transactional注解-->
    <tx:annotation-driven transaction-manager="transactionManager" />
    以上是applicationContext.xml配置文件要掌握的最基础的配置使用信息
  • 相关阅读:
    列出对像属性,for(var i in obj)
    检测碰撞实例
    Rectangle 、getBounds(this)
    判断mc是否播放完成的简单方法
    操作规范时间工具类
    文本框中文字用htmlText操作并且实现文本框中文字加链接【link的用法】
    让舞台上的btn灰掉
    简单的缓动
    加入文本框
    HDU 1297 Children’s Queue (DP)
  • 原文地址:https://www.cnblogs.com/yb38156/p/9821911.html
Copyright © 2011-2022 走看看