`
别惹Java
  • 浏览: 45679 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring的那些配置(事务和日志)

 
阅读更多

Spring整合Ibatis典型的配置文件

<?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: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.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">


	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql:///test?useUnicode=true&amp;characterEncoding=utf-8" />
		<property name="username" value="root" />
		<property name="password" value="root" />
		<property name="maxActive" value="100" />
		<property name="maxIdle" value="30" />
		<property name="maxWait" value="10000" />
		<property name="defaultAutoCommit" value="false" /> <!--设置自动提交 -->
	</bean>

	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation">
			<value>classpath:sqlMap-config.xml</value>
		</property>
		<property name="dataSource" ref="dataSource" />
	</bean>

	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 事务通知      要注明rollback-for类型,并不是所有的异常都回滚的 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED" rollback-for="Throwable"/>
			<tx:method name="del*" propagation="REQUIRED" rollback-for="Throwable"/>
			<tx:method name="mod*" propagation="REQUIRED" rollback-for="Throwable"/>
			<!--除了上面标识的方法,其他方法全是只读方法-->
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<!-- 日志Bean -->
	<bean id="logService" class="com.ksfzhaohui.load.LogService"></bean>

	<!-- Spring AOP config -->
	<aop:config>
		<!-- 配置哪些类的方法需要进行事务管理 --> 
		<aop:pointcut id="newServicesPointcut"
			expression="execution(* com.ksfzhaohui.service.impl.*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="newServicesPointcut" />

		<!-- 日志管理 -->
		<aop:aspect id="myAspect" ref="logService">
			<aop:pointcut expression="execution(* com.ksfzhaohui.service.impl.*.*(..))"
				id="logPointCut" />
			<aop:before method="before" pointcut-ref="logPointCut" />
			<aop:after method="after" pointcut-ref="logPointCut" />
		</aop:aspect>
	</aop:config>

</beans>



1.Spring的事务配置
Spring使用 <tx:advice>和 <aop:config> 用来配置事务,具体如何配置你可以参考Spring文档
关于这里的expression="execution(* com.ksfzhaohui.service.impl.*.*(..))"分析
第一个*,表示任何返回值类型
第二个*,表示com.ksfzhaohui.service.impl包下的任何类
第三个*,表示com.ksfzhaohui.service.impl包下的任何类下的任意方法
最后的(..),表示方法可以有0个或多个参数

<tx:advice>中的相关属性

属性 是否需要 默认值 描述
name 与事务属性关联的方法名。
propagation 不是 REQUIRED 事务传播行为
isolation 不是 DEFAULT 事务隔离级别
timeout 不是 -1 事务超时的时间(以秒为单位)
read-only 不是 false 事务是否只读
rollback-for 不是 将被触发进行回滚的 Exception(s)以逗号分开。 
no-rollback-for 不是 不被触发进行回滚的 Exception(s)以逗号分开。 

 

 

2.日志配置

<aop:before>,<aop:after>分别表示在方法执行之前和之后要执行的内容

    典型案例

public class LogService {

	static final Log log = LogFactory.getLog(LogService.class);

	public void before(JoinPoint joinPoint) {
		StringBuffer sb=new StringBuffer();
		sb.append("logInfo--调用类" + joinPoint.getTarget().getClass().getName()+"--方法" + joinPoint.getSignature().getName());
		Object args[] = joinPoint.getArgs();
		for (int i = 0; i < args.length; i++) {
			sb.append("--参数" + i + ":" + args[i]);
		}
		log.info(sb);
	}

	public void after(JoinPoint joinPoint) {
		log.info("结束方法:" + joinPoint.getSignature().getName());
	}
}
 
分享到:
评论

相关推荐

    spring事务与数据库操作

    - **配置事务管理器**:接下来,需要配置一个事务管理器(如`DataSourceTransactionManager`),它负责管理事务的开始、提交和回滚。 - **配置事务规则**:最后,需要配置事务规则,指定哪些方法需要在事务中执行。 ...

    Spring 事务代理配置

    在深入探讨Spring事务代理配置之前,我们先简要回顾一下Spring...通过以上步骤,我们就可以在Spring中成功配置事务代理,使得应用程序中的业务方法能够自动进行事务管理,极大地提高了代码的可维护性和事务的一致性。

    Spring事务与Java事务比较

    它支持多种事务传播行为(如 PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW 等),可以根据不同的业务场景灵活配置事务的范围。此外,Spring 还提供了事务回滚规则,允许基于异常类型或异常实例来决定是否回滚...

    spring搭建分布式事务所需嘉宝atomikos加druid配置分布式事务

    在构建大型分布式系统时,确保数据的一致性和完整性至关重要,这就是分布式事务的用武之地。Spring框架提供了多种实现分布式...同时,良好的日志和监控机制也是必不可少的,以便在出现问题时能够快速定位和解决问题。

    Spring自定义切面事务问题

    3. **解决方案:正确配置事务切面的顺序** - 在Spring中,事务管理器本身也可以被看作是一种切面,它负责在合适的时候开启和提交事务。因此,当有多个切面需要被应用到同一个方法上时,切面的执行顺序就显得尤为...

    使用Spring配置文件实现AOP

    在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...

    Spring事务管理开发必备jar包

    在Spring框架中,事务管理是实现业务逻辑时不可或缺的一部分,它确保了数据的一致性和完整性。本资源包提供了进行Spring事务管理开发所需的所有关键库,包括框架基础、核心组件、AOP(面向切面编程)支持、日志处理...

    Spring aop、jdbc和事务tx练习

    - 一个Spring配置文件,定义了bean、AOP切面、数据源和事务管理器。 - 使用了@Autowired注解自动装配Bean的Java类,展示了依赖注入。 - 针对AOP的切面类,定义了通知(advice)并指定了切入点(pointcut)。 - 使用...

    Spring 框架的事务管理及应用

    Spring框架的核心功能包括一个容器、一个用于配置和组织组件的框架,以及一系列内置于框架中的服务,如事务管理、持久化支持和Web用户界面服务。作为一个轻量级的J2EE框架,Spring为构建和组织J2EE应用程序提供了一...

    Spring+Spring依赖jar包+Spring日志

    关于日志,Spring框架本身并不直接提供日志功能,但它支持多种日志框架,如Log4j、Java Util Logging和SLF4J。在使用Spring时,你需要添加对应日志框架的jar包,例如`log4j.jar`或`slf4j-api.jar`以及相应的实现库,...

    Spring配置文件集合

    7. `spring-aop.xml`: 用于配置Spring的AOP(面向切面编程)相关设置,如定义切面、通知类型等,使得我们可以进行横切关注点的处理,如日志记录、事务管理等。 8. `log4j.xml`: 该文件是Log4j的日志配置,定义了...

    spring基于AOP实现事务

    1. **定义事务配置**:在Spring配置文件中,我们需要配置事务管理器。通常,对于Spring JDBC或者Hibernate,我们会使用PlatformTransactionManager,如DataSourceTransactionManager。 ```xml ...

    Spring_tx事务

    要启用声明式事务管理,我们需要在Spring配置文件中定义事务管理器,并启用基于注解的事务处理。 在Spring_day3_tx这个压缩包中,可能包含了一些关于Spring事务管理的示例代码或者教程资料,包括如何配置事务管理器...

    spring基于AspectJ实现事务控制

    在企业级Java应用开发中,Spring框架以其强大的功能和易用性成为了不可或...然而,使用时也要注意合理配置事务属性,避免不必要的事务范围扩大,以及对事务边界和异常处理的合理设计,以确保系统的稳定性和数据一致性。

    Spring4 jar包和Spring配置文件

    总结来说,Spring框架是一个强大的工具,通过合理配置和使用其提供的jar包,可以有效地管理项目中的依赖,实现灵活的事务管理,创建高效、解耦的代码结构。深入学习Spring4的jar包和配置文件,将使你更好地驾驭Java...

    spring-study-全日志输出的jar包

    `spring-beans.jar`提供了Bean定义和配置的相关支持,包括XML和注解配置的处理。日志会展示配置信息如何被读取并转化为Bean实例。 `spring-test.jar`提供了测试支持,让我们能够方便地进行单元测试和集成测试。在...

    SPRING事务机制DEMO

    2. **声明式事务管理**:这是Spring最常用的事务管理方式,通过配置元数据(XML或注解)来定义事务边界。例如,使用`@Transactional`注解在方法上,Spring会自动处理事务的开启、提交、回滚。这种做法简单易用,且...

    Spring ax/aop声明式事务配置实例

    AOP允许我们在程序运行时动态地将代码插入到其他对象中,它主要用来处理那些具有横切关注点的问题,如日志、异常处理和事务管理。在Spring中,AOP通过代理机制实现,可以创建两种类型的代理:JDK动态代理和CGLIB代理...

    Spring--事务操作.pdf

    在Spring配置文件中配置事务管理器需要引入名称空间tx,并开启事务注解支持。使用注解声明式事务管理,需要在service类上添加@Transactional注解,该注解可以配置事务相关参数,包括事务的传播行为(propagation)、...

Global site tag (gtag.js) - Google Analytics