DI

spring的三种主要的装配机制

好久不见. 提交于 2020-11-14 11:25:01
本文中使用一个接口类UserInterface以及接口的实现类UserInterfaceImpl,调用接口UserInterface的UserCall类来做示例。 package com.springbean; public interface UserInterface { void userMethod(); } package com.springbean.impl; import com.springbean.UserInterface; public class UserInterfaceImpl implements UserInterface{ public void userMethod() { System.out.println("UserInterfaceImpl - userMethod()"); } } package com.springbean; import java.util.List; public class UserCall { private UserInterface ui; private String username; private List<String> tags; /** * getter and setter */ } 在下面,我们即将为 UserCall 注入一个 UserInterface 的实现类,一个 字符常量

基于unity框架构造IOC容器

时间秒杀一切 提交于 2019-12-26 07:49:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一.写在前面 基于 上一篇 通过配置文件形成ioc容器的例子,我们采用另外一种方式去形成ioc容器,那就是unity框架。 二.unity简介 Unity 应用程序块( Unity )是一个轻量级、可扩展的依赖注入容器,支持构造函数、属性和方法调用注入。 1.控制反转 (IoC) 模式,这是一种设计模式,它描述了用于支持对象可以“查找”它们需要的其他对象的实例的插件架构的技术。 2.依赖注入 (DI) 模式,这是 Ioc 模式的一种特殊情况,是一种基于改变对象的行为而不改变类的内部的接口编程技术。开发人员编写实现接口的类代码,并基于接口或者对象类型使用容器注入依赖的对象实例到类中。用于注入对象实例的技术是接口注入、构造函数注入、属性(设置器)注入和方法调用注入。 三.为什么要实现DI(依赖注入) 为了灵活的在外部就拿到了实现后的接口,通过unity可以有很多方式去实现这样的要求。 下面分常见的两种方式(构造函数注入和属性注入依赖)。 说明:为什么要注入依赖?因为以前的拿到接口的地方是在调用者(类)的内部实现接口的。比如一个类A需要用的接口B,那经常我们会这样,在A的内部的某个方法下需要使用到接口B,那我们就在这个方法里面去实现这个接口,然后调用这个接口。那么这个类A与接口B的依赖关系就放在了类A的里面

浅析 Spring IoC

十年热恋 提交于 2019-12-03 12:36:08
1. IoC是什么? IoC(Inversion of Control)即控制反转,不是什么技术,而是一种设计思想 。在Java开发中,IoC 意味着将你设计好的对象交给容器去控制,而不是传统的在对象内部直接控制(比如说 new 一个对象)。 理解好 IoC 的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了“: 谁控制谁,控制什么: 传统Java SE 程序设计,我们直接在对象内部通过 new 创建对象,是程序主动去创建依赖对象;而 IoC 是由 IoC容器来创建这些对象(在容器启动的时,容器会初始化 配置文件中定义的 bean,如果 bean 中添加参数 lazy-init="true" 则不会被创建对象) ; 谁控制谁?当然是 IoC容器控制对象。 控制什么? 主要控制了外部资源获取(不只是对象,也包括文件等。。。) 为何是反转: 传统Java SE 程序设计,我们直接在对象内部通过 new 创建对象,是程序主动去创建依赖对象,也就是正转;而反转则是由容器来创建以及注入依赖对象。下面由两张图说明: 2. IoC 能做什么 传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,增加了维护难度;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,利于功能复用

对Spring的IoC和DI最生动的解释

纵然是瞬间 提交于 2019-12-01 04:22:51
1、Spring IOC IoC 与DI 首先想说说IoC(Inversionof Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱 好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传 统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。   那么 IoC是如何做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所。婚介管理了很多男男女女的资料,我可以向婚 介提出一个列表,告诉它我想找个什么样的女朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类的,然后婚介就会按照我 们的要求,提供一个mm,我们只需要去和她谈恋爱、结婚就行了。简单明了,如果婚介给我们的人选不符合要求,我们就会抛出异常。整个过程不再由我自己控 制

Spring IOC理解

大兔子大兔子 提交于 2019-11-29 20:24:30
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解   首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么   Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:   ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么

Mini 容器学习笔记1——环境搭建(基础篇)

北城以北 提交于 2019-11-29 07:46:17
一. 环境下载 到Mini 容器的 官方网站 下载 NLite框架 的二进制文件,下载并解压后就可以了。 我们使用NLite框架需要用到下面的文件: NLite.dll(必要) 二. 建立NLite应用程序 新建一个控制台应用程序 HostMini 添加NLite.dll 引用 添加命名空间:using NLite;using NLite.Mini; 在主函数中添加创建Mini容器的代码:var container = new Kernel(); 创建契约接口IMessageSender 创建组件EmailSender 通过服务注册表注册组件EmailSender 通过服务定位器获取契约接口 调用契约方法: 运行程序,输出结果 using System; using System.Collections.Generic; using System.Linq; using System.Text; using NLite; using NLite.Mini; namespace HostMini { public class App { [Contract] public interface IMessageSender { void Send( string message); } public class EmailSender : IMessageSender { public

spring IOC/DI容器的理解

亡梦爱人 提交于 2019-11-28 20:14:47
参与者:应用程序和spring 正向:现在的程序方向,A对象要使用B对象,现在是A里面直接创建B的实例,然后调用。 publc class A{ void t1(){ new B().t2(); } } public class B{ void t2(); 简而言之,就是程序需要什么。就由程序主动去获取需要的资源,这个方向就是正向。 容器是用来创建和装配对象,并管理对象生命周期的。对于应用程序而言,就是被动实例化和被动接受依赖了。 装配: 在spring容器内拼凑bean叫作装配。装配bean的时候,你是在告诉容器, 需要哪些bean,以及容器如何使用依赖注入将它们配合在一起。 IOC/DI思想: 1把程序之间的依赖关系去掉。 2把程序对象设置到IOC/DI容器的配置中,作为Bean 3 由IOC和DI容器来管理Bean的创建,实例化。 4 由IOC/DI容器把Bean之间的关系注入到需要这些关系的对象里面。 简而言之就是对象之间的依赖,全部去掉,然后由IOC/DI容器管理对象和对象之间的依赖关系。 功能:实现了对象之间的松散耦。 1谁控制谁? IOC/DI容器控制应用程序 2控制什么 a控制对象本身的创建和实例化和装配 b控制对象之间的依赖关系 3为何叫反转? 因为应用程序不能主动的获取外部资源 ,而是被动等待IOC容器给他注入他所需要的资源。所以称为反转。 4:哪些方面反转了?