千家信息网

结合反射说明SpringIOC的实现原理是怎样的

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇文章给大家分享的是有关结合反射说明SpringIOC的实现原理是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前面已经对IOC
千家信息网最后更新 2026年11月04日结合反射说明SpringIOC的实现原理是怎样的

本篇文章给大家分享的是有关结合反射说明SpringIOC的实现原理是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

前面已经对IOC进行了说明,也知道了IOC的原理是反射机制。那么接下来看看如何通过反射机制说明IOC

看下代码:

package com.sinoair.gtms.controller.web.IOC;

import javax.annotation.Resource;
import javax.xml.ws.Service;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MyIOC {
/**
*
模拟Spring扫描的注解包
*/
private final static String packageName = "com.albert.AnnotationTest";

/**
*
存放注解的bean对象
*/
private static Map beanMap =new HashMap();
static{
try {
packageToScan();
} catch (InstantiationExceptione) {
e.printStackTrace();
} catch (IllegalAccessExceptione) {
e.printStackTrace();
}
}

/**
*
根据beanName从容器获取bean对象
* @param
beanName
* @return
*/
public static Object getBean(String beanName){
Object obj = null;
obj = beanMap.get(beanName);
return obj;
}

/**
*
遍历包中的注解类
* @throws IllegalAccessException
* @throws InstantiationException
*/
private static void packageToScan() throws InstantiationException,IllegalAccessException{
List clsList =ClassByPackage.getClasssFromPackage(packageName);
//先加载dao
for(Class cls : clsList){
//判断类是不是有@Respository注解
if(cls.isAnnotationPresent(Respository.class)){
String clsName =AlbertUtil.getBeanName(cls.getName());
//bean对象存入map
beanMap.put(clsName,cls.newInstance());
}
}
//加载service,同时对其中@Resource注解的属性进行赋值
for(Class cls : clsList){
if(cls.isAnnotationPresent(Service.class)){
String clsName =cls.getName();
clsName =clsName.substring(clsName.lastIndexOf(".")+1, clsName.length());
beanMap.put(AlbertUtil.toLowerCaseFirstOne(clsName),cls.newInstance());

//扫描注解@Resource的属性并赋值
Field[] field = cls.getDeclaredFields();
for(Field f : field){
//判断属性是不是有@Resource注解
if(f.isAnnotationPresent(Resource.class)){
f.setAccessible(true);
f.set(beanMap.get(AlbertUtil.getBeanName(cls.getName())), beanMap.get(f.getName()));
}
}
}
}
}

}

以上就是结合反射说明SpringIOC的实现原理是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

注解 反射 原理 对象 属性 更多 机制 知识 篇文章 实用 接下来 代码 同时 容器 就是 工作会 文章 看吧 知识点 行业 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融监管科技数据 疫情对互联网科技公司影响 互联网科技公司电话 互联网科技股票 善班互联网科技有限公司 互联网科技上市公司 广州紫鲸互联网科技 互联网科技素材视频竖屏 滨湖区互联网智能科技产品供应 互联网科技创新企业排名 江苏南京365互联网科技 中盈科技互联网信息有限公司 中国的互联网科技企业的崛起 知域互联网科技有限公司大骗子 健康食品互联网创新科技园项目 恒生互联网科技业指数调整周期 华中科技大学互联网的牛人 湖北辰鑫科技互联网 互联网科技和医药行业 科技互联网专业务虚会材料 咖啡网 互联网科技海报 互联网科技公司起名 科技金融是不是互联网金融 互联网科技公司怎么样 广州紫鲸互联网科技 科技赋能互联网健康 以后互联网后是啥科技 南平创想时代互联网科技有限公司 广州富喜互联网络科技
0