论坛首页 入门技术论坛

初学spring,希望大家给点意见,我的applicationcontext.xml如下

浏览 3959 次
该帖已经被评为新手帖
作者 正文
   发表时间:2006-12-28  
这样配置是否可行? 还需要那些注意事情,希望各位多指点指点。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	
	<!-- 数据库连接信息 -->
	<bean id="DataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName">
			<value>oracle.jdbc.driver.OracleDriver</value>
		</property>
		<property name="url">
			<value>jdbc:oracle:thin:@172.16.20.241:1521:dbsvr</value>
		</property>
		<property name="username">
			<value>hl3000</value>
		</property>
		<property name="password">
			<value>hldw3101</value>
		</property>
	</bean>
	<bean id="SessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="DataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				
				<!-- C3P0连接池配置 -->
				<prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
				<prop key="hibernate.c3p0.max_size">20</prop>
				<prop key="hibernate.c3p0.min_size">5</prop>
				<prop key="hibernate.c3p0.timeout">120</prop>
				<prop key="hibernate.c3p0.max_statements">100</prop>
				<prop key="hibernate.c3p0.idle_test_period">120</prop>
				<prop key="hibernate.c3p0.acquire_increment">2</prop>
				<prop key="myeclipse.connection.profile">hl3000</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/hl3000/DBLogic/POJO/PermUserAccount.hbm.xml</value>
			</list>
		</property>
	</bean>
	
	<!-- AOP DAO Intecepter -->
  	<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">
    	<property name="sessionFactory">
      		<ref bean="SessionFactory"/>
    	</property>
  	</bean>
	
	<!-- 底层数据访问实现类 -->
	<bean id="PermUserAccountDAO" class="com.hl3000.DBLogic.DAO.Impl.PermUserAccountDAO">
		<property name="sessionFactory">
			<ref bean="SessionFactory" />
		</property>
	</bean>
	
	<!-- 模块数据访问类 -->
	<bean id="SysmrgAccessTarget" class="com.hl3000.DBLogic.Impl.SysmrgAccess">
		<property name="permUserAccountDAO">
			<ref bean="PermUserAccountDAO" />
		</property>
	</bean>
	
	<!-- 模块数据访问接口 -->
	<bean id="SysmrgAccess" class="org.springframework.aop.framework.ProxyFactoryBean">
	    <property name="proxyInterfaces">
	      <value>com.hl3000.DBLogic.ISysmrgAccess</value>
	    </property>
	    <property name="interceptorNames">
	      <list>
	        <value>hibernateInterceptor</value>
	        <value>SysmrgAccessTarget</value>
	      </list>
	    </property>
  	</bean>
	
	<!-- Action -->
	<bean name="/sysMngTree" class="com.hl3000.struts.action.SysMngTreeAction" singleton="false">
		<property name="sysmrgAccess">
			<ref bean="SysmrgAccess" />
		</property>
	</bean>
	
	<bean name="/sysMasterList" class="com.hl3000.struts.action.SysMasterListAction">
		<property name="sysmrgAccess">
			<ref bean="SysmrgAccess" />
		</property>
	</bean>
	
	<bean name="/userInfo" class="com.hl3000.struts.action.UserInfoAction">
		<property name="sysmrgAccess">
			<ref bean="SysmrgAccess" />
		</property>
	</bean>
</beans>
   发表时间:2006-12-28  
还有事务管理,具体不是很懂
 <bean id="studentManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
      <ref bean="myTransactionManager"/>
    </property>
    <property name="target">
      <ref bean="studentManagerTarget"/>
    </property>
    <property name="transactionAttributes">
      <props>
           <prop key="save*">PROPAGATION_REQUIRED</prop>
           <prop key="remove*">PROPAGATION_REQUIRED</prop>
           <prop key="update*">PROPAGATION_REQUIRED</prop>                
           <prop key="create*">PROPAGATION_REQUIRED</prop>   
           <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
      </props>
    </property>
  </bean>


<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>               
<prop key="create*">PROPAGATION_REQUIRED</prop>  
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
这两句如何理解呢?
0 请登录后投票
   发表时间:2007-01-05  
PROPAGATION_REQUIRED等效于TX_REQUIRED,
而PROPAGATION_REQUIRES_NEW等效于EJB中的TX_REQUIRES_NEW。
如果我们想让服务方法始终在事务中运行,我们可以使用PROPAGATION_REQUIRED。
当使用PROPAGATION_REQUIRED时,如果已经运行了一个TX,bean方法就会加入到该TX中;
否则的话,Spring的轻量级TX管理器就会启动一个TX。
如果在调用组件服务时我们总是希望开始新的事务,那么可以利用PROPAGATION_REQUIRES_NEW属性。


PROPAGATION_SUPPORTS属性允许服务方法在客户端有TX上下文时在客户端TX中运行;
如果客户端没有TX,就不用TX而直接运行。

  我们还指定,当方法抛出FacadeException类型的异常时,addLineItem就总是回滚事务。这就达到了另一个粒度级别:在异常场景中,我们的控制可以精细到TX的具体结束方式。前缀符号“-”指定回滚TX,而前缀符号“+”指定提交TX。


PROPAGATION_REQUIRED:服务始终在事务中运行,如果已经运行一个TX,bean方法就会加入到该TX中;否则,spring的轻量级TX管理就会启动一个TX.

PROPAGATION_REQUIRES_NEW:调用组件服务是总是开始新的事务。

PROPAGATION_SUPPORTS:属性允许服务方法在客户端有TX上下文时在TX中运行;如果客户端没有TX,就不用TX而直接运行。

前缀符号“-”指定回滚TX,而前缀符号“+”指定提交TX。
0 请登录后投票
   发表时间:2007-01-06  
很好啊...
spring是好东西...
从全局掌握一个"度", 不要患上 "IOC传染病" ...!
0 请登录后投票
   发表时间:2007-01-07  
建议:刚开始学的时候不要一股脑儿全上,什么struts,hibernate全都用上了,还是一部分一部分的学比较好一些。
0 请登录后投票
   发表时间:2007-01-08  
楼上的说的不错!!我以前的项目就是struts,hibernate,spring,tiles,好郁闷!!研究了半个月!!
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics