- 论坛徽章:
- 0
|
最近闲着没事,就把之前自己弄的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 |
|