實際項目中,特別是通過發版平臺的項目,生產環境數據庫連接地址往往和容器綁定;用以避免數據庫密碼暴露的情況
1. 配置數據源:
本案例配置了pg數據庫的連接信息,其他數據庫則需要做相應的調整:
1.1 配置server.xml文件:添加數據源
<Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="100" maxIdle="30" maxWait="10000" name="jndiName" type="javax.sql.DataSource" url="jdbc:postgresql://ip:6391/dbname" username="dbusername" password="password" />
1.2 配置context.xml文件:添加如下一句
<ResourceLink global="xds-pg" name="xds-pg" type="javax.sql.DataSource"/>
重啓tomcat
2. 配置項目:
配置mybatis和數據源(dataSource)關聯關係:
2.1 dataSource:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"
lazy-init="true">
<property name="jndiName" value="jndiName" />
<property name="resourceRef" value="true" />
</bean>
2.2 配置數據庫事務:
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
2.3 配置Mybatis的SqlSessionFactory。
讓mapper.xml和數據庫關聯起來
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis.cfg.xml" />
<property name="mapperLocations" value="classpath:cn/zc/**/*Mapper.xml" />
</bean>
2.4 MapperScannerConfigurer:
配置dao中mapper.java文件和mapper.xm文件的關聯配置
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<!-- mapper類掃描 -->
<property name="basePackage" value="cn.zc.dao" />
</bean>
2.5 註解掃描:
<context:component-scan base-package="cn"/>
2.6 啓動tomcat:
全註解的spring 項目的中的web.xml文件將被讀取,spring配置文件被加載的核心配置項爲:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml</param-value>
</context-param>
加載的springbean 會做一次單利模式的初始化,不會被回收,因爲bean基本是無狀態的模式,所以基本都是線程安全的;
如果想每次都新建一個bean,可以在配置項目中加入scope="prototype"
2.7 jdbcTemplate
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" scope="prototype">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
2.8 DataSourceTransactionManager
<bean id="myManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="myManager" />