IoC and DI JSR-299 JSR-330
来源:互联网 发布:网络维护兼职工资 编辑:程序博客网 时间:2024/05/19 14:00
前言
JSR 299: Contexts and Dependency Injection for the JavaTM EE platform
JSR 330: Dependency Injection for Java
从名称来看可知 JSR 299 主要作用于 JavaTM EE(在JavaSE环境下功能会打折扣),JSR 330 则作用于任何 Java 环境
理解与认知
IoC and DI
普通编程时,程序逻辑的流程通常是由一个功能中心来控制的,而使用 IoC 机制,这个“中心控制”的设计原则会被反转过来。调用者的代码处理程序的执行顺序,而程序逻辑则被封装在接受调用的子流程中。通过一个例子来理解IoC:
例如,在GUI应用中,GUI框架负责控制调用事件处理器,而不是应用逻辑,当用户点击了一个动作,比如“向前”,GUI框架会自动调用 对应的事件处理器,而应用逻辑可以把重点放在处理动作上。程序的控制被反转了,将控制权由应用逻辑转移到了GUI框架(这个其实就是IoC容器)。
IoC机制也被称为好莱坞原则
:会有另一段代码拥有最初的控制线程,并且由它来调用你的代码,而不是由你的代码调用它,即控制反转到了框架那里,如SpringMVC编程中,最初的Servlet入口必然是Spring的分发器(DispatcherServlet),这就将控制权交给了 Spring 这个 IoC容器,我们编写的 Servlet(或 Controller)只负责业务处理,不必关系业务的控制流程。
不要给我们打电话,我们会打给你。——好莱坞原则
IoC有多种不同的实现,包括工厂模式、服务器定位模式,当然还有依赖注入。需要注意的是,DI并不等于IoC,DI只是IoC的一种实现方式,IoC是一种机制,IoC机制可以有除了DI以外的各种实现方式,它是一种机制,也是一种思想。
DI是IoC的一种特定形态,是指寻找依赖项的过程不在当前执行代码的直接控制之下。Java中为DI提供的容器有Guice、Spring等。DI的好处有:松耦合、易测试、强内聚、可重用、更轻盈的代码。
具体分类的IOC容器的控制反转:
1.DI类的IOC实现是将寻找依赖项的控制权交给了容器
2.服务器定位模式类的IOC实现是将定位服务的控制权交给了容器
3.等等
轻量级的 DI 类的 IoC容器实现 Guice,可以在 JavaSE 和 Servlet中满足我们的控制反转需求,可大大提高程序的开发效率,
当然Spring也有相同的功能,只不过Spring发展到后来还容纳了诸如 事务控制、切面编程等强大功能,已经不单单是一个 依赖注入(DI)容器了,具体用哪个,请自己掂量。
- IoC and DI JSR-299 JSR-330
- JSR 330 And Spring
- JSR
- JSR
- JSR
- JSR
- JSR
- JSR
- 规范化中的 JSR 299 与可能到来的 JSR 330
- Glassfish v3 中的 JSR 299 与 JSR 330
- The Web Beans(JSR 299)
- 什么是JSR
- JSR 规范
- JSR 286
- JSR简介
- jsr-175
- JSR规范
- JSR-166
- AVFoundation自定义相机
- 初学opencv
- this和getApplicationContext区别
- 代码管理——github
- Spring 4.x官方参考文档中文版——第21章 Web MVC框架(6)
- IoC and DI JSR-299 JSR-330
- POJO
- android studio 与github结合使用
- 开发者可以利用docker做什么?
- 【Linux】NAT模式下关于主机ping不通虚拟机的问题
- 代码实现PHP web服务器下绝对路径到Web网址的转换
- Unity动画事件
- base64加密解密
- JS 变量声明提升(Hoisting)