spring-7-aop-4-jdk

xiaoxiao2021-02-28  155

package com.aop.jdk; public interface IUserDao { public void saveUser(User user); public void deleteUser(Integer id); public void updateUser(Integer id, User user); } package com.aop.jdk; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

package com.aop.jdk; public class UserDaoImpl implements IUserDao{ @Override public void saveUser(User user) { // System.out.println("提交日志"); System.out.println("保存的用户信息:"+user); // System.out.println("日志提交成功"); } @Override public void deleteUser(Integer id) { // System.out.println("提交日志"); System.out.println("删除的用户id:"+id); // System.out.println("日志提交成功"); } @Override public void updateUser(Integer id, User user) { // System.out.println("提交日志"); System.out.println("更新的用户信息:"+user); // System.out.println("日志提交成功"); } public static void main(String[] args) { UserDaoImpl udi = new UserDaoImpl(); User user = new User(); udi.saveUser(user); System.out.println("================"); udi.deleteUser(1); System.out.println("================"); udi.updateUser(1, user); } }

package com.aop.jdk; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; /** * 在JDK1.3以后在他java.lang.reflect里面提供了一个口InvocationHandler 和一个Proxy类 * 1:它是基于接口编程。你类必须要要有一个接口(必要条件)(IUserDao必须是一个接口) * 2:Handler类,专门去处理所以的类,通过反射动态执行对应目标类的方法(UserServiceImpl的对象),它 * 必须要实现一个接口InvocationHandler * public Object invoke(Object proxy, Method method, Object[] args) * 3:通过代理类动态执行接口里面 * */ public class UserHandler implements InvocationHandler{ private Object target; public UserHandler(Object target){ this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("在调用方法之前执行"); Object object = method.invoke(target, args); System.out.println("在调用方法之后执行"); return object; } }

package com.aop.jdk; import java.lang.reflect.Proxy; public class Test { public static void main(String[] args) { IUserDao userDao = new UserDaoImpl(); UserHandler userHandler = new UserHandler(userDao); IUserDao proxy = (IUserDao) Proxy.newProxyInstance(userDao.getClass().getClassLoader(), userDao.getClass().getInterfaces(), userHandler); User user = new User(); proxy.saveUser(user); System.out.println("================"); proxy.deleteUser(1); System.out.println("================"); proxy.updateUser(1, user); } }
转载请注明原文地址: https://www.6miu.com/read-50163.html

最新回复(0)