package com;
public interface IComponent {
public void business1() ;
public void business2() ;
public void business3() ;
}
package com;
public class Component implements IComponent{
public void business1() {
System.out.println("业务1");
}
public void business2() {
System.out.println("业务2");
}
public void business3() {
System.out.println("业务3");
}
}
package com;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class DynamicProxy implements InvocationHandler {
private Object obj;
//private DynamicProxy p;
public Object bindl(Object obj) {
this.obj = obj;
System.out.println("我是bind*****");
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
.getClass().getInterfaces(),this);// 用来动态装载invoke方法的
// return new DynamicProxy() ;
//创建代理类 实例化了一个代理类
}
// 动态调用的 不需要手的设置装载
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
// System.out.println(proxy.getClass());
// System.out.println(method.getClass());
Object result = null;
try {
valiateUser();
// System.out.println(proxy.getClass());
// System.out.println(args);
// System.out.println(method.getClass());
result = method.invoke(obj,args);// 调用方法 obj
// System.out.println(result);
System.out.println("************");
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public void valiateUser() {
System.out.println("验证用户。。。。");
}
}
package com;
public class TestD {
public static void main(String args[]){
DynamicProxy proxy = new DynamicProxy();
IComponent component=(IComponent) proxy.bindl(new Component());
component.business1();//先调用它的invoke方法 再在他的invoke方法里面加载类
component.business2();
component.business3();
}
}
分享到:
相关推荐
Spring动态加载bean后调用实现方法解析 在 Spring 框架中,动态加载 bean 是一个非常实用的功能,特别是在我们需要在不改变原有程序结构的基础上添加新的 bean 的时候。通过使用 Spring 的 ...
Spring框架的一大特色就是其远程调用能力,这使得分布式系统的开发变得更加便捷。本实例将深入探讨Spring的远程调用功能,通过一个简单的例子来帮助理解其工作原理和实施步骤。 首先,我们要明确Spring远程调用...
在Java EE平台上,Spring框架提供了一种强大的方式来实现远程服务调用,特别是通过其HttpInvokerServiceExporter组件来实现基于HTTP的WebService功能。这个技术允许客户端和服务端通过HTTP协议进行通信,实现远程...
首先,我们需要理解什么是Spring远程调用。Spring Remote提供了一种机制,使得应用程序能够跨越网络边界调用其他服务的方法,仿佛它们是在同一进程中执行一样。HTTP远程调用是Spring Remote的一种实现方式,通过HTTP...
spring与java反射结合动态定义类及调用函数,实现类的动态定义和函数的动态调用。 为有动态调用的web应用提供一点点借鉴,相互学习。
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...
在Spring框架中,动态加载配置文件是一项重要的功能,它使得开发者在开发过程中无需重启应用就能实时更新配置,极大地提高了开发效率。热部署方案是这一功能的具体应用,它允许我们在不中断服务的情况下,对应用程序...
在分布式系统中,远程调用是一个常见需求,Spring为此提供了一种轻量级的解决方案——HttpInvoker。本文将详细讲解如何利用Spring的HttpInvoker进行远程方法调用。 首先,我们需要理解什么是Spring HttpInvoker。...
### 普通JavaWeb项目调用Spring Cloud接口详解 #### 前言 在现代软件开发中,微服务架构已成为构建大型复杂系统的主流选择之一。Spring Boot 和 Spring Cloud 作为构建微服务的重要工具,其易用性和强大的功能受到...
实现Springcloud向dubbo项目的接口调用。 FeignToDubbo-starter模块负责利用Feign将底层的Http协议转化为dubbo协议,供SpringCloud项目使用。引入FeignToDubbo-starter后会引入dubbo的依赖,使用注解DubboRefence...
在Java编程中,动态代理是一种强大的工具,它允许我们在运行时创建对象的代理,以便在调用实际方法之前或之后执行额外的操作。Spring框架提供了一种便捷的方式来实现动态代理,这使得我们可以在不修改原有代码的情况...
在Spring框架中,异步调用是一种提升应用性能和响应速度的重要技术。它允许你在不阻塞当前线程的情况下执行耗时的操作,从而提高系统的并发处理能力。本示例将探讨如何在Spring中实现异步调用,并通过具体的例子帮助...
最近项目中遇到需要去掉老系统的webservice服务中的insert方法,找了很久,发现这样最简单,实测有效!!!
标题“Spring的定时调用”涉及的是Spring框架中的任务调度功能,这在企业级应用开发中非常常见,用于实现周期性的任务执行,如数据同步、日志清理等。Spring提供了两种主要的定时任务解决方案:`Quartz`和`Spring ...
本文将探讨两种在Spring Boot中实现Controller间调用的方法及其优缺点。 首先,我们可以使用`RestTemplate`来模拟远程调用。这是一种常见的HTTP客户端工具,允许Controller A通过HTTP请求访问Controller B。以下是...
Spring 动态代理是 Spring 框架中的一个重要特性,它允许我们在运行时自动生成代理对象,以便在方法调用前后执行额外的操作,比如事务管理、AOP(面向切面编程)等。动态代理主要涉及两个核心接口:`java.lang....
本篇将深入探讨如何将Spring与CXF整合,以实现高效地调用Web Services。 1. **Spring框架**:Spring以其依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)为核心,提供了一...
本示例"SpringCloud微服务注册调用Demo"是针对初学者的一个入门教程,旨在帮助开发者快速理解并实践SpringCloud的核心功能。 首先,我们来详细了解一下SpringCloud的核心组件: 1. **Eureka**:它是SpringCloud的...