applicationContext.xml作為spring 全局配置文件,其配置內容也應該跟其作用相關;
Bean是Spring管理的基本單位,在基於Spring的Java EE應用中,所有的組件都被當成Bean處理,包括數據源、hibernate的SessionFactory、事務管理器等。
1.beans是applicationContext.xml的根元素,其包含所有子元素;
2.自動掃描,設置使用注解的類所在的包 主要是dao層和service層,剔除controller層注解掃描:
<context:component-scan base-package="zzj.lxy">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
3.配置數據庫相關參數properties的屬性:${url}
<context:property-placeholder location="classpath:porperties/jdbc.properties"/>
4.數據庫連接池
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
<property name="minPoolSize" value="${c3p0.minPoolSize}"/>
<property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
<property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
<property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
</bean>
5.配置SqlSessionFactory對象
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入數據庫連接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 掃描model包 使用別名 -->
<property name="typeAliasesPackage" value="zzj.lxy.dao"/>
<!-- 掃描sql配置文件:mapper需要的xml文件 -->
<property name="mapperLocations" value="classpath:zzj/lxy/dao/*.xml"/>
</bean>
6.MapperScannerConfigurer掃描包下的mybatis的mapper接口,然后和mybatis的sqlxml映射文件產生代理對象,最后注入到springIoc容器里面
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 給出需要掃描Dao接口包 -->
<property name="basePackage" value="zzj.lxy.dao"/>
</bean>
7.配置事務管理器
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入數據庫連接池 -->
<property name="dataSource" ref="dataSource"/>
</bean>
8.配置基於注解的聲明式事務
<tx:annotation-driven transaction-manager="transactionManager"/>