Spring 的依赖注入是什么意思?
依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在 传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者 实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。
如楼上所说 “依赖注入就是通过配置文件解决代码问题
”这种方式是设置注入 (又称 setter注入)相当于一个bean工厂,工厂帮你创建好了这个bean对象,然后调用了 setMessage方法将"Hello"设置到了你的bean对象当中
依赖注入就是通过配置文件解决代码问题

Spring依赖注入
是java自带的注解,有两个属性name 和 type,Spring支持使用@Resource来注入。 1、加到类的属性字段上,默认会使用反射机制来实现注入;2、原则上要加到类的属性set方法上。1、加到类的属性字段上,默认的name是属性名称,默认的type是属性类型2、加到类的属性set方法上,默认的name是方法名去掉set后将其首字母小写 或 方法的参数名称(2个有一个存在即可),默认的type就是set方法的参数类型。1、都不显示指定时,默认先按照byName,再按照byType来查找类并注入2、显示指定了name,则只会按照byName查找类并注入3、显示指定了type,则只会按照byType查找类并注入4、都指定时,则查找同时满足byName和byType的类并注入byName的原则,查找beanId等于指定的名称的bean,找不到则抛出异常。byType的原则,查找指定的类、实现类或子类,找不到或是找到多个,都会抛出异常。是spring提供的注解,有一个属性required,表示注入时如果bean不存在是否允许。(默认是true表示不允许为空,否则报错。)1、加到类的属性字段上,默认会使用反射机制来实现注入;2、原则上要加到类的属性set方法上。1、加到类的属性字段上,默认的name是属性名称,默认的type是属性类型2、加到类的属性set方法上,默认的name是方法的参数名称,默认的type就是set方法的参数类型。默认先按照byType查找类并注入,再按照byName查找类并注入。byName的原则,查找beanId等于指定的名称的bean,找不到则抛出异常。 byType的原则,查找指定的类、实现类或子类,找不到或是找到多个,都会抛出异常。

注意细节,阿里架构师一文详解SpringDI的四种依赖注入方式
2.1 了解DI的思想顾名思义,依赖注入是由“依赖”和“注入”两个词汇组合而成,那么我们再一次顺藤摸瓜,分别分析这两个词语!2.2 依赖关于谁依赖与谁,当然是应用程序依赖于IOC容器。因为应用程序依赖于IOC容器提供的对象所需外部资源,所以就产生了这种依赖关系。(可以理解为入口,虽然不是这么严谨吧!)2.3 注入3.1 Setter方法注入Setter方法注入,它只需要提供对应的Setter方法接口实现注入,由于JavaBean一般都实现了Setter方法,所以Setter方法注入也成为了我们常用的注入方法之一。3.1.1 定义JavaBean3.1.2 注入各种数据类型3.1.3 注入自建类型数据将Service层需要一个Dao层实现类对象,我们可以使用注入方式来实现对Service层和Dao层的对象关联将创建的Bean对象注入到另一个对象中,比如一个JavaBean对象中作为了另一个JavaBean对象的属性3.2 构造方法注入创建对象时,Spring工厂会通过构造方法为对象的属性赋值。由于某些框架或者项目中并没有为JavaBean提供Setter方法,我们就可以利用其构造方法来注入。不要和我说,没有提供构造方法哈!(开个玩笑!)3.2.1 定义JavaBean3.2.2 构造方法注入3.3 自动注入不用在配置中 指定为哪个属性赋值,及赋什么值。由spring自动根据某个 "原则" ,在工厂中查找一个bean,为属性注入属性值。3.3.1 注入场景将Dao层实现类对象注入到Service层并调用方法得以测试3.3.2 自动注入的两种方式基于名称自动注入值基于类型自动注入值,根据实现的接口来判断并自动注入值,如果实现此接口的实现类太多,它会在很多实现此接口的实现类中选择名字相同的实现类进行注入。(现根据判断,如果不成功,则根据名称注入)3.4 注解自动注入使用基于类型自动注入,将Dao层注入到Service层使用基于名称自动注入,将Dao层注入到Serivce层使用注入简单类型数据注解来完成简单注入JavaBean

spring的依赖注入是什么意思
依赖注入(Dependency Injection):在运行期间,有外部容器动态地将依赖对象注入到组件中(构造方法和set方法) 好处:1、降低组件之间的耦合度,实现软件各层之间的解耦。2、可以使容器提供众多服务如事务管理消息服务处理等等。3、容器提供单例模式支持,开发人员不需要自己编写实现代码。 4、容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能。
先看一段代码 假设你编写了两个类,一个是人(Person),一个是手机(Mobile)。人有时候需要用手机打电话,需要用到手机的dialUp方法。传统的写法是这样:Java codepublic class Person{public boolean makeCall(long number){Mobile mobile=new Mobile();return mobile.dialUp(number);}}也就是说,类Person的makeCall方法对Mobile类具有依赖,必须手动生成一个新的实例new Mobile()才可以进行之后的工作。依赖注入的思想是这样,当一个类(Person)对另一个类(Mobile)有依赖时,不再该类(Person)内部对依赖的类(Moblile)进行实例化,而是之前配置一个beans.xml,告诉容器所依赖的类(Mobile),在实例化该类(Person)时,容器自动注入一个所依赖的类(Mobile)的实例。接口:Java codepublic Interface MobileInterface{public boolean dialUp(long number);}Person类:Java codepublic class Person{private MobileInterface mobileInterface;public boolean makeCall(long number){return this.mobileInterface.dialUp(number);}public void setMobileInterface(MobileInterface mobileInterface){this.mobileInterface=mobileInterface;}}在xml文件中配置依赖关系Java code 这样,Person类在实现拨打电话的时候,并不知道Mobile类的存在,它只知道调用一个接口MobileInterface,而MobileInterface的具体实现是通过Mobile类完成,并在使用时由容器自动注入,这样大大降低了不同类间相互依赖的关系。

spring依赖注入有几种方式
这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口): Java代码package com.bless.springdemo.action;public class SpringAction {//注入对象springDaoprivate SpringDao springDao;//一定要写被注入对象的set方法public void setSpringDao(SpringDao springDao) {this.springDao = springDao; }

本文由 在线网速测试 整理编辑,转载请注明出处。