JDK动态代理
来源:互联网 发布:mac怎么下软件 编辑:程序博客网 时间:2024/05/17 01:05
- package com.rx.spring.dynamicproxy;
- public interface UserManager {
- public void addUser(String username, String password);
- public void deleteUser(int id);
- }
- package com.rx.spring.dynamicproxy;
- public class UserManagerImpl implements UserManager {
- public void addUser(String username, String password) {
- System.out.println("-------UserManagerImpl.addUser()----------");
- }
- public void deleteUser(int id) {
- System.out.println("-------UserManagerImpl.deleteUser()----------");
- }
- }
- package com.rx.spring.dynamicproxy;
- import java.lang.reflect.InvocationHandler;
- import java.lang.reflect.Method;
- import java.lang.reflect.Proxy;
- public class SecurityHandler implements InvocationHandler {
- private Object targetObject;
- public Object newProxy(Object targetObject) {
- this.targetObject = targetObject;
- return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
- targetObject.getClass().getInterfaces(),
- this);
- }
- @Override
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- // 调用前置函数
- checkSecurity();
- Object ret = null;
- try {
- ret = method.invoke(this.targetObject, args);
- }catch(Exception e) {
- e.printStackTrace();
- throw new java.lang.RuntimeException(e);
- }
- return ret;
- }
- private void checkSecurity() {
- System.out.println("----------checkSecurity()---------------");
- }
- }
- package com.rx.spring.dynamicproxy;
- public class Client {
- public static void main(String[] args) {
- SecurityHandler handler = new SecurityHandler();
- // 返回的是代理对象,可以通过调试进行观察
- UserManager userManager = (UserManager)handler.newProxy(new UserManagerImpl());
- //System.out.println(userManager);
- userManager.deleteUser(1);
- // 测试不使用代理的情况
- UserManager userManager1 = new UserManagerImpl();
- //System.out.println(userManager1);
- userManager1.deleteUser(1);
- }
- }
运行结果:
- ----------checkSecurity()---------------
- -------UserManagerImpl.deleteUser()----------
- -------UserManagerImpl.deleteUser()----------
注:参看传智播客
- 代理模式,JDK动态代理
- Java动态代理--jdk代理
- 代理模式-JDK动态代理
- JDK中的动态代理
- JDK动态代理
- JDK动态代理
- JDK动态代理
- jdk动态代理(暂)
- JDK动态代理
- JDK动态代理实例
- jdk 动态代理
- JDK动态代理
- JDK动态代理说明
- jdk动态代理
- JDKDynamicProxy JDK动态代理
- JDK动态代理实现
- JDK 动态代理
- JDK动态代理
- AutoCAD: Professional Tips and Techniques
- Windows Vista: The Definitive Guide [ILLUSTRATED]
- Apollo for Adobe Flex Developers Pocket Guide
- 不喜欢也得忍着
- Active and Programmable Networks for Adaptive Architectures and Services (
- JDK动态代理
- Business Strategies for the Next-Generation Network
- Complete Guide to CISM Certification
- Context-Aware Pervasive Systems: Architectures for a New Breed of Applications
- 微软全球副总裁沈向洋畅谈“探寻企业成功之路”
- [双语阅读]“恶搞版”《纽约时报》称伊战结束
- Wireless Mesh Networking: Architectures, Protocols and Standards
- Professional VMwareServer (Programmer to Programmer)
- Integrating and Extending BIRT (The Eclipse Series)