《step1:tiny Spring IoC学习一》——最基本的容器BeanFactory
来源:互联网 发布:caffe 源码 github 编辑:程序博客网 时间:2024/06/10 00:52
IOC最基本的角色有两个:
1·容器(BeanFactory)
2·Bean本身
容器BeanFactory,通俗来讲,就是放bean的容器。
在这里容器beanFactory实现两个功能:1·注册bean,2·获取bean
BeanDefinition用来封装bean的基本信息,例如:bean对象,bean对象属性值等。一个bean对象对应一个BeanDefinition对象。工厂中存放着BeanDefinition对象的map集合。每个bean的注册和获取都会通过beanFactory工厂实现,进而注册到beanDefinitionMap集合当中,获取实质则也是从map中获取。
先来看demo的类图:
时序图:
代码实现:
BeanFactory类:
package us.codecraft.tinyIoc;/** * Created by 贾丽敏 on 2017/5/29. */import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/** * bean工厂 * * @author * @create 2017-05-29 10:41 **/public class BeanFactory { //这里有两个map的使用:ConcurrentHashMap和HashMap,前者属于线程安全。 private Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>(); //private Map<String, BeanDefinition> beanDefinitionMap = new HashMap<String, BeanDefinition>(); public Object getBean(String name) { return beanDefinitionMap.get(name).getBean(); } public void registerBeanDefinition(String name, BeanDefinition beanDefinition) { beanDefinitionMap.put(name, beanDefinition); }}
BeanDefinition类实现:
package us.codecraft.tinyIoc;/** * Created by 贾丽敏 on 2017/5/29. *//*** 使用BeanDefinition类来封装了bean对象,保存一些额外的源信息* @author * @create 2017-05-29 10:36**/public class BeanDefinition { private Object bean; public BeanDefinition(Object bean){ this.bean=bean; } public Object getBean(){ return bean; }}
Bean对象:
/** * Created by 贾丽敏 on 2017/5/29. *//*** * @author * @create 2017-05-29 10:58**/public class HelloWorldService { public void printHelloWorld(){ System.out.println("hello world"); }}
以下是测试类:
/** * Created by 贾丽敏 on 2017/5/29. */import org.junit.Test;import us.codecraft.tinyIoc.BeanDefinition;import us.codecraft.tinyIoc.BeanFactory;/*** * @author * @create 2017-05-29 10:59**/public class BeanFactoryTest { @Test public void test(){ //1·初始化beanFactory BeanFactory beanFactory=new BeanFactory(); //2·注入bean BeanDefinition beanDefinition=new BeanDefinition(new HelloWorldService()); beanFactory.registerBeanDefinition("helloWorldService", beanDefinition); //3·获取bean HelloWorldService helloWorldService=(HelloWorldService)beanFactory.getBean("helloWorldService"); helloWorldService.printHelloWorld(); }}
运行测试类,执行结果如图:
以上内容就是IOC的学习第一步:了解最基本容器BeanFactory。
阅读全文
0 0
- 《step1:tiny Spring IoC学习一》——最基本的容器BeanFactory
- Spring框架之IoC容器—BeanFactory接口
- 《Spring揭秘》第四章 读书笔记 —— Spring的IoC容器之BeanFactory
- Spring揭秘(四)——Spring的IOC容器之BeanFactory
- Spring--IoC--创建BeanFactory容器
- 【深入Spring】——Tiny Spring IoC(一)Bean
- 【Spring揭秘】------ 第四章学习 Spring的IoC容器之BeanFactory 01
- 【Spring揭秘】------ 第四章学习 Spring的IoC容器之BeanFactory 02
- Spring原理(一)IoC容器的初始化过程之BeanFactory
- Spring学习之IOC容器BeanFactory和ApplicationContext(三)
- 好记性不如烂笔头83-spring3学习(4)-spring的BeanFactory(IoC容器)
- 《step5:tiny-spring-ioc学习五》——ApplicationContext登场
- (1.0)Spring的IoC容器之BeanFactory
- Spring揭秘 学习笔记一 (Spring的IoC容器 一)
- Spring揭秘 学习笔记一 (Spring的IoC容器 二)
- Spring--IoC--application与BeanFactory容器比较
- spring源码初步学习-容器(BeanFactory)基本实现
- 创建ApplicationContext与BeanFactory时的区别-Spring源码学习之容器的基本实现
- 多组数据要求求出最大平台的长度
- 安卓之Service详解(一)
- HDU
- 深度学习调参技巧(六)
- 可展开和收起的LinearLayout
- 《step1:tiny Spring IoC学习一》——最基本的容器BeanFactory
- Unity3D官方资源包的下载以及从Asset Store下载后存在的位置查找
- HttpServletResponse学习
- 《Java多线程编程核心技术》
- Json
- HDU
- Java中的分层
- Android SDK版本号 与 API Level 对应关系
- java生成图片登录验证码