IOC随笔小记录
对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随笔小记录的更多相关文章
- Java 需要记得、了解的关键词 (Java 学习中的小记录)
Java 需要记得.了解的关键词 (Java 学习中的小记录) 作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用
- Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)
Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...
- 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)
关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录) 作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...
- 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)
利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录) 作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...
- html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)
html/css 盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width 是"宽 ...
- NDK开发小记录 C++读取java层对象内容
这是自己NDK开发得小记录,关于C++层读取java层传来的对象内容. 很简单的一个例子, 1.首先在java层定义了一个类NumList: public class NumList { public ...
- centos 6.X minimal 系列最小化安装完成后,安装mono和jexus过程小记录
在使用虚拟机安装minimal版centos运行mono+jexus的时候,遇到了一些坑,记录一下,比如虚拟机访问不了网络,没wget命令没开放80端口,等等小问题,其他网上教程已经有mono+jex ...
- Backbone小记录
前言 这两天看了下Backbone.js的知识,大概了解了这个框架的一些知识. 写篇博客总结一下. Backbone.js是一个web端javascript的轻量级MVC框架.为什么说是轻量级呢?因为 ...
- HorizontalScrollView做页卡的一个小记录
用HorizontalScrollView做页卡,实现一个如下图的效果:
随机推荐
- C#无边框窗体拖动代码
1.重写 protected override void WndProc(ref Message m) { if (m.Msg == 163 && this.ClientRectang ...
- E - Recursive sequence HDU - 5950 (矩阵快速幂)
题目链接:https://vjudge.net/problem/HDU-5950 思路: 构造矩阵,然后利用矩阵快速幂. 1 #include <bits/stdc++.h> 2 #inc ...
- 攻防世界 reverse 进阶 8-The_Maya_Society Hack.lu-2017
8.The_Maya_Society Hack.lu-2017 在linux下将时间调整为2012-12-21,运行即可得到flag. 下面进行分析 1 signed __int64 __fastca ...
- 搞懂 ZooKeeper 集群的数据同步
本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. 项 ...
- Linux 服务器性能测试报告-sysbench命令实践
Linux 服务器性能测试报告 我们使用linux 工具sysbench 来测试linux服务器性能,目前在Centos上进行操作 Install sysbench yum -y install sy ...
- Dynamics CRM证书更换
Dynamics CRM产品一般有两种认证方式.第一种是基于声明的内部访问也就是无证书单纯用账号密码验证.第二种就是联合身份认证,需要安装网站证书. 对于联合身份认证的情况因为需要安装证书,而且证书是 ...
- spring boot 通过feign调用api接口
目的:远程调用服务器api,直接上步骤: 1,添加maven依赖,这是必须的: <dependency> <groupId>org.springframework.cloud& ...
- 【Java】String、StringBuilder和StringBuffer
[String] 首先,从String类的定义入手,可以看到String类是由final修饰,即不可变的,一旦创建出来就不可修改,因此首先明确,字符串的拼接.截取等操作都会产生新的字符串对象. 观察以 ...
- 8.switch语句
switch语句语法 switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你可以有任意数 ...
- flex 弹性盒模型的一些例子;
1.垂直居中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...