`
ddd_5858
  • 浏览: 28718 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

java通过服务名动态实例化

 
阅读更多

java通过服务名动态实例化对象并调用指定方法
第一步:定义服务的配置文件(指定服务名和服务路径)

 <? xml version = " 1.0 "  encoding = " gb2312 " ?>
 <!-- DOCTYPE service - config SYSTEM  " service.dtd " -->
 < service - config >
     <!--  用户服务  -->
     < service name = " UserService "   class = " com.xainfor.service.UserService "  template = " normal "   />
     < service name = " GnmkService "   class = " com.xainfor.service.GnmkService "  template = " normal "   />
 </ service - config >  
第二步:系统初始化是将所有服务名和路径加载到一个静态的HashMap中


  public   class  ServiceConfig   {
   
     public   static  HashMap serviceMap  =   new  HashMap();
   
     public   static  String getService(String serviceName)   {
        String serviceClass  =   "" ;
        serviceClass  =  ServiceConfig.serviceMap.get(serviceName).toString();
         return  serviceClass;
    }
}

第三步:定义一个接口类

  public   interface  Service   {
  public   void  execute();
} 第四步:服务实例化类
public class ServiceExecuteHelper {
   
    /** *//**
     * 日志处理
     */
    private static final MsgLogger logger = MsgLogger.getLogger();
   
     public static void execute(String servicename) {
         try {
            //验证服务是否存在
            String servicClass = ServiceConfig.getService(servicename);
            //如果服务存在就加载服务信息
            if (servicClass != null && !servicClass.equals("")) {
                Class classObject = Class.forName(servicClass);
                Service service = (Service) classObject.newInstance();
                service.execute();                           
            } else {
                logger.info("服务["+servicename+"]未定义");
            }
        } catch(Exception e) {
            logger.info("服务["+servicename+"]不存在!");
        }
     }
}第五步:定义接具体服务并实现接口类
public class GnmkService implements Service {

    /**//* (non-Javadoc)
     * @see com.xainfor.service.Service#println()
     */
    public void execute() {
        // TODO Auto-generated method stub
        System.out.println("执行的是GnmkService");
    }

}public class UserService implements Service {
   
    public void execute() {
        // TODO Auto-generated method stub
        System.out.println("执行的是UserService");
       
    }
}第六步:测试类
public class testService {
  
    public static void main(String [] temp) {
      ServiceExecuteHelper.execute("UserService");
   }
}

分享到:
评论

相关推荐

    通过java类的路径实例化类并调用方法

    通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法

    java实例化对象的过程

    在Java编程语言中,实例化对象是创建类的实例,使其具有...总的来说,Java实例化对象是编程中的基本操作,它涉及到类的构造,内存分配,方法调用等多个核心概念。理解这一过程对于深入学习Java和面向对象编程至关重要。

    Java中内部类的实例化

    Java 内部类 实例化 在Outer类的静态方法中实例化内部类 在同一个包的其它类中实例化Outer类中的内部类

    Java实例化一个抽象类对象的方法教程

    总的来说,虽然Java中的抽象类不能直接实例化,但我们可以通过继承并实现其抽象方法,或者利用字节码工具和注解处理器在运行时或编译时动态生成新的类来间接达到实例化抽象类的目的。这样的设计允许我们创建更加灵活...

    Java反射和动态代理实例

    可以学习如何通过Java的反射机制实例化对象、调用对象的方法、操作对象的私有成员变量、改变数组中的某项的值、改变数组大小等;可以学习Java的动态代理模式、学习Java工厂模式以及如何将工厂模式与属性文件相结合。

    反射和动态实例化

    总的来说,反射和动态实例化是Java中强大的特性,它们为程序提供了运行时的灵活性和控制力。理解和熟练运用这些概念,可以帮助开发者解决许多复杂的问题,但同时也需要权衡其可能带来的负面影响。

    java中通过键盘输入来实例化类对象数组,同时对类对象排序

    java中通过键盘输入来实例化类对象数组,同时对类对象排序,希望初学java的同学们可以下载下学习下

    3.java实例化泛型类.zip

    3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3....

    java调用动态库实例

    本实例主要讲解了如何通过Java调用动态库(DLL),特别是使用JNA(Java Native Access)和JNative两种不同的库来进行操作。下面我们将详细探讨这两个库以及它们在不同场景下的应用。 1. JNA(Java Native Access) ...

    java 基础 类对象创建实例化过程 实例解析

    继承关系:类的实例化顺序 * 执行过程为:启动类是否为继承关系树中的一个,如果是则先执行启动类的所有父类的静态语句块;然后执行启动类的静态语句块static{} -&gt; * 执行启动类的main函数 -&gt; 创建对象的继承树从...

    java-nio.rar_java nio_nio 对象实例化

    在标题中提到的“java-nio.rar_java nio_nio 对象实例化”,我们可以理解为这个压缩包中包含了关于Java NIO对象实例化的具体示例或教程。下面我们将详细讨论NIO中的核心对象及其实例化方法。 1. **通道(Channel)*...

    java 使用静态成员变量计算内存中实例化的对象数目

    在Java编程语言中,了解如何计算内存中实例化对象的数量是一项重要的技能,这对于优化程序性能、理解和管理资源分配至关重要。本篇文章将详细讲解如何利用静态成员变量来追踪和计算一个类在运行时创建的实例数量。 ...

    java动态代理实例aop

    AOP是一种编程范式,旨在提高代码的可重用性和模块化,通过将关注点分离,使得业务逻辑与系统服务(如日志、事务管理等)可以独立发展。 Java动态代理主要涉及到两个类:`java.lang.reflect.Proxy`和`java.lang....

    通过类名获取类的实例对象

    当需要根据类名创建对象时,就通过这个映射表找到对应的创建函数,然后调用它来实例化对象。然而,这样的设计也存在潜在问题,比如线程安全、内存管理以及可能的命名冲突等。 在C++中实现反射的一个常见方式是使用...

    JAVA WEB实现echarts动态图表实例.zip

    总之,这个实例展示了Java Web与ECharts结合实现动态图表的基本流程,包括服务器端数据处理、与前端的通信以及前端的数据可视化。通过学习这个实例,你可以掌握如何在实际项目中运用这些技术来构建数据驱动的Web应用...

    java源码包---java 源码 大量 实例

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    5. **枚举的构造函数**:枚举类默认是final且私有的,所以不能通过常规方式实例化新的枚举值。但反射可以访问私有构造函数,尽管不推荐这样做,因为这违反了枚举的设计原则。 在"test-enum-demo-master"项目中,...

    java连接opc读取数据实例及文档

    Java连接OPC(OLE for Process Control)是一种在Java应用程序中访问工业自动化设备和系统数据的方法。...通过学习和应用这些知识,开发者能够构建起Java应用程序与工业自动化设备之间的桥梁,实现远程数据访问和控制。

    selenium自动化测试 java实例

    在"**selenium java实例**"中,可能包含以下步骤: 1. **引入依赖**: 首先,我们需要在项目中引入Selenium的Java库,这通常通过Maven或Gradle的依赖管理完成。 2. **创建WebDriver对象**: 初始化一个WebDriver对象...

    Java源码包100个设计实例.zip

    Java源码包100个设计实例, 大量 实例,可以作为你的学习设计参考。 实例如下: Applet钢琴模拟程序java源码 Calendar万年历 copass源代码.rar DataBuffer在Java中使用ADO.NET.rar EJB 模拟银行ATM流程及操作源代码 ...

Global site tag (gtag.js) - Google Analytics