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.}  

相关文章
|
4月前
|
Ubuntu Java Linux
在Spring Boot中使用iTextPDF创建动态PDF文档
iTextPDF 是一个用于创建和操作 PDF(Portable Document Format)文档的流行的 Java 库。它提供了一套全面的功能,用于处理 PDF 文件,包括创建新文档、修改现有文档以及提取信息。
96 1
|
7月前
|
缓存 NoSQL Java
Spring Boot如何优雅实现动态灵活可配置的高性能数据脱敏功能
在当下互联网高速发展的时代下,涉及到用户的隐私数据安全越发重要,一旦泄露将造成不可估量的后果。所以现在的业务系统开发中都会对用户隐私数据加密之后存储落库,同时还要求后端返回数据给前台之前进行数据脱敏。所谓脱敏处理其实就是将数据进行混淆隐藏,如将用户的手机号脱敏展示为`178****5939,采用 * 进行隐藏,以免泄露个人隐私信息
199 0
|
5月前
|
XML Java 数据格式
spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象
spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象
36 0
|
消息中间件 Java Kafka
Spring Boot集成Kafka动态创建消费者与动态删除主题(实现多消费者的发布订阅模型)
Spring Boot集成Kafka动态创建消费者与动态删除主题(实现多消费者的发布订阅模型)
17110 1
Spring Boot集成Kafka动态创建消费者与动态删除主题(实现多消费者的发布订阅模型)
|
1月前
|
安全 数据安全/隐私保护
Springboot+Spring security +jwt认证+动态授权
Springboot+Spring security +jwt认证+动态授权
|
4月前
|
存储 NoSQL Java
Spring Boot动态秒杀系统接口安全性设计与实现
Spring Boot动态秒杀系统接口安全性设计与实现
64 0
|
9月前
|
人工智能 监控 Java
SpringBoot实战(十三):Spring Boot Admin 动态修改日志级别
SpringBoot实战(十三):Spring Boot Admin 动态修改日志级别
352 0
|
4月前
|
Java 数据库连接 数据库
【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据源的静态数据源和动态数据源配置落地
Mybatis是一个基于JDBC实现的,支持普通 SQL 查询、存储过程和高级映射的优秀持久层框架,去掉了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。 Mybatis主要思想是将程序中大量的 SQL 语句剥离出来,配置在配置文件中,以实现 SQL 的灵活配置。在所有 ORM 框架中都有一个非常重要的媒介——PO(持久化对象),PO 的作用就是完成持久化操作,通过该对象对数据库执行增删改的操作,以面向对象的方式操作数据库。
47 1
【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据源的静态数据源和动态数据源配置落地
|
5月前
|
SQL Java Spring
Spring Data JPA之JpaSpecificationExecutor复杂动态查询实例
Spring Data JPA之JpaSpecificationExecutor复杂动态查询实例
34 0
|
7月前
|
Cloud Native Java Go
使用Nacos配置中心动态管理Spring Boot应用配置
使用Nacos配置中心动态管理Spring Boot应用配置
77 1