技术总结之SpringIOC
1)SpringIOC核心模拟实现
思路:初始化Spring容器时,从配置文件中读取定义好的Bean的信息,根据配置属性初始化后存入Spring容器中。
当需要某个Bean时,直接从容器中通过id获取。
步骤:
a)创建一个Java工程,需要的依赖包(主要用来解析XML文件)如下图:
b)先模拟Spring在配置文件my-ioc.xml中定义两个简单的bean,内容如下:
c)按照上面的思路来模拟Spring实现我们自己的IOC容器MyIOCContext,实现如下:
public class MyIocContext {
private final Map<String, Object> beanMap = new HashMap<String, Object>();
public MyIocContext(String fileName) {
init(fileName);
}
private void init(String fileName) {
}
public Object getBean(String id) {
return beanMap.get(id);
}
}
其中init的实现如下:
d)测试:
public class MyIocTest {
private MyIocContext ctx = null;
@Before
public void setUp() throws Exception {
ctx = new MyIocContext("my-ioc.xml");
}
@Test
public void testIoc() throws Exception {
Hello hello = (Hello) ctx.getBean("hello");
hello.say("My IOC Context");
}
}
结果为:
至此,IOC容器的核心实现完成。
2)Spring依赖注入方式
a)手动注入
构造器注入。
属性setter注入。
使用Field注入(用于注解方式),如下:
@Autowired:按照类型注入
@Resource:按照名称注入,如果失败再按照类型注入。如果指定了name,则只按照名称注入。
b)自动注入
在XML中配置,<bean id="" class="" autowire="byType" />
技术总结之SpringIOC的更多相关文章
- Spring技术内幕:SpringIOC原理学习总结
前一段时候我把Spring技术内幕的关于IOC原理一章看完,感觉代码太多,不好掌握,我特意又各方搜集了一些关于IOC原理的资料,特加深一下印象,以便真正掌握IOC的原理. IOC的思想是:Spring ...
- 深入理解Spring--动手实现一个简单的SpringIOC容器
接触Spring快半年了,前段时间刚用Spring4+S2H4做完了自己的毕设,但是很明显感觉对Spring尤其是IOC容器的实现原理理解的不到位,说白了,就是仅仅停留在会用的阶段,有一颗想读源码的心 ...
- java~spring-ioc的使用
spring-ioc的使用 IOC容器在很多框架里都在使用,而在spring里它被应用的最大广泛,在框架层面 上,很多功能都使用了ioc技术,下面我们看一下ioc的使用方法. 把服务注册到ioc容器 ...
- 数据交换格式与SpringIOC底层实现
1.数据交换格式 1.1 有哪些数据交换格式 客户端与服务器常用数据交换格式xml.json.html 1.2 数据交换格式应用场景 1.2.1 移动端(安卓.iOS)通讯方式采用http协议+JSO ...
- Spring - SpringIOC容器详解
一.什么是Spring IOC: Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想. 在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是 ...
- 《四 spring源码》手写springioc框架
手写SpringIOCXML版本 /** * 手写Spring专题 XML方式注入bean * * * */ public class ClassPathXmlApplicationContext { ...
- 闲谈Spring-IOC容器
闲聊 无论是做j2ee开发还是做j2se开发,spring都是一把大刀.当下流行的ssh三大框架中,spring是最不可替代的,如果不用hibernate和struts,我觉得都无关紧要,但是不能没有 ...
- SpringIoC和SpringMVC的快速入门
更多内容,欢迎关注微信公众号:全菜工程师小辉~ Spring的优势? 降低了组件之间的耦合性 ,实现了软件各层之间的解耦 可以使用容易提供的众多服务,如事务管理,消息服务等 容器提供单例模式支持 容器 ...
- 【学习】006数据交换格式与SpringIOC底层实现
课程目标 XML和JSON Java反射机制 手写SpringIOC 什么是数据交换格式 客户端与服务器常用数据交换格式xml.json.html 数据交换格式用场景 移动端(安卓.IOS)通讯方式采 ...
随机推荐
- Python面试题(二)
打印九九乘法表 思路:利用字符串的连接,梯形输出结果 >>> def st(num): ... l = [] ... for x in xrange(1, num + 1): ... ...
- C#根据日期范围过滤IQueryable<T>集合
需要扩展IQueryable<T>,参数包括一个DateTime类型的属性.开始日期.截止日期. public static class MyExtension { public stat ...
- 原创内容搬家到csdn博客啦~
以后原创的文章就发布在csdn博客啦: http://blog.csdn.net/aceyan0718 这里就用来当作一个网络笔记本吧,转载些优质的内容
- Utopian Tree in Java
The Utopian tree goes through 2 cycles of growth every year. The first growth cycle occurs during th ...
- Java 对文件的操作
public class ReadFile { /** * 按行读取文件操作 * @throws IOException */ public void readFile(String fileName ...
- 【linux】vim编辑器vim+taglist+ctags的配置
很多linux软件开发实际上并不实在X window的情况下进行的,这时我们不可能启动基于X window的图形化窗口,在这一情况下我们所能使用的主要的编辑器是vim和emacs.(ps:emacs和 ...
- Xcode7 使用NSURLSession发送HTTP请求的问题
报错信息: Application Transport Security has blocked a cleartext HTTP (http://) resource load since it i ...
- Excel 二级下拉菜单
http://jingyan.baidu.com/article/cd4c2979f31967756f6e6066.html http://hi.baidu.com/chenshake/item/e1 ...
- selenium 3.0发布
记得3年前selenium core team就放出风声selenium3.0将在某个圣诞节发布,然而大家等了3年,就在所有人都不再关注selenium进度的时候,selenium3.0 beta1悄 ...
- 【jquery】Validform,一款不错的 jquery 表单验证插件
关于 Validform 这是一款很不错的 jquery 表单验证插件,它几乎能够满足任何验证需求,仅仅一行代码就能搞定整站的表单验证. $('form').Validform(); 为什么能如此方便 ...