Spring不仅提供对象,还提供对象的属性值,而不是由使用该对象的程序所提供的。

Java应用是由一些相互协作的对象所组成的,在Spring中这种相互协作的关系就叫依赖关系。

如果A组件调用了B组件的方法,那么A就依赖于B。

依赖注入是目前最优秀的解耦方式。(先这么听吧)

控制反转(IOC)和依赖注入(DI)讲的是一会事。

传统的Java中,一个实例(调用者)要调用另一个实例(被调用者)的时候,通常都是调用者自己创建被调的实例,

但是在依赖注入的模式下,被调用者是由容器提供的。

好像就是说,我要修汽车,我肯定需要扳手,螺丝刀等工具,这些工具构成一套工具,是一个工具箱。

现在如果是传统模式,我需要自己造扳手,自己造螺丝刀;现在有了容器就不一样了,容器就相当于一个工具箱了,里面有我想要的东西。

我不需要自己造轮子了,拿来用就可以了。

三种编程模式,面向对象(OOP),面向接口(IO),面向切面(AOP)。

Spring的依赖注入对调用者和被调用几乎没有任何要求,完全支持POJO之间的依赖关系的实例。

依赖注入通常有两种:

设值注入:IoC容器使用属性的setter方法来注入被依赖的实例;

构造注入:IoC容器使用构造器来注入被依赖的实例。

设值注入

Spring正是以松耦合的方式来管理这些依赖关系。

一般调用者一般都有一个接口属性,调用接口的方法,用setter设置注入就是将实现该接口的实例赋给该属性。

Spring是使用了XML配置文件。

在XML配置文件中,Spring配置Bean实例通常会指定两个属性:

id:指定该Bean的唯一标识,程序通过id属性来访问该实例;

class:指定该Bean的实现类,此处不可在用接口,必须使用实现类。XML会读取该属性并使用反射来创建该实现类的实例。

Spring容器获得了Bean的实例之后,使用这个Bean实例就是平凡的。

Spirng IoC容器的3个基本要点:

1、各组件面向接口编程

2、各组件不再由程序主动产生,而是由Spring容器来负责产生,并初始化

3、Spring采用配置文件来管理Bean的实现类

构造注入则是利用构造函数来设置依赖关系。我觉得是大同小异。

设值注入是先利用无参构造函数创建一个Bean实例,再利用setter方法注入依赖关系。

Spring的核心机制——依赖注入(Dependency Inject)的更多相关文章

  1. Spring的核心机制依赖注入

    原文地址:http://developer.51cto.com/art/200610/33311.htm 本文主要讲解依赖注入(设值注入.构造注入),作用是可以使Spring将各层的对象以松耦合的方式 ...

  2. Spring的核心机制——依赖注入(Dependency Inject)

    Spring不仅提供对象,还提供对象的属性值,而不是由使用该对象的程序所提供的. Java应用是由一些相互协作的对象所组成的,在Spring中这种相互协作的关系就叫依赖关系. 如果A组件调用了B组件的 ...

  3. spring-第一篇之spring核心机制依赖注入(DI)/控制翻转(IoC)

    1.spring的核心机制:依赖注入(DI)/控制翻转(IoC) 什么是依赖:A对象需要调用B对象,所以A依赖于B. 什么是注入:A对象注入一个属性B对象. 什么是依赖注入(DI):A对象依赖于B对象 ...

  4. 7 -- Spring的基本用法 -- 3... Spring 的核心机制 : 依赖注入

    7.3 Spring 的核心机制 : 依赖注入 Spring 框架的核心功能有两个. Spring容器作为超级大工厂,负责创建.管理所有的Java对象,这些Java对象被称为Bean. Spring容 ...

  5. Spring源码剖析依赖注入实现

    Spring源码剖析——依赖注入实现原理 2016年08月06日 09:35:00 阅读数:31760 标签: spring源码bean依赖注入 更多 个人分类: Java   版权声明:本文为博主原 ...

  6. Spring控制反转与依赖注入(IOC、DI)

    IOC: 反转控制   Inverse Of Control DI:依赖注入 Dependency Injection 目的:完成程序的解耦合 解释:在应用系统的开发过程中,有spring负责对象的创 ...

  7. 回客科技 面试的 实现ioc 容器用到的技术,简述BeanFactory的实现原理,大搜车面试的 spring 怎么实现的依赖注入(DI)

    前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱.所以需要继续加强. 这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说 ...

  8. 简明依赖注入(Dependency Injection)

    前言 这是因特奈特上面不知道第几万篇讲依赖注入(Dependency Injection)的文章,但是说明白的却寥寥无几,这篇文章尝试控制字数同时不做大多数. 首先,依赖注入的是一件很简单的事情. 为 ...

  9. 14.AutoMapper 之依赖注入(Dependency Injection)

    https://www.jianshu.com/p/f66447282780   依赖注入(Dependency Injection) AutoMapper支持使用静态服务定位构建自定义值解析器和自定 ...

随机推荐

  1. LINUX下渗透提权之嗅探技术

    内网渗透在攻击层面,其实更趋向于社工和常规漏洞检测的结合,为了了解网内防护措施的设置是通过一步步的刺探和经验积累,有时判断出错,也能进入误 区.但是如果能在网内进行嗅探,则能事半功倍,处于一个对网内设 ...

  2. POJ 1511 链式前向星+SPFA

    #include<iostream> #include<cstdio> #include<cstdlib> using namespace std; const i ...

  3. Python 类变量 实例变量

    类变量: ​ 是可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的).例如下例中,num_of_instance 就是类变量,用于跟踪存在着多少个Test 的实例. 实例变量: 实例 ...

  4. iNode协议再次分析

    iNode协议再次分析 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach删除相应部分 ...

  5. C++中返回对象的情形及RVO

    http://www.cnblogs.com/xkfz007/archive/2012/07/21/2602110.html 之前有文章介绍过临时对象和返回值优化RVO方面的问题.见此处. 在C++中 ...

  6. Tomcat日志、项目中的log4j日志、控制台——我的日志最后到底跑哪去了?

    1.Tomcat自带日志功能,即时你的项目中有log4j也不会影响到Tomcat自己记录日志. 2.你的项目中的log4j中的日志指定打印到什么地方(控制台或者文件),便会打印到什么地方,和Tomat ...

  7. C# 递归查找文件夹下所有文件和子文件夹的所有文件

    方法实现 public class DirectoryAllFiles { static List<FileInformation> FileList = new List<File ...

  8. SQL Server Profiler 跟踪sql小技巧

    使用Profile监控sql时候经常会有很多很多的sql,想查询那条是自己的sql很困难,但是连接字串有个参数可以解决这个问题这个参数是Application Name例如说 我们在需要的数据库连接中 ...

  9. CodeSmith单表生成实体模板与生成多表实体模板

    生成单实体模板: <%@ Template Language="C#" TargetLanguage="C#" %> <%@ Assembly ...

  10. 区分SQL Server关联查询之inner join,left join, right join, full outer join并图解

    1.from A inner join B on A.ID=B.ID :两表都有的记录才列出 A表:  ID   Name                           B表: ID  Clas ...