java利用反射机制模拟spring IOC实现

本文通过Java反射机制模拟实现了Spring的IOC容器功能。首先定义了服务配置文件来指定服务名称和路径,接着创建了一个静态HashMap用于加载服务信息,并定义了一个接口及其实现类来提供服务。最后通过测试类验证了整个流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:java利用反射机制模拟spring IOC实现

源代码下载地址:http://www.zuidaima.com/share/1724245276724224.htm

第一步:定义服务的配置文件(指定服务名和服务路径)

1 <?xml version="1.0" encoding="gb2312" ?>
2  <!-- DOCTYPE service - config SYSTEM " service.dtd " -->
3  <service - config>
4  <!-- 用户服务 -->
5  <service name="UserService " class="com.xainfor.service.UserService" template="normal" />
6  <service name="GnmkService" class="com.xainfor.service.GnmkService" template= "normal" />
7  </service - config>

第二步:系统初始化是将所有服务名和路径加载到一个静态的HashMap中

01 public class ServiceConfig {
02   
03     public static HashMap serviceMap= new HashMap();
04   
05     public static String getService(String serviceName) {
06     String serviceClass= "";
07     serviceClass= ServiceConfig.serviceMap.get(serviceName).toString();
08        return serviceClass;
09     
10  }


第三步:定义一个接口类

1 public interface Service {
2  public void execute();
3 }

第四步:服务实例化类

01 public class ServiceExecuteHelper {
02   
03  /** *//**
04  * 日志处理
05  */
06  private static final MsgLogger logger=MsgLogger.getLogger();
07   
08  public static void execute(String servicename) {
09          try {
10              //验证服务是否存在
11             String servicClass=ServiceConfig.getService(servicename);
12             //如果服务存在就加载服务信息
13             if (servicClass !=null && !servicClass.equals("")) {
14                  Class classObject=Class.forName(servicClass);
15                  Service service=(Service) classObject.newInstance();
16                  service.execute();
17              else {
18                  logger.info("服务["+servicename+"]未定义");
19              }
20            }catch(Exception e) {
21                logger.info("服务["+servicename+"]不存在!");
22            }
23         }
24 }

第五步:定义接具体服务并实现接口类

01 public class GnmkService implements Service {
02  
03           /**//* (non-Javadoc)
04            * @see com.xainfor.service.Service#println()
05            */
06           public void execute() {
07             // TODO Auto-generated method stub
08            System.out.println("执行的是GnmkService");
09           }
10  
11 }
1 public class UserService implements Service {
2   
3                   public void execute() {
4                      // TODO Auto-generated method stub
5                      System.out.println("执行的是UserService");
6                   }
7 }

第六步:测试类

1 public class testService {
2   
3            public static void main(String[] temp) {
4                ServiceExecuteHelper.execute("UserService");
5            }
6 }

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值