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(具體實現步驟)。

 

 

 

 

 

未完待續

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM