`

简易版Spring Ioc

    博客分类:
  • java
 
阅读更多
package com.ioc.service;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * 
 * 简单实现了一下Spring的IOC,理解IOC原理,多使用面向接口编程
 * 
 */
public class BeanFactory {

	private Map<String, String> beanDefinitions;

	BeanFactory(String source) {
		this.register(source);
	}

	public void register(String source) {
		InputStream in = this.getClass().getResourceAsStream(source);
		Properties p = new Properties();
		try {
			p.load(in);
			in.close();
			beanDefinitions = new HashMap<String, String>();
			for (Map.Entry<Object, Object> entry : p.entrySet()) {
				beanDefinitions.put(entry.getKey().toString(), entry.getValue().toString());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public Object getBean(String name) {
		try {
			String value = beanDefinitions.get(name);
			return Class.forName(value).newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] args) {
		BeanFactory factory = new BeanFactory("hello.properties");
		MessageWrite write = (MessageWrite) factory.getBean("messageWrite");
		MessageSource source = (MessageSource) factory.getBean("messageSource");
		write.write(source.getMessage());
	}

}

interface MessageSource {
	public String getMessage();
}
/**
 * message
 */
class SimpleMessageSource implements MessageSource {

	@Override
	public String getMessage() {
		return "hello world";
	}
}
/**
 * 输出Service
 */
interface MessageWrite {
	public void write(String str);
}

class SimpleMessageWrite implements MessageWrite {
	public void write(String str) {
		System.out.println(str);
	}
}
/**
 * 附上hello.properties
 * /messageWrite=com.ioc.service.SimpleMessageWrite
 * /messageSource=com.ioc.service.SimpleMessageSource
 * 
 */

 

分享到:
评论

相关推荐

    动手写框架,模拟简易的SpringIOC.rar

    标题 "动手写框架,模拟简易的Spring IOC" 暗示了这个压缩包包含了一个教程或实践项目,目的是帮助我们理解Spring框架的核心组件——控制反转(Inversion of Control,简称IOC)。Spring框架是Java开发中广泛使用的...

    手写spring ioc(三) 资源org.zip

    在本资源"手写spring ioc(三) 资源org.zip"中,我们主要关注的是如何实现一个简易版的Spring IOC(Inversion of Control)容器,它涵盖了ioc的基本功能,包括解决循环依赖、使用构造器注入以及自动注入等核心特性。...

    手写springmvc 简易版

    下面将详细介绍这个简易版Spring MVC实现中的关键知识点。 1. **DispatcherServlet**:作为Spring MVC的前端控制器,DispatcherServlet是所有请求的入口点。它负责接收HTTP请求,解析请求信息,并根据配置找到合适...

    针对大厂面试,模仿Spring写的简易版IOC小框架,完美解释三级缓存解决属性注入循环依赖的问题

    在这个名为"spring-simple-master"的压缩包中,包含了一个简易版的IOC(Inversion of Control,控制反转)小框架,其灵感来源于Spring的核心机制。这个项目特别关注如何使用三级缓存来解决属性注入过程中的循环依赖...

    自主实现的简易Spring框架

    本项目"自主实现的简易Spring框架"显然是对Spring核心功能的一种简化版实现,旨在帮助开发者深入理解Spring的核心机制。 首先,我们来讨论一下Spring的核心组件——IoC(Inversion of Control)容器。IoC也被称为...

    java代码实现简易版IOC容器!.docx

    在这个简易版的Java IOC容器实现中,我们将探讨如何通过自定义注解和反射机制来构建一个基础的IoC容器。 首先,我们有两个自定义注解:`@MyComponent` 和 `@MyAutowired`。 1. `@MyComponent` 是一个类型注解,...

    自己写的类struts的简易的mvc实现+一个类Spring的IOC和简单AOP

    标题中的“自己写的类Struts的简易的Mvc实现+一个类Spring的IOC和简单AOP”揭示了这个项目是作者尝试构建的一个简化版的MVC框架,并结合了类似Spring的依赖注入(IOC)和面向切面编程(AOP)概念。下面我们将详细...

    coco-spring-ioc

    本文将围绕“coco-spring-ioc”项目,深入探讨这个简易版的Spring-ioc实现。 首先,理解IOC的概念是至关重要的。在传统的编程模式中,对象通常自行创建和管理它们所依赖的对象,而在IOC中,这种控制权被反转,由一...

    简单的ioc框架, just a simple

    以Java为例,Spring框架就是一个广泛应用的IOC框架。它提供了强大的IOC功能,包括基于注解的配置、自动装配、AOP(面向切面编程)等功能,极大地简化了企业级应用的开发。 总的来说,IOC框架通过控制反转和依赖注入...

    手写简单实现ioc、aop事务demo

    在Java中,实现IOC的一种常见方式是使用容器,如Spring框架。但在这里,我们手写一个简单的实现。我们可以创建一个接口,例如`Service`,然后定义多个实现类,如`ServiceImpl1`和`ServiceImpl2`。接着,我们可以创建...

    自己动手模拟spring

    参考链接提供了一个CSDN博客文章,作者详细介绍了如何从零开始创建一个简易版的Spring框架,以此帮助我们更好地理解Spring的核心机制。这个过程涉及到依赖注入(Dependency Injection,DI)、组件扫描(Component ...

    模拟Spring架构的简易实现

    "模拟Spring架构的简易实现"这个项目可能是为了理解和学习Spring框架的基本原理而创建的,它可能通过简单的代码来模拟Spring的一些核心功能。 首先,我们要理解Spring的核心概念。依赖注入是Spring最基础的设计模式...

    简单Spring容器实现

    了解并实现Spring容器不仅能帮助我们更好地理解和使用Spring框架,还能为自定义IoC容器或扩展现有项目提供基础。通过阅读和实践`MySpring`中的代码,我们可以更深入地学习Spring的内部工作原理,提升我们的编程技能...

    myspring:基于spring源码实现一个简易的spring

    在本项目中,"myspring" 是一个基于Spring框架源码实现的一个简易版本。通过学习和理解Spring的核心机制,开发者可以构建出一个类似的轻量级框架。以下将详细阐述Spring框架的一些关键知识点,并结合"myspring"项目...

    spring学习笔记

    Spring的核心是一个轻量级的容器,它提供了依赖注入(IoC)和面向切面编程(AOP)的解决方案,从而简化企业级应用开发。 描述“spring入门学习资源,怎样新建一个spring项目,以及spring的配置”说明本文档包含...

    基于ssm+jsp简易版营业厅宽带系统源码数据库.zip

    这是一个基于SSM(Spring、SpringMVC、MyBatis)框架和JSP技术开发的简易版营业厅宽带系统源码数据库。SSM是Java后端开发中常用的三大框架集成,它们各自负责不同的职责:Spring作为核心容器管理依赖注入,SpringMVC...

    mytinyspring

    本文将通过1000行代码,深入浅出地解释Spring IoC容器的工作原理,并尝试自己动手构建一个简易版的IoC容器。 IoC容器是Spring的核心,它负责管理对象的生命周期和对象间的依赖关系。IoC容器通过反转控制权,将对象...

    02-01-08-用30个类高仿真提炼纯手写Spring框架V2.0之MVC1

    【Spring 框架模拟构建】:本课程旨在深度解析并模拟实现Spring框架的核心部分,特别是Spring MVC,通过创建30个类来构建一个高度仿真的简易版Spring框架。这将帮助开发者深入理解Spring的系统架构和实现原理,以及...

    手写springmvc

    手写MVC简易版通常包括模拟SpringMVC的关键组件,如DispatcherServlet、HandlerMapping、Controller、ModelAndView等。通过这个过程,我们可以了解HTTP请求如何被路由,以及如何处理控制器逻辑并返回响应。清晰的...

Global site tag (gtag.js) - Google Analytics