案例 tomcat 中 配置JNDI 連接數據庫

實際項目中,特別是通過發版平臺的項目,生產環境數據庫連接地址往往和容器綁定;用以避免數據庫密碼暴露的情況

 

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" />

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章