Spring代理方式2
2015-11-20 23:11
288 查看
一:UserService.java
二:UserServiceImpl.java
package com.cloud.demo6;
public class UserServiceImpl implements UserService{
@Override
public void querUsers() {
System.out.println("UserServiceImpl.querUsers()");
}
@Override
public void saveUser() {
System.out.println("UserServiceImpl.saveUser()");
}
@Override
public void deleteUser() {
System.out.println("UserServiceImpl.deleteUser()");
}
}
三:LogJdkProxy.java
package com.cloud.demo6;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class LogJdkProxy implements InvocationHandler{
private Object target;
public LogJdkProxy(Object target){
this.target=target;
}
/**
* 创建代理对象
* @return
*/
public Object createProxyInstance(){
return Proxy.newProxyInstance(getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("操作前");
//执行原始对象方法
Object result=method.invoke(target, args);
System.out.println("操作后");
return result;
}
}
四:MainTest.java
package com.cloud.demo6;
import org.junit.Test;
public class MainTest {
@Test
public void test1() throws Exception {
UserService userService=new UserServiceImpl();
userService=(UserService) new LogJdkProxy(userService).createProxyInstance();
userService.querUsers();
}
}
package com.cloud.demo6; public interface UserService { void querUsers(); void saveUser(); void deleteUser(); } |
package com.cloud.demo6;
public class UserServiceImpl implements UserService{
@Override
public void querUsers() {
System.out.println("UserServiceImpl.querUsers()");
}
@Override
public void saveUser() {
System.out.println("UserServiceImpl.saveUser()");
}
@Override
public void deleteUser() {
System.out.println("UserServiceImpl.deleteUser()");
}
}
三:LogJdkProxy.java
package com.cloud.demo6;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class LogJdkProxy implements InvocationHandler{
private Object target;
public LogJdkProxy(Object target){
this.target=target;
}
/**
* 创建代理对象
* @return
*/
public Object createProxyInstance(){
return Proxy.newProxyInstance(getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("操作前");
//执行原始对象方法
Object result=method.invoke(target, args);
System.out.println("操作后");
return result;
}
}
四:MainTest.java
package com.cloud.demo6;
import org.junit.Test;
public class MainTest {
@Test
public void test1() throws Exception {
UserService userService=new UserServiceImpl();
userService=(UserService) new LogJdkProxy(userService).createProxyInstance();
userService.querUsers();
}
}
相关文章推荐
- Java成员变量默认值
- 排序算法学习总结
- SpringSecurity3.1入门教程(一)
- Java中的final关键字
- 【Java多线程编程】选号程序
- Java基础算法集50题
- JAVA--集合(Collection)
- java中的内存分配浅析
- eclipse运行单独的java文件
- Java中HashMap,LinkedHashMap,TreeMap的区别
- ubuntu java 环境变量设置
- java深坑总结
- 关于java的多态实现
- 最长递增子序列 动态规划 java代码
- Struts2的namespace+路径问题
- 【JAVA】第三方工具库【索引】
- Java 实现Excel表数据的读取和写入 以及过程中可能遇到的问题
- java基础多线程
- 慕课网 JAVA 第一季 语法基础
- Spring mvc 笔记 @Controller @ModelAttribute @SessionAttributes @ControllerAdvice