`
zhangfeilo
  • 浏览: 390875 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

spring3之JdbcTemplate AOP 事务

阅读更多

一、applicationContext.xml配置:定义事务和aop

 

<!-- 定义事务传播属性   -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="get*" propagation="NOT_SUPPORTED" read-only="true"/>
            <tx:method name="*"  />
        </tx:attributes>
    </tx:advice>
      <tx:annotation-driven transaction-manager="txManager"/>
<!--aop错误引入spring.jar-->
    <aop:config>
        <!-- 描述切入点 -->
        <!--
1)execution(* *(..))
表示匹配所有方法
2)execution(public * com. savage.service.UserService.*(..))
表示匹配com.savage.server.UserService中所有的公有方法
3)execution(* com.savage.server..*.*(..))
表示匹配com.savage.server包及其子包下的所有方法
-->
        <aop:pointcut id="transactionPointCut" expression="execution(* com.cn.ssm.dao2..*.*(..))"/>
        <aop:advisor pointcut-ref="transactionPointCut" advice-ref="txAdvice"/>
    </aop:config>

 

二、实现类UserDaoImpl.java

@Transactional

public class UserDaoImpl implements UserDao {

    @Transactional(rollbackFor = Exception.class)
    public void insertUser() throws Exception {
        jdbcTemplate.update("insert into user (name) values ('01');");
        jdbcTemplate.update("update user set name=a where id=0;");
    }
}

 

三、Test.java 测试

 

 

 public static void main(String[] args) throws Exception {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext_1.xml");
        UserDao userDaoImpl = (UserDao) context.getBean("userDaoImpl");
        userDaoImpl.insertUser();
     }

 

测试结果:

init:

deps-module-jar:

deps-ear-jar:

deps-jar:

compile-single:

run-main:

2011-11-26 1:22:38 org.springframework.context.support.AbstractApplicationContext prepareRefresh

信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1608e05: startup date [Sat Nov 26 01:22:38 CST 2011]; root of context hierarchy

2011-11-26 1:22:38 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from class path resource [applicationContext_1.xml]

2011-11-26 1:22:38 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons

信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@107ebe1: defining beans [dataSource,txManager,txAdvice,org.springframework.aop.config.internalAutoProxyCreator,transactionPointCut,org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0,jdbcTemplate,userDaoImpl]; root of factory hierarchy

2011-11-26 1:22:39 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]

2011-11-26 1:22:39 org.springframework.jdbc.support.SQLErrorCodesFactory <init>

信息: SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]

Exception in thread "main" org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [update user set name=a where id=0;]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'a' in 'field list'

        at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:233)

        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)

        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:406)

        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:518)

        at com.cn.ssm.dao2.UserDaoImpl.insertUser(UserDaoImpl.java:67)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

        at $Proxy0.insertUser(Unknown Source)

        at com.cn.ssm.bll.UserBll.main(UserBll.java:39)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'a' in 'field list'

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

        at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)

        at com.mysql.jdbc.Util.getInstance(Util.java:381)

        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)

        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)

        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)

        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)

        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)

        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)

        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1564)

        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1485)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)

        at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)

        at $java.sql.Statement$$EnhancerByProxool$$d984001c.executeUpdate(<generated>)

        at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(JdbcTemplate.java:508)

        at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(JdbcTemplate.java:1)

        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:395)

        ... 16 more

Java Result: 1

成功生成(总时间:3 秒)



整个insertUser()方法里执行的sql都回调。
0
2
分享到:
评论

相关推荐

    Spring AOP IOC源码笔记.pdf

    1.Spring入门和IOC介绍 2.对象依赖 3.AOP入门 4.JDBCTemplate和Spring事务 5.Spring事务原理 6.Spring事务的一个线程安全问题 7.IOC再回顾和面试题 8.AOP再回顾

    spring框架手动提交事务,jdbctample

    注意:只是jdbc自带的jdbctample,不能 用于整合mybatis框架的事务,我整合了,事务不起作用!!!! 按老师的说法是基于xml方式,但不准确,因为也用到了注解 &lt;aop:aspectj-autoproxy proxy-target-class="true"&gt;...

    Spring JDBC项目 带事务.分页,上传 下载

    BaseDao,jdbcTemplate,Spring AOP 事务 MVC分层 BaseDao,jdbcTemplate,Spring AOP,SpringMVC,JSP 事务

    springAop多数据源

    spring jdbcTemplate 多数据源切换数据库操作,junit测试。

    SSM框架教程Spring+SpringMVC+MyBatis全覆盖_Java热门框架视频教程

    5、Spring JDBCTemplate的基本使用 6、Spring AOP的介绍及其配置使用 7、Spring的声明式事务控制 8、SpringMVC的介绍及其快速入门 9、SpringMVC的数据请求和响应 10、SpringMVC的异常处理及其拦截器 11、MyBatis简介...

    Spring3.X编程技术与应用,完整扫描版

    全书分3篇共21章,具体内容包括:Spring环境的安装与使用、JSP与JSTL简介、 Spring基础概念与工具、用SpringJdbcTemplate访问数据库、使用Mayen工程、Spring MVC编程、基于 MVC的资源共享网站设计、Spring的AOP编程...

    java视频教程:spring框架精讲附加实战项目练习

    涉及IoC、DI、AOP、JdbcTemplate和事务管理等核心概念。同时讲解了xml和注解两种方式使用Spring的示例。通过Spring的入门程序介绍了Spring的 IoC 和 DI 的概念,介绍了Spring的基本模块。详细介绍了对象创建的细节和...

    spring4示例代码

    spring-3 演示使用动态代理模式实现面向切面编程 使用注解方式进行AOP编程及使用配置xml方式进行AOP编程 spring-4 演示了spring与JDBCTemplate配合使用 spring-5 演示了声明式事务及使用xml配置文件处理事务

    Spring.3.x企业应用开发实战(完整版).part2

    10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源的访问问题 10.7.2 Spring JDBC数据连接泄漏 10.7.3 通过DataSourceUtils获取数据连接 10.7.4 通过...

    Spring中文帮助文档

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.6.1. 理解AOP代理 6.7. 以编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ进行domain ...

    千锋JavaEE精讲之Spring框架实战教程

    涉及IoC、DI、AOP、JdbcTemplate和事务管理等核心概念。同时讲解了xml和注解两种方式使用Spring的示例。  通过Spring的入门程序介绍了Spring的IoC和DI的概念,介绍了Spring的基本模块。详细介绍了对象创建的...

    Spring思维导图.xmind

    2019年最新最详细的...提供了展现层 SpringMVC和持久层 Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架

    Spring高级之注解驱动开发视频教程

    它里面包含了Spring,SpringMVC,SpringData(事务),SrpingTest等等。 其中: Spring本身里面包含了两大核心IOC和AOP。IOC负责降低我们代码间的依赖关系,使我们的项目灵活度更高,可复用性更强。AOP是让方法间...

    Spring Boot实战与原理分析视频课程包含14-18

    --多种数据源的配置、JdbcTemplate、事务的处理 20 Spring Boot AOP 21 Spring Boot Starter18:31 --快速构建自定义的Spring Boot Starter 22 Spring Boot 日志30:58 --演示了如何在Spring Boot里面使用日志配置...

    Spring3.x企业应用开发实战(完整版) part1

    10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源的访问问题 10.7.2 Spring JDBC数据连接泄漏 10.7.3 通过DataSourceUtils获取数据连接 10.7.4 通过...

    SpringDemo:Spring 框架知识案例

    1.创建第一个 Spring 程序...3.Spring Bean案例 4.Spring 表达式语言案例 5.Spring xml 配置案例 6.Spring Annontation案例 7.Spring 泛型依赖注入案例 8.Spring AOP案例 9.Spring JDBCTemplate案例 10.Spring 事务案例

    尚硅谷佟刚Spring4代码及PPT.rar

    Bean、通过 FactoryBean 配置 Bean、通过注解配置 Bean、泛型依赖注入、AOP 基础、前置通知、后置通知、返回通知、异常通知、环绕通知、切面的优先级、切点表达式、使用 XML 文件的方式配置 AOP、使用 JdbcTemplate ...

    spring.doc

    3 Spring基本功能详解 8 3.1 SpringIOC 8 3.2别名Alias 11 别名拓展: 11 3.3 Spring容器内部对象的创建 12 Spring容器内部对象创建拓展: 12 3.3.1使用类构造器实例化(默认无参数) 14 3.3.2使用静态工厂方法实例化...

    Spring入门学习笔记|Spring学习.pdf

    Spring入门学习笔记,内容包括Spring介绍,Spring配置文件,Spring配置数据源,Spring的注解开发,Spring集成Junit,Spring的AOP,jdbcTemplate介绍,Spring控制事务流程,Spring集成web。

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1....

Global site tag (gtag.js) - Google Analytics