Spring动态调用

简介:

1.package com;  
2.  
3.public interface IComponent {  
4.public void  business1() ;  
5.public void  business2() ;  
6.public void  business3() ;  
7.} 


package com; 


1.public class Component implements IComponent{  
2.    public void business1() {  
3.        System.out.println("业务1");  
4.    }  
5.  
6.    public void business2() {  
7.        System.out.println("业务2");  
8.    }  
9.  
10.    public void business3() {  
11.        System.out.println("业务3");  
12.    }  
13.}  

package com


1.import java.lang.reflect.InvocationHandler;  
2.import java.lang.reflect.Method;  
3.import java.lang.reflect.Proxy;  
4.  
5.public class DynamicProxy implements InvocationHandler {  
6.    private Object obj;  
7.    //private DynamicProxy p;  
8.  
9.    public Object bindl(Object obj) {  
10.        this.obj = obj;  
11.        System.out.println("我是bind*****");  
12.    return  Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj  
13.                .getClass().getInterfaces(),this);// 用来动态装载invoke方法的  
14.        // return new DynamicProxy() ;  
15.        //创建代理类  实例化了一个代理类  
16.    }  
17.  
18.    // 动态调用的 不需要手的设置装载  
19.    public Object invoke(Object proxy, Method method, Object[] args)  
20.            throws Throwable {  
21.        // TODO Auto-generated method stub  
22.        // System.out.println(proxy.getClass());  
23.        // System.out.println(method.getClass());  
24.        Object result = null;  
25.        try {  
26.            valiateUser();  
27.            // System.out.println(proxy.getClass());  
28.            // System.out.println(args);  
29.            // System.out.println(method.getClass());  
30.            result = method.invoke(obj,args);// 调用方法 obj  
31.            // System.out.println(result);  
32.            System.out.println("************");  
33.        } catch (Exception e) {  
34.            e.printStackTrace();  
35.        }  
36.        return result;  
37.    }  
38.  
39.    public void valiateUser() {  
40.        System.out.println("验证用户。。。。");  
41.    }  
42.}  

package com;


1.public class TestD  {  
2.public static void main(String args[]){  
3.    DynamicProxy proxy = new DynamicProxy();  
4.    IComponent component=(IComponent) proxy.bindl(new Component());  
5.    component.business1();//先调用它的invoke方法  再在他的invoke方法里面加载类     
6.    component.business2();  
7.    component.business3();  
8.      
9.      
10.}  
11.}  

相关文章
|
6月前
|
Java 数据库 Spring
Spring Boot 实现定时任务的动态增删启停
Spring Boot 实现定时任务的动态增删启停
91 0
|
6月前
|
Ubuntu Java Linux
在Spring Boot中使用iTextPDF创建动态PDF文档
iTextPDF 是一个用于创建和操作 PDF(Portable Document Format)文档的流行的 Java 库。它提供了一套全面的功能,用于处理 PDF 文件,包括创建新文档、修改现有文档以及提取信息。
359 1
|
缓存 NoSQL Java
Spring Boot如何优雅实现动态灵活可配置的高性能数据脱敏功能
在当下互联网高速发展的时代下,涉及到用户的隐私数据安全越发重要,一旦泄露将造成不可估量的后果。所以现在的业务系统开发中都会对用户隐私数据加密之后存储落库,同时还要求后端返回数据给前台之前进行数据脱敏。所谓脱敏处理其实就是将数据进行混淆隐藏,如将用户的手机号脱敏展示为`178****5939,采用 * 进行隐藏,以免泄露个人隐私信息
1141 0
|
6月前
|
XML Java 数据格式
spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象
spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象
76 0
|
6月前
|
安全 数据安全/隐私保护
Springboot+Spring security +jwt认证+动态授权
Springboot+Spring security +jwt认证+动态授权
204 0
|
4月前
|
开发框架 自然语言处理 Java
如何在Spring Boot中实现动态多语言支持
如何在Spring Boot中实现动态多语言支持
|
5月前
|
Java Nacos 网络架构
Spring Cloud gateway 网关四 动态路由
Spring Cloud gateway 网关四 动态路由
|
6月前
|
Java 数据库 Spring
Spring Boot 实现定时任务的动态增删启停
Spring Boot 实现定时任务的动态增删启停
63 1
|
6月前
|
XML Java API
Spring Boot 整合 Quartz 实现 Java 定时任务的动态配置
Spring Boot 整合 Quartz 实现 Java 定时任务的动态配置
151 0
|
人工智能 监控 Java
SpringBoot实战(十三):Spring Boot Admin 动态修改日志级别
SpringBoot实战(十三):Spring Boot Admin 动态修改日志级别
455 0