`

spring 2.5 事务管理

阅读更多

spring2.5的事物管理,分为两种方式,一是基于注解方式的,而是基于配置文件方式的

一。基于注解方式

Java代码 复制代码
  1. import java.util.List;   
  2.   
  3. import javax.sql.DataSource;   
  4.   
  5. import org.springframework.jdbc.core.JdbcTemplate;   
  6. import org.springframework.transaction.annotation.Propagation;   
  7. import org.springframework.transaction.annotation.Transactional;   
  8.   
  9. import com.mingbai.bean.StudentBean;   
  10. import com.mingbai.service.StudentService;   
  11.   
  12. //将此业务类交由spring的事务管理,这时此方法的某个方法在执行前就开启事务,结束后提交事务   
  13. @Transactional                     
  14. public class StudentServiceImpl implements StudentService {   
  15.     private JdbcTemplate jdbcTemplate;   
  16.   
  17.     public void setDataSource(DataSource dataSource) {   
  18.         this.jdbcTemplate = new JdbcTemplate(dataSource);   
  19.     }   
  20.   
  21. /*  public void delete(Integer sid) {  
  22.         jdbcTemplate.update("delete from student where id=?",   
  23.                 new Object[]{sid}, new int[]{java.sql.Types.INTEGER});  
  24.         throw new RuntimeException("我是异常");  
  25.     }*/  
  26. /*  @Transactional(rollbackFor=Exception.class)  
  27.     public void delete(Integer sid) throws Exception {  
  28.         jdbcTemplate.update("delete from student where id=?",   
  29.                 new Object[]{sid}, new int[]{java.sql.Types.INTEGER});  
  30.         throw new Exception("我是异常");  
  31.     }*/  
  32.     @Transactional(noRollbackFor=RuntimeException.class)   
  33.     public void delete(Integer sid) throws Exception {   
  34.         jdbcTemplate.update("delete from student where id=?",    
  35.                 new Object[]{sid}, new int[]{java.sql.Types.INTEGER});   
  36.         throw new RuntimeException("我是运行期异常");//运行期例外(unchecked exception)事务默认回滚   
  37.     }   
  38.        
  39.     @Transactional(propagation=Propagation.NOT_SUPPORTED)   
  40.     public List<StudentBean> getAllStudent() {   
  41.         return jdbcTemplate.query("select * from student"new StudentRowMapper());   
  42.     }   
  43.        
  44.     public StudentBean getStudent(Integer sid) {   
  45.         StudentBean sb = (StudentBean)jdbcTemplate.queryForObject("select * from student where id=?"new Object[]{sid}, new int[]{java.sql.Types.INTEGER}, new StudentRowMapper());   
  46.         return sb;   
  47.     }   
  48.   
  49.     public void save(StudentBean student) {   
  50.         jdbcTemplate.update("insert into student(name,password) values(?,?)",    
  51.                 new Object[]{student.getName(),student.getPassword()}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.VARCHAR});   
  52.     }   
  53.   
  54.     public void update(StudentBean student) {   
  55.         jdbcTemplate.update("update student set name=? where id=?",    
  56.                 new Object[]{student.getName(),5}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.INTEGER});   
  57.     }   
  58.   
  59. }   
  60.   
  61. 数据库链接信息放在类路径的文件jdbc.properties中   
  62.   
  63. <PRE class=java name="code">driverClassName=org.gjt.mm.mysql.Driver   
  64. url=jdbc\:mysql\://localhost\:3306/test   
  65. username=root   
  66. password=   
  67. initialSize=1  
  68. maxActive=500  
  69. maxIdle=2  
  70. minIdle=1</PRE>   
  71. <BR>   
  72. <BR>此时的配置文件需要注明采用注解方式   
  73. <BR>   
  74. <BR><PRE class=java name="code"><?xml version="1.0" encoding="UTF-8"?>   
  75. <beans xmlns="http://www.springframework.org/schema/beans"  
  76.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  77.        xmlns:context="http://www.springframework.org/schema/context"    
  78.        xmlns:aop="http://www.springframework.org/schema/aop"  
  79.        xmlns:tx="http://www.springframework.org/schema/tx"  
  80.        xsi:schemaLocation="http://www.springframework.org/schema/beans   
  81.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  82.            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd   
  83.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd   
  84.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">             
  85.         
  86.         
  87.      <context:property-placeholder location="classpath:jdbc.properties"/><!-- 属性文件,占位符 -->   
  88.      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
  89.         <property name="driverClassName" value="${driverClassName}"/>   
  90.         <property name="url" value="${url}"/>   
  91.         <property name="username" value="${username}"/>   
  92.         <property name="password" value="${password}"/>   
  93.          <!-- 连接池启动时的初始值 -->   
  94.          <property name="initialSize" value="${initialSize}"/>   
  95.          <!-- 连接池的最大值 -->   
  96.          <property name="maxActive" value="${maxActive}"/>   
  97.          <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->   
  98.          <property name="maxIdle" value="${maxIdle}"/>   
  99.          <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->   
  100.          <property name="minIdle" value="${minIdle}"/>   
  101.      </bean>   
  102.         
  103.         
  104.      <!--    
  105.      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
  106.         <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>   
  107.         <property name="url" value="jdbc:mysql://localhost:3306/test"/>   
  108.         <property name="username" value="root"/>   
  109.         <property name="password" value=""/>   
  110.          <property name="initialSize" value="1"/>   
  111.          <property name="maxActive" value="500"/>   
  112.          <property name="maxIdle" value="1"/>   
  113.          <property name="minIdle" value="1"/>   
  114.      </bean>   
  115.       -->   
  116.     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
  117.        <property name="dataSource" ref="dataSource"/>   
  118.     </bean>   
  119.     <!-- 采用注解事务方式-->   
  120.     <tx:annotation-driven transaction-manager="txManager"/>   
  121.        <bean id="studentService" class="com.mingbai.service.impl.StudentServiceImpl">   
  122.        <property name="dataSource"  ref="dataSource"></property>   
  123.     </bean>   
  124. </beans></PRE>   
  125. <BR>  
import java.util.List;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.mingbai.bean.StudentBean;
import com.mingbai.service.StudentService;

//将此业务类交由spring的事务管理,这时此方法的某个方法在执行前就开启事务,结束后提交事务
@Transactional                  
public class StudentServiceImpl implements StudentService {
	private JdbcTemplate jdbcTemplate;

	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}

/*	public void delete(Integer sid) {
		jdbcTemplate.update("delete from student where id=?", 
				new Object[]{sid}, new int[]{java.sql.Types.INTEGER});
		throw new RuntimeException("我是异常");
	}*/
/*	@Transactional(rollbackFor=Exception.class)
	public void delete(Integer sid) throws Exception {
		jdbcTemplate.update("delete from student where id=?", 
				new Object[]{sid}, new int[]{java.sql.Types.INTEGER});
		throw new Exception("我是异常");
	}*/
	@Transactional(noRollbackFor=RuntimeException.class)
	public void delete(Integer sid) throws Exception {
		jdbcTemplate.update("delete from student where id=?", 
				new Object[]{sid}, new int[]{java.sql.Types.INTEGER});
		throw new RuntimeException("我是运行期异常");//运行期例外(unchecked exception)事务默认回滚
	}
	
	@Transactional(propagation=Propagation.NOT_SUPPORTED)
	public List<StudentBean> getAllStudent() {
		return jdbcTemplate.query("select * from student", new StudentRowMapper());
	}
	
	public StudentBean getStudent(Integer sid) {
		StudentBean sb = (StudentBean)jdbcTemplate.queryForObject("select * from student where id=?", new Object[]{sid}, new int[]{java.sql.Types.INTEGER}, new StudentRowMapper());
		return sb;
	}

	public void save(StudentBean student) {
		jdbcTemplate.update("insert into student(name,password) values(?,?)", 
				new Object[]{student.getName(),student.getPassword()}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.VARCHAR});
	}

	public void update(StudentBean student) {
		jdbcTemplate.update("update student set name=? where id=?", 
				new Object[]{student.getName(),5}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.INTEGER});
	}

}

数据库链接信息放在类路径的文件jdbc.properties中

Java代码 复制代码
  1. driverClassName=org.gjt.mm.mysql.Driver   
  2. url=jdbc\:mysql\://localhost\:3306/test   
  3. username=root   
  4. password=   
  5. initialSize=1  
  6. maxActive=500  
  7. maxIdle=2  
  8. minIdle=1  
driverClassName=org.gjt.mm.mysql.Driver
url=jdbc\:mysql\://localhost\:3306/test
username=root
password=
initialSize=1
maxActive=500
maxIdle=2
minIdle=1


此时的配置文件需要注明采用注解方式

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:context="http://www.springframework.org/schema/context"    
  5.        xmlns:aop="http://www.springframework.org/schema/aop"  
  6.        xmlns:tx="http://www.springframework.org/schema/tx"  
  7.        xsi:schemaLocation="http://www.springframework.org/schema/beans   
  8.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  9.            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd   
  10.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd   
  11.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">             
  12.         
  13.         
  14.      <context:property-placeholder location="classpath:jdbc.properties"/><!-- 属性文件,占位符 -->   
  15.      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
  16.         <property name="driverClassName" value="${driverClassName}"/>   
  17.         <property name="url" value="${url}"/>   
  18.         <property name="username" value="${username}"/>   
  19.         <property name="password" value="${password}"/>   
  20.          <!-- 连接池启动时的初始值 -->   
  21.          <property name="initialSize" value="${initialSize}"/>   
  22.          <!-- 连接池的最大值 -->   
  23.          <property name="maxActive" value="${maxActive}"/>   
  24.          <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->   
  25.          <property name="maxIdle" value="${maxIdle}"/>   
  26.          <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->   
  27.          <property name="minIdle" value="${minIdle}"/>   
  28.      </bean>   
  29.         
  30.         
  31.      <!--    
  32.      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
  33.         <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>   
  34.         <property name="url" value="jdbc:mysql://localhost:3306/test"/>   
  35.         <property name="username" value="root"/>   
  36.         <property name="password" value=""/>   
  37.          <property name="initialSize" value="1"/>   
  38.          <property name="maxActive" value="500"/>   
  39.          <property name="maxIdle" value="1"/>   
  40.          <property name="minIdle" value="1"/>   
  41.      </bean>   
  42.       -->   
  43.     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
  44.        <property name="dataSource" ref="dataSource"/>   
  45.     </bean>   
  46.     <!-- 采用注解事务方式-->   
  47.     <tx:annotation-driven transaction-manager="txManager"/>   
  48.        <bean id="studentService" class="com.mingbai.service.impl.StudentServiceImpl">   
  49.        <property name="dataSource"  ref="dataSource"></property>   
  50.     </bean>   
  51. </beans>  
<?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.5.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">          
     
     
     <context:property-placeholder location="classpath:jdbc.properties"/><!-- 属性文件,占位符 -->
	 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	    <property name="driverClassName" value="${driverClassName}"/>
	    <property name="url" value="${url}"/>
	    <property name="username" value="${username}"/>
	    <property name="password" value="${password}"/>
	     <!-- 连接池启动时的初始值 -->
		 <property name="initialSize" value="${initialSize}"/>
		 <!-- 连接池的最大值 -->
		 <property name="maxActive" value="${maxActive}"/>
		 <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
		 <property name="maxIdle" value="${maxIdle}"/>
		 <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
		 <property name="minIdle" value="${minIdle}"/>
	 </bean>
     
     
     <!-- 
     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	    <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
	    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
	    <property name="username" value="root"/>
	    <property name="password" value=""/>
		 <property name="initialSize" value="1"/>
		 <property name="maxActive" value="500"/>
		 <property name="maxIdle" value="1"/>
		 <property name="minIdle" value="1"/>
	 </bean>
	  -->
	<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  	   <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 采用注解事务方式-->
    <tx:annotation-driven transaction-manager="txManager"/>
       <bean id="studentService" class="com.mingbai.service.impl.StudentServiceImpl">
       <property name="dataSource"  ref="dataSource"></property>
    </bean>
</beans>






一。基于xml配置方式

Java代码 复制代码
  1. import java.util.List;   
  2.   
  3. import javax.sql.DataSource;   
  4.   
  5. import org.springframework.jdbc.core.JdbcTemplate;   
  6.   
  7. import com.mingbai.bean.StudentBean;   
  8. import com.mingbai.service.StudentService;   
  9.   
  10.                      
  11. public class StudentServiceImpl2 implements StudentService {   
  12.     private JdbcTemplate jdbcTemplate;   
  13.   
  14.     public void setDataSource(DataSource dataSource) {   
  15.         this.jdbcTemplate = new JdbcTemplate(dataSource);   
  16.     }   
  17.   
  18.   
  19.     public void delete(Integer sid) throws Exception {   
  20.         jdbcTemplate.update("delete from student where id=?",    
  21.                 new Object[]{sid}, new int[]{java.sql.Types.INTEGER});   
  22.         throw new RuntimeException("我是运行期异常");//运行期例外(unchecked exception)事务默认回滚   
  23.     }   
  24.        
  25.     public List<StudentBean> getAllStudent() {   
  26.         return jdbcTemplate.query("select * from student"new StudentRowMapper());   
  27.     }   
  28.        
  29.     public StudentBean getStudent(Integer sid) {   
  30.         StudentBean sb = (StudentBean)jdbcTemplate.queryForObject("select * from student where id=?"new Object[]{sid}, new int[]{java.sql.Types.INTEGER}, new StudentRowMapper());   
  31.         return sb;   
  32.     }   
  33.   
  34.     public void save(StudentBean student) {   
  35.         jdbcTemplate.update("insert into student(name,password) values(?,?)",    
  36.                 new Object[]{student.getName(),student.getPassword()}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.VARCHAR});   
  37.     }   
  38.   
  39.     public void update(StudentBean student) {   
  40.         jdbcTemplate.update("update student set name=? where id=?",    
  41.                 new Object[]{student.getName(),5}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.INTEGER});   
  42.     }   
  43.   
  44. }  
import java.util.List;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;

import com.mingbai.bean.StudentBean;
import com.mingbai.service.StudentService;

                  
public class StudentServiceImpl2 implements StudentService {
	private JdbcTemplate jdbcTemplate;

	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}


	public void delete(Integer sid) throws Exception {
		jdbcTemplate.update("delete from student where id=?", 
				new Object[]{sid}, new int[]{java.sql.Types.INTEGER});
		throw new RuntimeException("我是运行期异常");//运行期例外(unchecked exception)事务默认回滚
	}
	
	public List<StudentBean> getAllStudent() {
		return jdbcTemplate.query("select * from student", new StudentRowMapper());
	}
	
	public StudentBean getStudent(Integer sid) {
		StudentBean sb = (StudentBean)jdbcTemplate.queryForObject("select * from student where id=?", new Object[]{sid}, new int[]{java.sql.Types.INTEGER}, new StudentRowMapper());
		return sb;
	}

	public void save(StudentBean student) {
		jdbcTemplate.update("insert into student(name,password) values(?,?)", 
				new Object[]{student.getName(),student.getPassword()}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.VARCHAR});
	}

	public void update(StudentBean student) {
		jdbcTemplate.update("update student set name=? where id=?", 
				new Object[]{student.getName(),5}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.INTEGER});
	}

}




配置文件

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:context="http://www.springframework.org/schema/context"    
  5.        xmlns:aop="http://www.springframework.org/schema/aop"  
  6.        xmlns:tx="http://www.springframework.org/schema/tx"  
  7.        xsi:schemaLocation="http://www.springframework.org/schema/beans   
  8.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  9.            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd   
  10.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd   
  11.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">             
  12.         
  13.         
  14.      
  15.         
  16.      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
  17.         <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>   
  18.         <property name="url" value="jdbc:mysql://localhost:3306/test"/>   
  19.         <property name="username" value="root"/>   
  20.         <property name="password" value=""/>   
  21.          <property name="initialSize" value="1"/>   
  22.          <property name="maxActive" value="500"/>   
  23.          <property name="maxIdle" value="1"/>   
  24.          <property name="minIdle" value="1"/>   
  25.      </bean>   
  26.     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
  27.        <property name="dataSource" ref="dataSource"/>   
  28.     </bean>   
  29.   
  30.     <!-- 采用基于xml方式 -->   
  31.     <tx:advice id="txadvice" transaction-manager="txManager">   
  32.         <tx:attributes>   
  33.             <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/>   
  34.             <tx:method name="*" />   
  35.         </tx:attributes>   
  36.     </tx:advice>   
  37.     <aop:config>   
  38.         <aop:pointcut id="transactionPointcut" expression="execution(* com.mingbai.service..*.*(..))"/>   
  39.         <aop:advisor advice-ref="txadvice" pointcut-ref="transactionPointcut"/>   
  40.     </aop:config>   
  41.             
  42.         
  43.     <bean id="studentService" class="com.mingbai.service.impl.StudentServiceImpl">   
  44.        <property name="dataSource"  ref="dataSource"></property>   
  45.     </bean>   
  46. </beans>  
分享到:
评论

相关推荐

    Spring2.5-中文参考手册chm

    Spring2.5版本是该框架的一个重要里程碑,它在2008年发布,带来了许多新特性和改进,提升了开发者在构建应用程序时的灵活性和效率。 **依赖注入(DI)和控制反转(IoC)** Spring的核心特性之一是依赖注入(Dependency...

    spring2.5的所有jar包

    9. **事务管理**:Spring 2.5的事务管理支持包括编程式和声明式两种方式,可以在不侵入业务代码的情况下实现事务的控制。 10. **国际化(i18n)支持**:Spring 2.5提供了更好的国际化支持,使得应用可以轻松地根据...

    Spring2.5实现事务管理(本地事务、分布式事务).doc

    Spring 2.5 实现事务管理(本地事务、分布式事务) Spring 框架提供了对事务管理的支持,它可以使得事务的管理变得更加简洁和灵活。事务管理是指在多个操作中维持一致性的机制,它可以确保在多个操作中,如果某个...

    Spring2.5 源代码

    Spring 2.5的事务管理是另一个重要的功能,它支持编程式和声明式事务管理,确保了在多层架构中的数据一致性。 通过对Spring 2.5源代码的深入研究,开发者不仅可以了解其工作原理,还能学习到良好的设计模式和最佳...

    spring2.5必备jar包

    总的来说,Spring 2.5版本是Spring发展过程中的一个重要里程碑,它不仅包含了丰富的特性,如依赖注入、事务管理、AOP,而且对JTA的支持也使得开发者可以在无需应用服务器的情况下处理复杂的分布式事务。虽然许多功能...

    spring 2.5框架图

    2. **AOP**:Spring的AOP模块提供了一种在不修改代码的情况下,实现横切关注点(如日志、事务管理)的方式。在Spring 2.5中,AOP支持更灵活的切入点表达式和更多类型的切面,如注解驱动的切面,这使得AOP更加易用和...

    spring 2.5中文帮助文档

    2. **AOP**:Spring的AOP支持允许开发者定义横切关注点,如日志记录、事务管理等,然后将这些关注点与业务逻辑分离。这增强了代码的可复用性和可维护性。 3. **Bean容器**:Spring Bean容器(ApplicationContext)...

    Spring2.5-中文参考手册chm.zip

    引入了`@Transactional`注解,允许在方法级别声明事务管理,简化了事务处理代码。 5. **容器改进**:Spring 2.5的IoC容器增强了对Java 5和6特性的支持,如泛型和注解。同时,提供了更强大的Bean定义合并功能,使得...

    struts1.2 + spring2.5 + hibernate3.2框架demo

    Struts1.2、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    这个过程中可能会遇到的挑战包括:配置文件的正确性、数据库连接问题、类加载顺序、事务管理等。解决这些问题需要对三个框架有深入的理解,同时也需要熟悉Java Web开发的基本流程。 总的来说,Struts2.1、Spring2.5...

    Spring2.5 中文文档 chm格式

    AOP是Spring用于实现横切关注点,如日志、事务管理的关键特性。在2.5版本中,AOP支持更灵活的切入点表达式,可以基于方法参数类型和注解进行匹配,增强了切面的可定制性。 除此之外,Spring2.5在MVC(Model-View-...

    spring2.5中文文档

    2. **AOP(Aspect-Oriented Programming, 面向切面编程)**:Spring 2.5支持AOP,允许开发者定义横切关注点,如日志、事务管理等,这些关注点可以被织入到多个业务对象中,降低了代码的冗余。 3. **XML配置与注解...

    Spring 2.5 AOP 例子

    Spring AOP提供了一种模块化和声明式的方式来实现横切关注点,如日志记录、事务管理、性能监控等。它通过切面(Aspect)将这些关注点与业务逻辑分离,降低了系统的耦合度。 二、类扫描功能 在Spring 2.5中,引入了...

    spring2.5常用包

    2. **AOP(Aspect-Oriented Programming)**:Spring 提供了面向切面编程的支持,允许开发者定义“切面”,这些切面可以跨越多个类的多个方法,实现如日志、事务管理等通用功能。@Aspect 和 @Before、@After、@...

    spring2.5 mvc_ibatis2

    3. Spring 2.5新特性:支持JSR-303 Bean Validation,提供注解驱动的事务管理,增强了AOP支持,以及对注解配置的进一步强化。 二、iBatis 2介绍 1. iBatis概念:iBatis是一个基于Java的持久层框架,它允许开发者...

    Spring2.5

    通过阅读《spring2.5+学习笔记.doc》和《黎活明__spring教程.ppt》以及《黎活明_struts2教程.ppt》,你可以更深入地了解Spring 2.5与Struts2的整合,以及在实际项目中如何有效地利用这些知识。尽管Spring框架已经...

    传智播客 spring2.5源代码_lib包

    这个"传智播客 spring2.5源代码_lib包"包含了Spring框架2.5版本的库文件,这些库文件对于理解Spring的工作原理、学习如何使用它以及进行相关开发非常有帮助。下面我们将深入探讨Spring 2.5的一些核心概念和功能。 1...

    传智播客 黎活明spring2.5 ppt

    2. **AOP(面向切面编程)**:Spring的另一个重要特性,允许开发者定义“切面”,即关注点的模块化,如日志、事务管理等。Spring 2.5对AOP进行了增强,支持注解式切面编程,如`@Aspect`、`@Before`、`@After`等,...

    Spring2.5开发PDF+Spring2.5CHM

    而`Spring2.5开发简明教程中文版.pdf`则可能是针对这个版本的一本实用教程,可以帮助读者深入理解Spring 2.5的各种特性和用法。结合这两个资源,开发者可以系统地学习和掌握Spring 2.5的核心概念和技术。

    Spring2.5+Hibernate3.2开发手册

    - **Spring2.5中文开发参考手册.chm**:这份文档会详细介绍Spring 2.5 的核心概念、配置、API使用以及如何在实际项目中应用Spring框架。 - **Hibernate_3.2.0_api.chm**:这份文档是Hibernate 3.2.0 的API参考,包含...

Global site tag (gtag.js) - Google Analytics