移:Spring AOP的简单例子
来源:互联网 发布:中国人口迁移数据 编辑:程序博客网 时间:2024/06/05 08:01
Spring AOP的简单例子
一个使用Spring AOP的简单例子
有一个UserLogger类,用于记录user信息:
public class UserLogger {
private String userName = "";
public void setUserName(String i) {
this.userName = i;
}
//记录用户信息
public void log() {
System.out.println("记录用户:" + this.userName);
}
}
在定义拦截器advicer,用于用户校验:
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class SecurityAdvice implements MethodBeforeAdvice {
private SecurityManager securityManager;
public SecurityAdvice() {
this.securityManager = new SecurityManager();
}
public void before(Method method, Object[] args, Object target) throws Throwable {
if(method.getName().equals("log")){
securityManager.check();
}
}
}
接着定义校验管理类:
public class SecurityManager {
//定义成ThreadLocal,因为SecurityAdvice中也new了SecurityManager
//可以把SecurityManager定义成singleton的就可以替代
private static ThreadLocal userName = new ThreadLocal();
private String password;
public void login(String name, String password){
userName.set(name);
this.password = password;
}
public void check() {
String u = (String)userName.get();
if (u == null) {
System.out.println("没有用户");
} else if ("KENT".equals(u)) {
System.out.println("Kent登陆成功");
} else {
System.out.println("用户:" + u + "没有权限");
}
}
}
最后是测试代码:
import org.springframework.aop.framework.ProxyFactory;
public class TestAOP {
public static void main(String[] args) {
SecurityManager manager = new SecurityManager();
//设置ProxyFactory的advice(aop方式),target(需要被aop调用的对象。)
UserLogger target = new UserLogger();
SecurityAdvice advice = new SecurityAdvice();
ProxyFactory proxyFactory = new ProxyFactory();
proxyFactory.setTarget(target);
proxyFactory.addAdvice(advice);
UserLogger bean = (UserLogger) proxyFactory.getProxy();
String userName = "KENT";
String password = "";
manager.login(userName, password);//保存了用户信息,未执行check方法
bean.setUserName(userName);
bean.log();//自动执行check()方法,AOP调用成功
userName = "TOM";
manager.login(userName, password);
bean.setUserName(userName);
bean.log();
}
}
上面完成了如下功能:用户登陆,打印Log信息,在打印Log信息前使用AOP进行用户校验
一个使用Spring AOP的简单例子
有一个UserLogger类,用于记录user信息:
public class UserLogger {
private String userName = "";
public void setUserName(String i) {
this.userName = i;
}
//记录用户信息
public void log() {
System.out.println("记录用户:" + this.userName);
}
}
在定义拦截器advicer,用于用户校验:
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class SecurityAdvice implements MethodBeforeAdvice {
private SecurityManager securityManager;
public SecurityAdvice() {
this.securityManager = new SecurityManager();
}
public void before(Method method, Object[] args, Object target) throws Throwable {
if(method.getName().equals("log")){
securityManager.check();
}
}
}
接着定义校验管理类:
public class SecurityManager {
//定义成ThreadLocal,因为SecurityAdvice中也new了SecurityManager
//可以把SecurityManager定义成singleton的就可以替代
private static ThreadLocal userName = new ThreadLocal();
private String password;
public void login(String name, String password){
userName.set(name);
this.password = password;
}
public void check() {
String u = (String)userName.get();
if (u == null) {
System.out.println("没有用户");
} else if ("KENT".equals(u)) {
System.out.println("Kent登陆成功");
} else {
System.out.println("用户:" + u + "没有权限");
}
}
}
最后是测试代码:
import org.springframework.aop.framework.ProxyFactory;
public class TestAOP {
public static void main(String[] args) {
SecurityManager manager = new SecurityManager();
//设置ProxyFactory的advice(aop方式),target(需要被aop调用的对象。)
UserLogger target = new UserLogger();
SecurityAdvice advice = new SecurityAdvice();
ProxyFactory proxyFactory = new ProxyFactory();
proxyFactory.setTarget(target);
proxyFactory.addAdvice(advice);
UserLogger bean = (UserLogger) proxyFactory.getProxy();
String userName = "KENT";
String password = "";
manager.login(userName, password);//保存了用户信息,未执行check方法
bean.setUserName(userName);
bean.log();//自动执行check()方法,AOP调用成功
userName = "TOM";
manager.login(userName, password);
bean.setUserName(userName);
bean.log();
}
}
上面完成了如下功能:用户登陆,打印Log信息,在打印Log信息前使用AOP进行用户校验
- 移:Spring AOP的简单例子
- Spring AOP 的简单例子
- Spring AOP 的简单例子
- Spring AOP 的简单例子
- Spring Aop 简单例子
- spring aop 简单例子
- Spring AOP 简单例子
- spring简单AOP例子
- 一个简单的Spring的AOP例子
- 一个简单的Spring的AOP例子
- 一个简单的Spring的AOP例子
- 一个简单的Spring的AOP例子
- 一个简单的Spring的AOP例子
- 一个简单的Spring的AOP例子
- 一个简单的Spring的AOP例子
- 一个简单的Spring的AOP例子
- 一个简单的Spring的AOP例子
- spring aop的最简单的例子
- 移:Naked Objects
- 移:使用Struts提交多行数据
- ASP.NET 2.0中将 GridView 导出到 Excel 文件中
- 移:AOP技术原理
- How can I put a checkbox in a column of my DataGrid?
- 移:Spring AOP的简单例子
- 移:使用Spring AOP实现MVC拦截器
- 移:扩展OGNL
- I want to do custom handling of special keys such as the Tab key or F2 in the TextBox of a column in the DataGrid. How do I subc
- 移:webwork的多行提交
- Web中使用javascript和vbscript访问activex控件
- 移:webwork的bug?
- DOS系统功能调用与BIOS中断调用
- 不要被历史所束缚,要走出去创造更美好的未来