Spring源码学习-本身写一个简洁版的Spring框架

本身写了一个开源的IoC控制反转(依赖注入)框架,名为containerx。初学Spring源码的同窗,能够先研究下这个小项目。更容易理解Spring的源码。 不少同窗想学习Spring的源码,可是Spring的源码太庞大了。 看相应的书籍,并结合源码来研究。仍是很难搞清楚原理(嵌套调用太多,并且架构至关复杂)。 我经过学习郝佳编著的书籍《Spring源码深度解析》,根据Spring的基本原理。写出了一个雏形的依赖注入框架,取名为containerx。 项目的源码地址为https://github.com/frank-liu-1/containerxgit

<b>开发者</b> Frank Liu(刘少明) 我的git https://github.com/frank-liu-1
<br/> 邮箱liushaomingdev@163.com <br/>github

代码片断以下架构

public static void inject(Object bean, Map<String, String> properties) {
		Map<String, String> methodMap = new HashMap<String, String>();
		for (Map.Entry<String, String> entry : properties.entrySet()) {
			String configName = entry.getKey();
			String configValue = entry.getValue();
			String configMethodName = "";
			if (configName != null && configName.length() > 0) {
				configMethodName = "set" + String.valueOf(configName.charAt(0)).toUpperCase() + configName.substring(1);
			}
			methodMap.put(configMethodName, configValue);
		}
		
		Class clazz = bean.getClass();
		for (Method method : clazz.getMethods()) {
			String methodName = method.getName();
			if (methodName.startsWith("set") && method.getParameterTypes().length == 1
					&& Modifier.isPublic(method.getModifiers())
					&& methodMap.containsKey(methodName)) {
				try {
					method.invoke(bean, methodMap.get(methodName));
				} catch (Exception e) {
					e.printStackTrace();
				} 
			}
		}
	}

项目的源码地址为https://github.com/frank-liu-1/containerx 若是以为有用,欢迎star。框架

相关文章
相关标签/搜索