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.}
时间: 2024-08-19 12:01:21

Spring动态调用的相关文章

java-SSH Action 动态调用 参数 404异常

问题描述 SSH Action 动态调用 参数 404异常 1. 异常情况: 1. There is no Action mapped for namespace [/dd] and action name [laladList] associated with context path [/baee]. - [unknown location] 1. at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy

动态调用web服务

    通常我们在程序中需要调用WebService时,都是通过"添加Web引用",让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名.参数绑定在一起了,这是VS.NET自动为我们生成Web服务代理的限制.如果哪一天发布Web服务的URL改变了,则我们需要重新让VS.NET生成代理,并重新编译.在某些情况下,这可能是不能忍受的,我们需要动态调用WebService的能力.比如我们可以把Web服务的URL保存在配置

利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

在C#中动态调用native dll的导出函数

动态|函数 在 C++ 中我们能够通过 LoadLibrary,  GetProcAddress 来动态调用 dll 的导出函数.在 C# 中也能够用这样的方式吗?在 DotNet 2.0 里面这样是可以的, 这完全得益于 2.0新增的一个函数Marshal.GetDelegateForFunctionPointer 方法 此方法在 .NET Framework 2.0 版中是新增的. 将非托管函数指针转换为委托. 实例代码如下: public delegate int MsgBox(int h

(C#)利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

利用反射,实现动态调用winform窗体!!

动态 实用前提:在WinForm程序中,通过主窗体的Menu打开不同的窗体我以前的做法:在Menu的Click事件中,创建打开窗体的对象实例这样的缺点,我不说了:)看看利用反射动态调用窗体对象的方法:private void CreateForm(string strName){ this.Cursor = Cursors.WaitCursor; string path=AssemblyName;//项目的Assembly选项名称 string name=strName; //类的名字 Form

C#实现动态调用Windows DLL

调用方法: object obj = WinDllInvoke("Kernel32.dll", "Beep", new object[] { 750, 300 }, typeof(void)); 函数代码: 1 [System.Runtime.InteropServices.DllImport("kernel32")] 2 private static extern IntPtr LoadLibrary(string lpLibFileName)

在SOA开发中使用WBSF动态调用业务服务,第2部分(下)

WBSF(WebSphere Business Services Fabric)让我们在 SOA 开发中能够根据服务策略动态调用业务服务.本文通过一个具体的例子,介绍如何通过 WBSF V6.02 的 SCA 编程模型动态调用业务服务. 组装服务流程 创建 AccountQueryProcess 业务流程: 将 WID 切换至"Business Integration" perspective,在 AccountQueryModule 项目中新建 AccountQueryProc 接口

在SOA开发中使用WBSF动态调用业务服务,第2部分(上)

引言 在上一篇文章中,我们介绍了WBSF动态调用业务服务的基本概念和工作原理.WBSF让我们在SOA 开发中能够根据服务策略动态调用业务服务.WBSF V6.02 提供了SCA 编程模型,让开发业务服务更加灵活,方便.本文通过一个具体的例子,介绍如何通过 WBSF V6.02 的 SCA 编程模型动态调用业务服务.我们将基于上下文属性制定服务策略:在ResponseListener 扩展中设置基于服务内容的断言:通过 ContextExtractor 扩展更新事务中的上下文属性: 业务场景与建模