对IOC的一点学习笔记


IOC (Inversion of Control):控制反转

DI (Dependency Injection):依赖注入


1、在没有使用IOC的情况下是如何进行的

在UserController中需要用到UserService的相关逻辑来实现对应的增删改查功能,那么需要在UserController中直接 new UserService();

对于一个UserService来说还好,假如我有若干个Service需要使用,每个地方都使用new来创造一个对象供自己使用?如果我每个Service都有若干种实现,那么分别进行new?这样太累了。

2、IOC Service Provider登场

我们需要使用一个对象,但是又不想自己动手去创造,那有没有别人来帮我们做这些基础工作?然后我们就集中精力关注我们要关注的业务点?

有,来帮我们做这件事情的就是IOC Service Provider。

我们需要什么的时候,完全交给它来帮我们创建,它知道我们需要什么。

我们缺乏什么的时候,也可以主动找它要,它拥有我们想要的。

我们将自己创建对象的控制权交给它,我们把自己的依赖来交给它管理,这就是----控制反转\依赖注入。

3、IOC Service Provider是什么

IOC Service Provider是一个抽象概念,它指任何一种将IOC场景中的业务对象绑定到一起的实现方式,可以是一段代码,也可以是一组相关的类,或者是比较通用的IOC框架或者IOC容器实现。

而我们使用的Spring,它的IOC容器就是:

  • BeanFactory:最基础的IOC服务支持,采用延迟初始化策略。
  • ApplicationContext:在BeanFactory的基础上构建,相对比较高级的容器实现,还有比如事件发布、国际化支持等。可以使用及时加载,容器在启动之后自动完成初始化绑定。

4、IOC容器到底在背后做什么

毫无疑问,它最基本的两个职责就是:

  • 业务对象的构建管理:负责创建系统中的一切需要的对象
  • 业务对象间的依赖绑定:将这些创建好的对象组织在一起让它们一起好好工作

5、我们怎么使用IOC

使用过 @Controller @Service @Resource @Autowired 这些注解吧?

IOC随笔小记录的更多相关文章

  1. Java 需要记得、了解的关键词 (Java 学习中的小记录)

    Java 需要记得.了解的关键词 (Java 学习中的小记录)     作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用

  2. Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)

    Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...

  3. 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)

    关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)   作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...

  4. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)

    利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)   作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...

  5. html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)

    html/css  盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width     是"宽 ...

  6. NDK开发小记录 C++读取java层对象内容

    这是自己NDK开发得小记录,关于C++层读取java层传来的对象内容. 很简单的一个例子, 1.首先在java层定义了一个类NumList: public class NumList { public ...

  7. centos 6.X minimal 系列最小化安装完成后,安装mono和jexus过程小记录

    在使用虚拟机安装minimal版centos运行mono+jexus的时候,遇到了一些坑,记录一下,比如虚拟机访问不了网络,没wget命令没开放80端口,等等小问题,其他网上教程已经有mono+jex ...

  8. Backbone小记录

    前言 这两天看了下Backbone.js的知识,大概了解了这个框架的一些知识. 写篇博客总结一下. Backbone.js是一个web端javascript的轻量级MVC框架.为什么说是轻量级呢?因为 ...

  9. HorizontalScrollView做页卡的一个小记录

    用HorizontalScrollView做页卡,实现一个如下图的效果:

随机推荐

  1. 走进docker-初识

    什么是Docker容器? 容器是打包代码及其所有依赖项的软件的标准单元,因此应用程序可以从一个计算环境快速可靠地运行到另一个计算环境.Docker容器映像是一个轻量级的,独立的,可执行的软件软件包,其 ...

  2. 冒泡排序算法的实现(Java)

    什么是冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交换 ...

  3. POj1860(floyd+正权回路)

    题目传送门 题意:有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 296 ...

  4. switch case语句,switch case用法详解

    switch 是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch 是多分支选择语句.说得通俗点,多分支就是多个 if. 从功能上说,sw ...

  5. 【vue开发】watch中的immediate与deep的使用

    下面是我对于immediate与deep的理解 1.immediate 设置immediate为true后,监听会在被监听值初始化的时候就开始,也就页面上的数据还未变化的时候. 经过测试发现,如果监听 ...

  6. OO第四单元总结暨期末总结

    OO第四单元总结暨期末总结 目录 OO第四单元总结暨期末总结 第四单元三次作业架构与迭代 整体感受 HW1 HW2 HW3 四个单元架构设计与方法演进 Unit1 Unit2 Unit3 Unit4 ...

  7. Spring Security OAuth 格式化 token 输出

    个性化token 背景 上一篇文章<Spring Security OAuth 个性化token(一)>有提到,oauth2.0 接口默认返回的报文格式如下: {     "ac ...

  8. Debian10 安装MyCLI

    1 概述 Debian10安装MyCLI. 环境: Debian10 Python3.7 2 准备环境 2.1 Python 首先确保安装了Python: apt install python3 若是 ...

  9. ssh+scp基本使用

    1 ssh ssh一般用于连接服务器,可以使用密码认证与密钥认证的方式. 1.1 密码认证 直接使用ssh即可: ssh username@xxx.xxx.xxx.xxx username为用户名,后 ...

  10. 12.Quick QML-QML 布局(Row、Column、Grid、Flow和嵌套布局) 、Repeater对象

    1.Row布局 Row中的item可以不需要使用anchors布局,就能通过行的形式进行布局. 并且item可以使用Positioner附加属性来访问有关其在Row中的位置及其他信息. 示例如下所示, ...