免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1325 | 回复: 0
打印 上一主题 下一主题

spring AOP 简单例子 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-06 11:47 |只看该作者 |倒序浏览
最近闲着没事,就把之前自己弄的spring的aop给看了一下,呵呵用的是jdk1.4的版本,这个例子只是用aop做了一个数据库打开和关闭的拦截。
1.定义一个数据库链接类如下:
    package db;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
public class ConnectionManager {
    private DataSource datasource;
   
    public void setDatasource(DataSource ds){
        this.datasource = ds;
    }
    public  Connection getCon(){
        Connection con = null;
        try {
            con = this.datasource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }
}
2定义数据库开启的前置before 如下:
package db;
import java.lang.reflect.Method;
import manager.DaoManager;
import org.springframework.aop.MethodBeforeAdvice;
public class BeginConnManager implements MethodBeforeAdvice {
    private ConnectionManager cm;
    public void setCm(ConnectionManager cm){this.cm = cm;}
    public void before(Method method, Object[] params, Object obj) throws Throwable {
        DaoManager dm = (DaoManager)obj;
        System.out.println(cm.getCon());
        dm.setConnection(cm.getCon());
        System.out.println("[INFO] connection is opened for "+method.getName());
    }
}
3定义后置增强after如下:
package db;
import java.lang.reflect.Method;
import manager.DaoManager;
import org.springframework.aop.AfterReturningAdvice;
public class AfterConnManager implements AfterReturningAdvice{
    public void afterReturning(Object returnobj, Method method, Object[] params, Object obj) throws Throwable {
        DaoManager dm = (DaoManager)obj;
        dm.getConnection().close();
        System.out.println("[INFO] connection is closed for "+method.getName());
    }
}
4辅助类:
package manager;
import java.sql.Connection;
public class DaoManager {
    private Connection con ;
    public void setConnection(Connection cm){
        this.con = cm;
    }
    public Connection getConnection(){
        return con;
    }
}
application.xml如下:
   
   
        
            org.gjt.mm.mysql.Driver
        
        
            jdbc:mysql://localhost:3306/kaoshi
        
        
            root
        
        
            
        
   
   
   
        
            
        
   
   
        
            
        
   
   
   
   
        
            
        
        
            .*do.*
        
   
   
        
            
        
        
            .*do.*
        
   
   
   
   
   
开始测试了,写个测试类如下:
package manager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class GetconnectTest extends DaoManager {
   
    public void doSearchAll(){
        try {
            Statement st = getConnection().createStatement();
            ResultSet rs = st.executeQuery("select * from admin");
            if(rs.next()){
                System.out.println("ok!");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
   
    public static void main(String args[]){
        ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml");
        GetconnectTest gt = (GetconnectTest) ctx.getBean("contest");
        gt.doSearchAll();
    }
}
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/20045/showart_728228.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP