IOC
理解
理解
使用IOC对象的依赖都是在对象创建是由负责协调系统中各个对象的外部实体提供的。
减少耦合的一个通常做法是具体实现隐藏在接口下,使得具体实现类的替换不会影响到引用类。
IOC也被称之为DI,是Spring的两大核心概念之一。
A. 依赖注入的概念
Spring的两大核心概念:一个是控制反转(IOC), 也叫做依赖注入(DI);还有一个是面向切面编程(AOP),IOC和DI虽然不是Spring的首创,但是他没在这两方面都非常优秀,可以说整个Spring框架都是围绕着其IOC实现和Aop实现架设起来的。
控制反转模式的基本概念:当某个java对象需要依赖另一个java对象时,不是自身直接创建依赖对象而是由实现IOC容器来创建,并将它注入到需要这个依赖对象的java对象中
B. Spring的依赖注入
Spring框架带有一个IOC容器它使用的注入方式有构造器注入和setter注入。
a) 构造器注入:通过构造器方法来传入所依赖的对象,从而完成依赖关系的设定
b) Setter注入:通过set方法来传入所依赖的对象,从而完成依赖关系的设定
什么是依赖注入?
1、 什么是依赖?
依赖指的是类之间的访问关系。如果类A访问类B的属性或方法或者类A负责实例化类B,那么可以说类A依赖类B,和关联关系不同,无需把类B定义为类A的属性。在Spring中是通过注入来实现依赖关系的。
2、 什么是依赖注入?
依赖注入背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性。
依赖注入作用:容器的工作就是创建bean时注入那些依赖关系。相对于由bean自己来控制其实例化、直接在构造器中指定依赖关系这些自主控制依赖关系注入的方法来说,控制从根本上发生了倒转,这也正是控制反转(Inversion of Control, IoC) 名字的由来。 应用此原则后,代码将更加清晰。而且当bean自己不再担心对象之间的依赖关系(甚至不知道依赖的定义指定地方和依赖的实际类)之后,实现更高层次的松耦合。
依赖注入的主要注入方式有:setter注入和构造器注入。
此外还有接口注入,在此重点介绍setter注入和构造器注入。
3、 setter注入介绍
setter注入通过调用无参构造器或无参static
工厂方法实例化bean之后,调用该bean的setter方法,即可实现基于setter的注入。
下面通过一个例子进行介绍:
创建一个DAO接口,接口中有insert和delete两个方法,
创建一个真正的业务实现类GoodsDAOImpl实现了DAO接口,
在GoodsDAOImpl类,包含name和price属性,并实现相应的set方法和DAO中的方法。
创建一个继承接口DAO的接口GoodsDAO,
创建GoodsAction类进行真正的业务处理,实现了接口GoodsDAO,包含一个GoodsDAOImpl类型的对象,用此对象来调用GoodsDAOImpl中的方法
代码如下:
public class GoodsAction {
/**此GoodsActionImpl的属性名称gdi一定要与 spring配置文件中propertyname的属性名称一致 必须有相应的set方法 通过此方法(set方法)注入*/
private GoodsDAOImpl gdi;
/***实现相应的set方法/
public void setGdi(private GoodsDAOImpl gdi){
this.gdi=gdi();
}
public String insert() {
System.out.println("-------------------------------");
gdi.insert
}
public String delete() {
gdi.delete();
}
}
在真正的业务实现类中代码如下
public class GoodDAOImpl implements DAO{
@Override
public String insert() {
System.out.println("插入成功");
}
public String delete() {
System.out.println("删除成功");
}
}
在applicationContext.xml配置文件中进行配置代码如下
<!-- 定义一个真正业务实现的Bean的实例,通过scope属性指明业务实例对象的作用域 每次请求都会创建一个新实例 -->
<bean id="gDI" class="spr.impl.GoodsDAOImpl" scope=" s ingleton "/>
<!-- 处理业务的Action类 ,创建该bean的一个实例,指明实例的作用域 -->
<bean id="gAction" class="spr.ac.GoodsAction" scope="s ingleton">
<!-- 通过业务实现类属性gdi的setget方法, ref引用的实例注入到gid属性中 -->
<property name="gdi" ref="gDI"/>
</bea
创建Test测试类,在main方法里测试代码如下:
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext ("applicationContext1.xml");
GoodsAction ga = (GoodsAction)ac.getBean("GAction");
ga.insert();
}
1、 构造器注入介绍
构造器的注入通过调用带参数的构造器来实现,每个参数代表着一个依赖。
构造器注入方式:构造器参数类型匹配和构造参数索引。
下面通过一个例子进行介绍:
首先在上面的Goods
类中添加默认构造器和带有参数的构造器代码如下:
public class Test{
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"ap.xml"}); /**如果要解析多个文件可以定义一个String数组,用逗号隔开*/
Goods gds = (Goods) ac.getBean("goods");
System.out.println("商品的名称"+gds.getName()+" 商品的价格"+gds.getPrice());
}
}
分享到:
相关推荐
### Spring IoC与注解依赖注入详解 #### 一、Spring框架简介 Spring框架是由Rod Johnson创建的一...以上就是关于Spring IoC容器以及注解依赖注入的相关知识点介绍,希望能够帮助大家更好地理解和掌握这一重要的技术。
二、注解驱动的依赖注入 随着Java注解的流行,Spring引入了基于注解的DI。在类或方法上使用`@Autowired`注解可以自动匹配并注入依赖。例如: ```java @Service public class Service { @Autowired private ...
**Spring 框架中的控制反转 (IoC) 和依赖注入 (DI)** 在软件开发中,控制反转(Inversion of Control,简称IoC)是一种设计原则,它将对象的创建和管理权从代码中剥离出来,转交给一个外部容器(如Spring框架)。...
Spring依赖注入是Spring框架的核心特性之一,它极大地简化了Java应用程序的开发,使得对象之间的依赖关系得以解耦,提高了代码的可测试性和可维护性。本文将深入探讨Spring依赖注入的底层实现机制。 首先,我们要...
Spring依赖注入是Spring框架的核心特性之一,它使得对象之间的依赖关系得以解耦,增强了代码的可测试性和可维护性。依赖注入(Dependency Injection,简称DI)的理念是,一个对象不应该负责寻找并创建它所依赖的对象...
下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口注入 接口注入是指通过接口来实现依赖注入的方式。在 Spring 中,我们可以通过定义一个接口,然后在实现类中实现该接口。例如,在上面的示例...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它允许对象之间的耦合性降低,使得代码更易于测试和维护。依赖注入的核心思想是将一个对象依赖的其他对象通过构造函数、setter方法...
### 二、Spring.NET 中的依赖注入 Spring.NET 提供了多种依赖注入方式,包括构造函数注入、属性注入和方法注入。以下分别介绍: 1. **构造函数注入**:通过在类的构造函数中传递依赖对象的实例来实现。这种方式...
本文将详细介绍依赖注入的概念、作用以及其实现方式,并通过具体的代码示例来加深理解。 #### 二、依赖注入概述 依赖注入是一种设计模式,它允许在运行时将对象的依赖关系动态地传递给对象,而不是在代码中硬编码...
二、Spring4的依赖注入实现 1. 构造器注入:通过构造函数传递依赖对象。Spring会寻找带有相应参数类型的构造函数,并调用该构造函数创建对象实例。例如: ```java public class UserService { private ...
【Spring依赖注入详解】 在Java开发中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)功能而闻名。依赖注入是一种设计模式,它允许我们解耦组件,使我们的应用程序更加灵活,易于测试和维护。本篇...
javaEE 开发中 现在最成熟的框架之一应该就是spring了 spring框架最强大的地方就是实现了依赖注入 也叫控制反转 最近的一个项目中用的就是 spring框架 spring框架是工厂模式的应用结合了MVC的设计思想 大家可以...
Spring依赖注入(Dependency Injection,简称DI)是Java应用开发中常用的设计模式,它极大地提高了代码的可测试性和可维护性。在Spring框架中,依赖注入是核心特性之一,通过控制反转(Inversion of Control,IoC)...
通过阅读和理解这些源码,你可以更深入地了解Spring依赖注入的工作原理及其在项目中的具体使用。 在进行依赖注入时,Spring使用BeanFactory或ApplicationContext作为容器,负责创建、管理和装配Bean。容器读取配置...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得对象之间的耦合度降低,提高了代码的可测试性和可维护性。本文将深入探讨Spring中的依赖注入方式,包括构造器注入、设值注入...
Spring框架的依赖注入(Dependency Injection,简称DI)是其核心特性之一,它使得对象之间的关系在运行时由Spring容器管理,而不是硬编码在类内部。这样可以提高代码的可测试性和可维护性,因为对象的依赖关系变得松...
在Java开发中,Spring框架是应用最广泛的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)容器。它极大地简化了组件之间的依赖管理,提高了代码的可测试性和可维护性。本篇文章将深入...
在深入探讨Spring框架中基于注解(Annotation)的依赖注入(Dependency Injection,简称DI)实现之前,我们首先需要理解几个核心概念:Spring框架、依赖注入、以及注解本身。 ### Spring框架简介 Spring框架是一个...