1. 程式人生 > >Spring中配置檔案application.xml中各配置的含義

Spring中配置檔案application.xml中各配置的含義

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context" 
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	
	<description>
		Spring Configuration.
	</description>
	<import resource="classpath:frameworkContext.xml" /> <!--引入其他context檔案-->
	
	<!-- =================================================================== -->
	<!-- Context Define                                                      -->
	<!-- =================================================================== -->
        <!--預載入配置檔案 之後可通過${XXX}讀取-->
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:database.properties</value>
			</list>
		</property>
	</bean>
	
	
	<!-- =================================================================== -->
	<!-- Data Source Define (jdbc & jndi)                                    -->
	<!-- =================================================================== -->
	<!-- JDBC Configuration  通過配置檔案 配置直連 資料來源 -->
	<!--
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName"
			value="${hibernate.connection.driver_class}" />
		<property name="url" value="${hibernate.connection.url}" />
		<property name="username"
			value="${hibernate.connection.username}" />
		<property name="password"
			value="${hibernate.connection.password}" />
	</bean>
	 -->
	 
	<!-- JNDI Configuration -->
	
	<!--通過jndi配置資料來源-->
	<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName" value="jdbc/stptdemo"/>
              <!--  <property name="jndiName" value="java:comp/env/jdbc/stpt"/>  tomcat資料來源-->
	</bean>
	

	<!-- =================================================================== -->
	<!-- SessionFactory(For Hibernate)/ManagerFactory(For JPA) Define        -->
	<!--  ONLY ONE OF THEM SHOULD BE USED                                    -->
	<!-- =================================================================== -->
	<!--  class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" 
	spring 2.5之後繼承的工廠類 通過jpa註釋 配置BO-->
	<!--  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" 
	spring 2.5之前繼承的工廠類 通過hbm配置檔案 配置BO -->
	
	<!--配置sessionfactory-->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation"
			value="classpath:hibernate.cfg.xml" />
                <!--此屬性可寫在此,也可寫在hibernate配置檔案 cfg.xml 中-->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					${hibernate.dialect}
				</prop>
			</props>
		</property>
		<!--若是註解bo對映,則寫在hibernate.cfg.xml中 或者 使用屬性annotatedClasses-->
                 <!--
                 <property name="annotatedClasses"> 
                 <list> 
                   <value>com.pojo.DT_RGNCD</value> 
                   </list>     
                   </property>    
                    但這種方式只能一個個吧bo寫出來比較繁瑣
                     -->
                <!--使用packagesToScan屬性掃描包下的實體類,可以避免1個個寫了
                  <property name="packagesToScan"><!-- 自動掃描註解 -->
                  <list>
                      <value>com.wonders.*</value>
                  </list>
                 -->
		<!--需要hbm配置檔案查詢對映路徑 配置
		<property name="mappingDirectoryLocations">
		<list>
		<value>classpath:/com/wondersgroup</value>
		</list>
		</property>
		-->
 		<!--處理lob型別-->
 		<property name="lobHandler" ref="${jdbc.handler}" />
 	</bean>
 	
 	<!--配置hibernate操作類-->
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<!--配置jdbc操作類-->
 	<bean id = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate"> 
 		<property name = "dataSource" ref="dataSource"/>
 	</bean> 


	<!-- =================================================================== -->
	<!-- Transaction Define                                                  -->
	<!-- =================================================================== -->

	<!--配置hibernate事務管理類 -->
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        	<property name="sessionFactory" ref="sessionFactory"/>
	</bean>

	<!--配置jdbc事務管理類 -->
	<bean id="dsTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!--引入註解配置 設定掃描類 包含struts2 spring -->	
		<context:annotation-config/>
		<context:component-scan base-package="com.wonders" /><!--包括<context:annotation-config/>,可代替-->
	<!--註解配置 指定事務代理類-->
		<tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/>
	<!--引入aop 自動代理-->
		<aop:aspectj-autoproxy/>

	
	<!-- =================================================================== -->
	<!-- Transaction proxy define                                           -->
	<!-- =================================================================== -->
	<!--事務代理類 ,用於xml配置 時 為代理service,增加事務管理;使用時作為service的基類進行事務管理-->
	<bean id="basicTxProxy" abstract="true"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager" ref="transactionManager" />
		<property name="transactionAttributes">
		<!-- //ProxyConfig類的exposeProxy屬性,表示是否要將當前的代理物件放入AopContext中,
		 //這樣在你的Service中可以用AopContext.currentProxy()取得當前代理,相當於this引用, 
		 <property name="exposeProxy" value="true" /> -->
			<props>
				<prop key="save*">PROPAGATION_REQUIRED</prop> <!--如果當前沒有事務,就新建一個事務,如果已經存在一個事務中,加入到這個事務中。這是最常見的選擇-->
				<prop key="add*">PROPAGATION_REQUIRED</prop>
				<prop key="remove*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
</beans>

同時,附上 hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- NOTE: For Hibernate Session Factory Use Only -->
<hibernate-configuration> 
  <session-factory> 
    <property name="connection.pool_size">1</property>  
    <property name="show_sql">false</property>  
    <property name="format_sql">true</property>  
    <property name="cache.provider_class">org.hibernate.cache.OSCacheProvider</property>  
    <property name="cache.use_query_cache">true</property>  
    <property name="query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property>  
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>  
    <property name="proxool.pool_alias">pool1</property>  
    <property name="connection.SetBigStringTryClob">true</property>  
    <property name="jdbc.batch_size">0</property>  
    <property name="jdbc.use_streams_for_binary">true</property>  
    <property name="max_fetch_depth">1</property>  
    <!-- set hbm2ddl strategy -->  
    <!--
			<property name="hibernate.hbm2ddl.auto">update</property>
		-->  
    <!-- add BO class Mapping here optionally -->  
    <mapping class="com.wonders.stpt.metroExpress.entity.bo.MetroExpress"/>  
    <mapping class="com.wonders.stpt.metroIndicator.entity.bo.MetroProduction"/>  
    <mapping class="com.wonders.stpt.metroIndicator.entity.bo.MetroQuality"/>  
    <mapping class="com.wonders.stpt.metroIndicator.entity.bo.MetroScale"/>
    <mapping class="com.wonders.stpt.core.login.entity.bo.Tuser"/>  
    <mapping class="com.wonders.stpt.core.login.entity.bo.TuserToken"/> 
    <mapping class="com.wonders.stpt.core.login.entity.bo.TuserRelation"/>  
    <mapping class="com.wonders.stpt.core.domainAuthentication.entity.bo.DomainAuthentication"/>  
    <mapping class="com.wonders.stpt.metroLine.entity.bo.MetroLine"/>  
    <mapping class="com.wonders.stpt.constructionNotice.entity.bo.ConstructionNotice"/>  
    <mapping class="com.wonders.stpt.organTree.entity.bo.TorganRelation"/>  
    <mapping class="com.wonders.stpt.indicatorControl.entity.bo.MetroProductionControl"/>
    <mapping class="com.wonders.stpt.indicatorControl.entity.bo.MetroQualityControl"/>
    <mapping class="com.wonders.stpt.indicatorControl.entity.bo.MetroScaleControl"/>
    
 
    	<mapping class="com.wonders.stpt.core.userManage.entity.bo.StptUser"/>  
    	<mapping class="com.wonders.stpt.core.cfconsole.entity.bo.TuserLog"/>
    	<mapping class="com.wonders.stpt.userMsg.entity.bo.TuserMsg"/>
    	<mapping class="com.wonders.stpt.attach.model.bo.AttachFile"/>
  
  </session-factory> 
</hibernate-configuration>

及database.properties
jdbc.handler oracleLobHandler
hibernate.dialect org.hibernate.dialect.Oracle9Dialect
hibernate.connection.driver_class oracle.jdbc.OracleDriver
hibernate.connection.username stpt
hibernate.connection.password shstpt
hibernate.connection.url jdbc:oracle:thin:@10.1.13.10:1521:stptdemo