第一步:定义服务的配置文件(指定服务名和服务路径)
<?xml version="1.0" encoding="gb2312" ?> <!-- DOCTYPE service - config SYSTEM " service.dtd " --> <service - config> <!-- 用户服务 --> <service name="UserService " class="com.zuidaima.service.UserService" template="normal" /> <service name="GnmkService" class="com.zuidaima.service.GnmkService" template= "normal" /> </service - config>
原创不易,转载请注明出处:java利用反射机制模拟spring IOC实现
代码下载地址:http://www.zuidaima.com/share/1724245276724224.htm
第二步:系统初始化是将所有服务名和路径加载到一个静态的HashMap中
package com.zuidaima; 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(); }
第四步:服务实例化类
package com.zuidaima; 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+"]不存在!"); } } }
第五步:定义接具体服务并实现接口类
package com.zuidaima; 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"); } }
相关推荐
这篇博客“java模拟spring ioc”很可能是探讨如何在没有Spring框架的情况下,使用纯Java代码来实现类似Spring的IOC功能。以下将详细介绍Spring的IOC和DI概念以及如何模拟这些概念。 **依赖注入(Dependency ...
理解并模拟Spring的IOC机制对于深入学习Spring以及提升软件设计能力具有重要意义。 **1. 控制反转(IOC)概念** 控制反转是一种设计思想,它将对象的创建和管理权交给容器,而不是由对象自身负责。这样可以降低对象...
这个练习分为三个主要部分,旨在帮助我们掌握XML配置文件的读取,模拟Spring的IoC机制,以及对Struts框架的简单模拟。下面将逐一解析这些知识点。 **1. XML读取** XML(Extensible Markup Language)是一种通用的...
本文将深入探讨Spring IOC的概念、工作原理以及如何通过反射来实现这一机制。 首先,理解控制反转(IOC)的概念至关重要。在传统的编程模式中,开发者需要手动创建并管理对象,而在IOC中,这种控制权反转给了容器,...
在这个项目中,“基于java简单模拟实现spring_ioc”显然是为了帮助开发者理解Spring的IoC容器是如何工作的,以及如何通过Java代码来模拟这个过程。 首先,让我们了解什么是Spring的IoC。IoC是一种设计模式,它将...
在这个名为"spring_IOC实现(墨者革离)"的项目中,我们可以通过模拟城门叩问的编剧场景来理解这一概念。 首先,控制反转的基本思想是将对象的创建和依赖关系的管理从应用程序中分离出来,交给一个外部容器(在...
本教程将深入探讨如何模拟Spring框架的IOC(Inversion of Control,控制反转)功能,特别关注XML配置文件的解析。 首先,我们需要理解什么是IOC。控制反转是一种设计原则,它将对象的创建和管理从对象本身剥离出来...
3. 如果一切正常,你会看到使用Java集合、XML API,以及反射技术模拟Spring的get注入和自定义的IoC容器实现的例子--get注入了Hello类和一个MyFrame类,并且实例化之后可以运行! 4. 看一下testDemoSpringDI()方法,...
这通常通过反射机制实现,根据类名动态创建对象。 4. **依赖注入**:接下来是关键的DI部分。`BeanFactory`不仅创建Bean,还要负责将它们的依赖关系设置好。这可以通过调用setter方法或者构造函数注入来实现。 5. *...
现在,我们将深入探讨如何模拟Spring的IoC容器实现注解自动装配。 首先,我们需要理解IoC容器的基本工作原理。IoC容器是通过扫描应用程序上下文来发现所有需要管理的bean,并根据bean定义来创建和初始化这些bean。...
本篇文章将详细探讨如何利用jdom2解析XML文档以及通过反射机制来模拟Spring的IoC功能。 首先,理解IoC的基本概念。IoC意味着不再由应用程序直接创建对象,而是由一个容器(如Spring IoC容器)来负责对象的生命周期...
这篇博客"使用反射和注解模拟Spring的依赖注入"探讨了如何通过基本的Java特性来实现类似Spring的功能。我们将深入探讨反射和注解这两个关键概念,以及它们如何在模拟依赖注入中发挥作用。 首先,让我们理解反射的...
在没有Spring的情况下,我们可以使用简单的工厂模式或反射机制来模拟IoC,用代理模式或动态代理(如Java的`java.lang.reflect.Proxy`)来模拟AOP。这通常涉及到创建一个容器(类似Spring的ApplicationContext),...
通过使用Java注解,我们可以模拟Spring IOC容器的过程,实现依赖注入和控制反转。 在下面的示例代码中,我们将使用Java注解来模拟Spring IOC容器的过程。首先,我们定义了两个注解:Component和Value。Component...
首先,`BeanFactory.java`很可能是模拟Spring的`ApplicationContext`或`BeanFactory`,它是IOC容器的核心,负责管理和实例化对象。在Spring中,`BeanFactory`是一个接口,用于加载和管理Bean定义,提供Bean的实例。...
/*模拟spring的实现 * 1.通过构造器获取配置文件 * 2.通过dom4j解析配置文件,得到list集合(存放Bean标签的id和class属性) * 3.通过反射实例化得到对应的实例化对象,放置在map中(map是键值对,可根据id获取值)...
标题中的“Spring简单模拟Spring容器”意味着我们将探讨Spring框架的核心特性——IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及如何通过编程方式模拟Spring容器的工作原理。...
本文将深入探讨如何利用Java中的反射(Reflection)与依赖注入(Inversion of Control, 简称IOC)来构建一个灵活的插件架构,实现业务流程处理。这种架构允许我们在运行时动态加载、管理和替换组件,从而提高代码的可...
3. **构建IoC容器**:模拟Spring的IoC容器,我们需要一个类来存储和管理对象。这个类可以包含一个Map来保存对象,以及方法来注册和获取对象。 ```java public class SimpleIOCContainer { private Map, Object> ...
模拟Spring的依赖注入,旨在理解其核心机制,让我们一起深入探讨这一主题。 首先,我们要明白什么是依赖注入。在传统的编程中,一个对象通常会直接创建或查找它所依赖的对象,这会导致类之间的紧密耦合。依赖注入则...