1)SpringIOC核心模拟实现

思路:初始化Spring容器时,从配置文件中读取定义好的Bean的信息,根据配置属性初始化后存入Spring容器中。

当需要某个Bean时,直接从容器中通过id获取。

步骤:

a)创建一个Java工程,需要的依赖包(主要用来解析XML文件)如下图:

b)先模拟Spring在配置文件my-ioc.xml中定义两个简单的bean,内容如下:

c)按照上面的思路来模拟Spring实现我们自己的IOC容器MyIOCContext,实现如下:

  1. public class MyIocContext {

  2. private final Map<String, Object> beanMap = new HashMap<String, Object>();

  3. public MyIocContext(String fileName) {

  4. init(fileName);

  5. }

  6. private void init(String fileName) {

  7. }

  8. public Object getBean(String id) {

  9. return beanMap.get(id);

  10. }

  11. }

其中init的实现如下:

d)测试:

  1. public class MyIocTest {

  2. private MyIocContext ctx = null;

  3. @Before

  4. public void setUp() throws Exception {

  5. ctx = new MyIocContext("my-ioc.xml");

  6. }

  7. @Test

  8. public void testIoc() throws Exception {

  9. Hello hello = (Hello) ctx.getBean("hello");

  10. hello.say("My IOC Context");

  11. }

  12. }

结果为:

至此,IOC容器的核心实现完成。

2)Spring依赖注入方式

a)手动注入

  • 构造器注入。

  • 属性setter注入。

  • 使用Field注入(用于注解方式),如下:

  1. @Autowired:按照类型注入

  2. @Resource:按照名称注入,如果失败再按照类型注入。如果指定了name,则只按照名称注入。

b)自动注入

在XML中配置,<bean id="" class="" autowire="byType" />

转载于:https://www.cnblogs.com/dyllove98/p/4101838.html

技术总结之SpringIOC相关推荐

  1. 收集的计算机编程电子书目录,仅供日后查阅方便

    本人有收集电子书的癖好.每日在网上收集经典的电子书籍,尤其喜欢原版的,看起来舒服.不过总是心血来潮,当时下载后瞅几眼,之后就束之高阁,再也不问津了.很为此苦恼,过后找某本书时也总是不知道在哪,为了查找 ...

  2. Java实现lucene搜索功能

    直接上代码: package com.sand.mpa.sousuo;//--------------------- Change Logs---------------------- //<p ...

  3. Java开发面经分享:SpringIOC中复杂属性如何“巧妙

    private Map<String, Object> maps;private Properties properties; } 下面我们将依次讲解如何给赋值属性赋值.**1.为类属性赋 ...

  4. java缓存技术选型,重难点整理

    Part1 SpringIOC 学习Spring最重要的无非是Spring IOC以及Spring AOP,首先咱们把Spring IOC吃透,以下内容将截图展示. Spring IOC主要学习内容分 ...

  5. spring api 中文_Spring高级技术梳理

    序言 本系列除了SpringData部分, 其余部分全部是基于SpringBoot 2.0以上版本, 更新则更强, 尽量不与主流脱节. 我们不是时代的弄潮儿, 我们只是先进技术的追随者~~~ Spri ...

  6. SpringIOC概述

    什么是SpringIOC 什么是SpringIOC,就是把每一个bean(实体类)与bean(实体了)之间的关系交给第三方容器进行管理. 什么是SpringIOC底层实现原理 1.读取bean的XML ...

  7. springioc注解版运行效果演示

    我们讲一个新的知识,就是手写一下IOC容器,怎么手写一下SpringIOC XML版本,还有手写一下SpringIOC注解的版本,那么相对来说,我们用注解版本的次数可能要多点,很少用到XML版本,XM ...

  8. Spring4.x(2)--SpringIOC的概念和作用

    SpringIOC的概念和作用 一.什么是IOC? Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着 ...

  9. 数据交换格式与SpringIOC底层实现

    课程目标 XML和JSON Java反射机制 手写SpringIOC 什么是数据交换格式 客户端与服务器常用数据交换格式xml.json.html 数据交换格式用场景 移动端(安卓.IOS)通讯方式采 ...

  10. 手写springIOC、AOP

    手写springIOC.AOP 一.核心思想 1.IoC 1.1 什么是IoC? 1.2 IoC解决了什么问题 1.3 IoC和DI的区别 2.AOP 2.1 什么是AOP? 2.2 AOP解决的什么 ...

最新文章

  1. Apache Spark源码走读之8 -- Spark on Yarn
  2. Java 语言 集合架构(Set规则集)
  3. 【渝粤题库】陕西师范大学200701 数字逻辑
  4. 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
  5. 活动服务器优化 暂时关闭,服务器优化之关闭不必要的服务
  6. python怎样填充颜色_python – 使用颜色填充Tkinter画布对象之间的空间
  7. 实战tkinter图形界面开发_八款常用的 Python GUI 开发框架推荐
  8. 定时器翻转io口的好处_STM32 定时器输出比较翻转模式
  9. css基础知识汇总5
  10. 彻底关闭弹出广告“FF新推荐”
  11. 系统设计之路:如何设计一个URL短链服务
  12. 假币问题python
  13. 山西机电职业技术学院计算机专业,山西机电职业技术学院怎么样?山西机电职业技术学院好吗?(历年分数、专业设置、校园环境、教学实力、名人校友) - 职友集...
  14. 在Markdown编辑器中输入上标下标
  15. 重拾Java基础知识:运算符操作
  16. java 限制输入两位数_Java 控制数字输入、控制输入长度的方法 | 学步园
  17. 电脑怎么翻译图片中的文字?快速翻译图片文字的方法
  18. Kubernetes(K8S)一
  19. 零基础学软件测试怎么样? 完好就业吗
  20. App测试流程及测试点(个人整理版)

热门文章

  1. 新书 | Kevin P. Murphy《概率机器学习:进阶》PDF开放下载
  2. Embedding技术在商业搜索与推荐场景的实践
  3. 【SIGIR2020】信息检索对话中混合主动性和协同性的分析
  4. 资源过于硬核,8h删!这波福利....请笑纳~
  5. 打破校史,发学校首篇Science的博士小姐姐,近日再发Nature!破解百年谜题
  6. 原来神经网络是一种图?
  7. 【工大SCIR笔记】AAAI 2020 故事结局预测任务上的区分性句子建模
  8. 【机器学习】如何处理数据不均衡问题
  9. 数据分析_金额业务数据知识
  10. nlp基础—4.搜索引擎中关键技术讲解