zoukankan      html  css  js  c++  java
  • applicationContext.xml配置简介

    这里简单介绍一下spring的配置文件applicationContext.xml中的一些配置的作用。

    <context:component-scan base-package=""/>

    表示启动spring的组件扫描功能(从spring2.5版本开始)。即扫描base-package包或者子包下面的Java文件,如果扫描到有@controller、@Service、@Repository、@Component等注解的java类,就会将这些bean注册到工厂中。还可以使用分号来分隔多个扫描包。 

    如果在配置文件中配置了<context:component-scan />,就不用在配置<context:annotation-config/>,因为前者已经包含了后者。<context:annotation-config/>的作用是向spring容器注入AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 及RequiredAnnotationBeanPostProcessor 四个beanPostProcessor。从而使得@Autowired等注解生效。

    <mvc:annotation-driven />

    <mvc:annotation-driven />是告知Spring,我们启用注解驱动。然后Spring会自动为我们注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter等几个Bean到工厂中,此时我们可以使用@RequestMapping、@Valid注解来处理请求,也可以使用@ResponseBody来处理返回结果。

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
       <list>
        <value>/WEB-INF/mail.properties</value>  
        <value>classpath: conf/sqlmap/jdbc.properties</value></list>
      </property>
    </bean>

    PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java Properties文件中去。在XML文件中用${key}替换指定的properties文件中的值。这样的话,只需要对properties文件进 行修改,而不用对xml配置文件进行修改。

    上面有两种value的写法,其中classpath是引用src目录下的文件写法。

    <bean scope="singleton" id="dataSource"    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${jdbc.driverClassName}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />        
    </bean>

    DriverManager类的主要作用是管理注册到DriverManager中的JDBC驱动程序,并根据需要使用JDBC驱动程序建立与数据服务器的网络连接。

    DriverManagerDataSource在每个连接请求时都新建一个连接,但是建立与数据库的连接是一项较耗资源的工作,频繁的进行数据库连接建立操作会产生较大的系统开销,为了解决上述问题,可以采用数据库连接池技术,例如dbcp、c3p0、druid(spring配置数据库连接池druid)。

    <!-- 配置mybatis的SessionFactory -->
        <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:conf/mybatis-config.xml" />
            <property name="mapperLocations">
                <array>
                    <value>classpath:com/wdcloud/fayu/mapper/*Mapper.xml</value>
                </array>
            </property>
            <!-- 配置此项则在mapper中可以直接使用实体类名,而不需要使用全路径名 -->
            <property name="typeAliasesPackage" value="com.wdcloud.fayu.entity" />
        </bean>
    
        <!-- 自动扫描注册mapper接口类(接口类实现mybatis) -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.wdcloud.fayu.mapper" />
        </bean>
    
       <!-- sqlSessionTemplate配置(模板类实现mybatis) -->
       <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype">
            <constructor-arg index="0" ref="sqlSessionFactory"/>
        </bean>

    上面为mybatis在spring中的配置,其中有两种实现方式:接口类实现和模板类实现。

    SqlSessionFactoryBean是mybatis的核心管理类,通过dataSource指定数据源,configLocation指定mybatis的配置文件,mapperLocations指定mapper的xml文件。

    MapperScannerConfigurer的作用是自动扫描注册mapper接口类到spring工厂中,当你的mapper接口类存在于多个目录下时,basePackage的值可以配置成多个目录,中间用英文逗号隔开即可。

    SqlSessionTemplate的作用是基于持久化模板类实现Mybatis(具体实现步骤)。

    未完待续

  • 相关阅读:
    Ansible工作架构和原理
    基于WSAAsyncSelect模型的两台计算机之间的通信
    基于Select模型通信程序的编写,编译和执行
    Windows API窗口绘图程序设计
    常用自动化运维工具
    简单的程序发布流程
    TCPIP协议编程:基于UDP协议的局域网聊天工具的研发
    Python 遗传算法实现字符串
    python3 井字棋 GUI
    Docker 容器的跨主机连接
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/6544188.html
Copyright © 2011-2022 走看看