bboss-persistent结合bboss-aop实现注解事务

简介: bboss-persistent结合bboss-aop也可以实现注解事务哦. 先看一个业务组件: package org.frameworkset.spi.transaction.annotation; import java.
bboss-persistent结合bboss-aop也可以实现注解事务哦.

先看一个业务组件:
package org.frameworkset.spi.transaction.annotation;

import java.sql.SQLException;

import com.frameworkset.common.poolman.DBUtil;
import com.frameworkset.orm.annotation.RollbackExceptions;
import com.frameworkset.orm.annotation.Transaction;
import com.frameworkset.orm.annotation.TransactionType;
import com.frameworkset.orm.transaction.TransactionManager;

/**
 * <p>Title: TXA.java</p> 
 * <p>Description: </p>
 * <p>bboss workgroup</p>
 * <p>Copyright (c) 2007</p>
 * @Date 2010-1-19 下午05:17:43
 * @author biaoping.yin
 * @version 1.0
 */
public class TXA 
{
    
    @Transaction(TransactionType.REQUIRED_TRANSACTION)
    @RollbackExceptions({"java.sql.SQLException","org.frameworkset.spi.transaction.Exception1"})
    public void executeTXDBFailed() throws SQLException
    {
        DBUtil db = new DBUtil();
        try
        {
        	System.out.println("executeTXDBFailed:"+TransactionManager.getTransaction());
            db.executeInsert("insert into char_table(id) values(2) ");
            db.executeDelete("delete ar_table wher id=4");
        }
        catch (SQLException e)
        {
            throw e;
        }
    }
    
    @Transaction    
    public void executeDefualtTXDB() throws SQLException
    {
        DBUtil db = new DBUtil();
        try
        {
            db.executeInsert("insert into char_table(id) values(2) ");
            db.executeDelete("delete from char_table where id=4");
            System.out.println("executeTXDBFailed:"+TransactionManager.getTransaction());
        }
        catch (SQLException e)
        {
            throw e;
        }
    }
    
    @Transaction(TransactionType.REQUIRED_TRANSACTION)
    @RollbackExceptions({"java.sql.SQLException","org.frameworkset.spi.transaction.Exception1"})
    public void executeTxDB() throws SQLException
    {
        DBUtil db = new DBUtil();
        try
        {
            db.executeSelect("select * from char_table where id=2");
            System.out.println("db.size()="+ db.size());
            db.executeInsert("insert into char_table(id) values(3) ");
            db.executeInsert("insert into char_table(id) values(4) ");
            db.executeDelete("delete from char_table where id=3");
            System.out.println("executeTxDB:"+TransactionManager.getTransaction());
        }
        catch (SQLException e)
        {
            throw e;
        }
    }
}


再看一下aop配置文件org/frameworkset/spi/transaction/annotation /annotationtx.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>
<properties>
	<property name="annotation.test" singlable="true" class="org.frameworkset.spi.transaction.annotation.TXA"/>
</properties>


再看看测试用例:
package org.frameworkset.spi.transaction.annotation;

import java.sql.SQLException;

import org.frameworkset.spi.ApplicationContext;
import org.junit.Test;

/**
 * <p>Title: TestAnnotationTx.java</p> 
 * <p>Description: </p>
 * <p>bboss workgroup</p>
 * <p>Copyright (c) 2007</p>
 * @Date 2010-1-19 下午05:12:03
 * @author biaoping.yin
 * @version 1.0
 */
public class TestAnnotationTx
{
	ApplicationContext context = ApplicationContext.getApplicationContext("org/frameworkset/spi/transaction/annotation/annotationtx.xml");
    @Test
    public void testTxfailed()
    {
        TXA ai = (TXA)context.getBeanObject("annotation.test");
        try
        {
            ai.executeTXDBFailed();
        }
        catch (SQLException e)
        {   
            e.printStackTrace();
        }
    }
    @Test
    public void testTx()
    {
        
        TXA ai = (TXA)context.getBeanObject("annotation.test");
        try
        {
            ai.executeTxDB();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
    
    @Test
    public void testDefualtTx()
    {
        TXA ai = (TXA)context.getBeanObject("annotation.test");
        try
        {
            ai.executeDefualtTXDB();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }    
}

可到sourceforge下载测试用例,测试用例包含在最新版本bbossgroups-3.4,下载地址:
http://sourceforge.net/projects/bboss/files/
目录
相关文章
|
2月前
|
Java API 数据安全/隐私保护
(工作经验)优雅实现接口权限校验控制:基于自定义注解、AOP与@ConditionalOnProperty配置开关的通用解决方案
(工作经验)优雅实现接口权限校验控制:基于自定义注解、AOP与@ConditionalOnProperty配置开关的通用解决方案
63 1
|
2月前
|
XML Java 数据格式
使用完全注解的方式进行AOP功能实现(@Aspect+@Configuration+@EnableAspectJAutoProxy+@ComponentScan)
本文介绍了如何使用Spring框架的注解方式实现AOP(面向切面编程)。当目标对象没有实现接口时,Spring会自动采用CGLIB库进行动态代理。文中详细解释了常用的AOP注解,如`@Aspect`、`@Pointcut`、`@Before`等,并提供了完整的示例代码,包括业务逻辑类`User`、配置类`SpringConfiguration`、切面类`LoggingAspect`以及测试类`TestAnnotationConfig`。通过这些示例,展示了如何在方法执行前后添加日志记录等切面逻辑。
146 2
使用完全注解的方式进行AOP功能实现(@Aspect+@Configuration+@EnableAspectJAutoProxy+@ComponentScan)
|
26天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
36 1
|
2月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
66 2
|
7月前
|
运维 Java 程序员
Spring5深入浅出篇:基于注解实现的AOP
# Spring5 AOP 深入理解:注解实现 本文介绍了基于注解的AOP编程步骤,包括原始对象、额外功能、切点和组装切面。步骤1-3旨在构建切面,与传统AOP相似。示例代码展示了如何使用`@Around`定义切面和执行逻辑。配置中,通过`@Aspect`和`@Around`注解定义切点,并在Spring配置中启用AOP自动代理。 进一步讨论了切点复用,避免重复代码以提高代码维护性。通过`@Pointcut`定义通用切点表达式,然后在多个通知中引用。此外,解释了AOP底层实现的两种动态代理方式:JDK动态代理和Cglib字节码增强,默认使用JDK,可通过配置切换到Cglib
|
4月前
|
XML Java 数据库
Spring5入门到实战------10、操作术语解释--Aspectj注解开发实例。AOP切面编程的实际应用
这篇文章是Spring5框架的实战教程,详细解释了AOP的关键术语,包括连接点、切入点、通知、切面,并展示了如何使用AspectJ注解来开发AOP实例,包括切入点表达式的编写、增强方法的配置、代理对象的创建和优先级设置,以及如何通过注解方式实现完全的AOP配置。
|
6月前
|
XML 安全 Java
Spring高手之路19——Spring AOP注解指南
在本文中,我们将深入探索Spring AOP(面向切面编程)的核心概念及其在现代Spring应用中的实际应用。从基本的注解使用到复杂的切面配置,本文将一步步指导你如何利用Spring AOP提升代码的模块化,帮助你在Spring开发路上更进一步。
83 3
Spring高手之路19——Spring AOP注解指南
|
6月前
|
Java Spring 容器
基于注解的Aop开发,实现aop快速入门,基于注解的AOP开发
基于注解的Aop开发,实现aop快速入门,基于注解的AOP开发
|
5月前
|
分布式计算 Java MaxCompute
详解 Java 限流接口实现问题之在Spring框架中使用AOP来实现基于注解的限流问题如何解决
详解 Java 限流接口实现问题之在Spring框架中使用AOP来实现基于注解的限流问题如何解决
|
7月前
|
Java 开发者 Spring
面向切面编程(SpringAOP)、通过注解实现AOP代码、AOP的工作流程
面向切面编程(SpringAOP)、通过注解实现AOP代码、AOP的工作流程
83 1
面向切面编程(SpringAOP)、通过注解实现AOP代码、AOP的工作流程