一、依赖注入的概念
Spring的两个核心概念:一个是控制反转(Inversion of Control,IoC),也可以叫做依赖注入(Dependency Injection,DI);还有一个面向切面编程(Aspect Oriented Programming,AOP)。Ioc和AOP虽然不是Spring首创,然而它在这两方面都做得很优秀,可以说整个Spring框架都是围绕着其IoC实现及AOP实现架设起来的。
控制反转模式的基本概念:当某个Java对象需要(依赖)另一个Java对象时,不是自身直接创建依赖对象,而是由实现IoC的容器(如Spring框架的IoC容器)来创建,并将它注入需要这个依赖对象的Java对象中。
应用系统系统中通过引入实现了IoC模式的IoC容器,就可以由IoC容器来管理对象的生命周期和依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分开。
二、Spring的依赖注入
Spring框架就带有一个IoC容器。它使用的依赖注入方式有构造器注入和Setter注入两种。
1、构造器注入
构造器注入,指的是通过构造方法来传入所依赖的对象,从而完成依赖关系的设定。
2、设置注入
设置注入是指通过setter方法传入依赖对象。这种注入方式简单而且直观。
三、综合案例
package cn.csdn.service;
public interface SpringService {
void display();
}
package cn.csdn.service;
public class SpringServiceImpl implements SpringService {
private String say;
private String str;
public SpringServiceImpl() {
// TODO Auto-generated constructor stub
}
public SpringServiceImpl(String str, String say) {
this.str = str;
this.say = say;
}
public void setSay(String say) {
this.say = say;
}
public void setStr(String str) {
this.str = str;
}
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println(str + "J2EE Spring," + say);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="ssi" class="cn.csdn.service.SpringServiceImpl">
<!--
setter()设置注入 <property name="say" value="IoC控制反转"></property>
-->
<!--
构造器注入1,通过参数的索引位置匹配 (索引位置index从0开始)
<constructor-arg index="0">
<value>你好!</value>
</constructor-arg>
<constructor-arg index="1">
<value>O(∩_∩)O哈哈~</value>
</constructor-arg>
-->
<!--
构造器注入2,通过参数类型匹配(按照构造器中参数的顺序、类型逐个匹配,当构造器中参数顺序、类型发生变化时,下面的参数配置顺序、类型也要进行相应的调整)
-->
<constructor-arg type="java.lang.String">
<value>你好!</value>
</constructor-arg>
<constructor-arg type="java.lang.String">
<value>O(∩_∩)O哈哈~</value>
</constructor-arg>
</bean>
</beans>
package cn.csdn.junit;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import cn.csdn.service.SpringService;
public class SpringJunit {
@Test
public void test1() {
ApplicationContext ac = new ClassPathXmlApplicationContext(
new String[] { "applicationContext.xml" });
SpringService se = (SpringService) ac.getBean("ssi");
se.display();
}
@Test
public void test2() {
ApplicationContext ac = new FileSystemXmlApplicationContext(
new String[] { "src/applicationContext.xml" });
SpringService se = (SpringService) ac.getBean("ssi");
se.display();
}
}
Spring的容器有两个接口:BeanFactory和ApplicationContext,这两个接口的实例被称为Spring应用上下文,它们都是用来产生Bean的工厂,即负责创建和管理Bean。
在实际应用中推荐使用ApplicationContext,它是BeanFactory的子接口,具有比BeanFactory更完善的功能。它的实现类常用的是org.springframework.context.support包中的以下三个类:
ClassPathXmlApplicationContext:主要用来从类路径(CLASSPATH)中的xml文件载入上下文定义信息。
FileSystemXmlApplicationContext:从指定的文件系统路径中的xml文件载入上下文定义信息。
XmlWebApplicationContext:从Web系统中的xml文件载入上下文定义信息。
在创建Spring上下文的实例时,必须提供Spring容器管理的Bean的详细配置信息,Spring的配置信息通常会采用xnl文件。所以,在创建Spring上下文实例时,应该提供xml配置文件作为参数传入。
分享到:
相关推荐
我们都知道,Spring框架的IOC是基于Java的反射机制实现,实现IOC,必须掌握反射的实践方法。Java反射机制是在运行状态中,对于任意类,都能够知道这个类的属性和方法;对于任何一个对象,都能够调用它的任意方法和...
透过这些分析,本文不仅为Java开发者提供了对Spring IoC更深层次的理解,也为高效利用Spring框架提供了实践指导。适合拥有一定Spring框架基础的开发者阅读,特别是那些希望深入理解框架内部工作原理的高级开发人员。
初学者可能不理解什么叫控制反转,那么我们来进一步描述一下Ioc。 Ioc是一种通过描述来生成或获取对象的技术,这里的对象当然是指java对象。 在Java中我们更多的是通过new关键字来创建对象,在Spring中,则是通过...
Spring框架的核心在于其强大的IoC(控制反转)机制,该机制为Java应用提供了一种优雅的依赖注入方式。本文深入探讨了Spring IoC容器的加载过程及其源码实现,揭示了Spring中最为根本的概念之一。这包括从...
动态语言支持 第5篇 展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接...
spring学习中,ioc的第一个例子。用于对ioc进行一个初步的理解。
绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念 第1章 控制反转和容器 1.1 使用容器管理组件 1.1.1 问题描述 1.1.2 ...
动态语言支持 第5篇 展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接...
动态语言支持 第5篇 展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接...
绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念 第1章 控制反转和容器 1.1 使用容器管理组件 1.1.1 问题描述 1.1.2 ...
1、介绍了spring的概念 2、介绍了spring的控制反转IOC 3、介绍了spring的面向切面的编程AOP概念以及应用 4、介绍了spring的模板Template 5、spring与Struts的集成
《精通Spring+4.x企业应用开发实战》 这本书讲的很好,讲解非常详细,Spring各个知识点基本上都讲到了,深入浅出,举了很多通俗易懂的例子方便读者理解。个人印象比较深刻是在讲解IOC的时候举了一个《墨攻》例子,...
在接触Spring的过程中,听到最多的无非两个名词,一个是控制反转一个是依赖注入。实际这是一个意思,控制反转代表原来由程序本身去控制对象之间的依赖关系的这种格局被反转了,通过第三方容器(IOC)去完成控制这些...
《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用...
3.1 在Spring IoC容器里配置Bean 3.1.1 问题描述 3.1.2 解决方案 3.1.3 实现方法 3.2 实例化Spring IoC容器 3.2.1 问题描述 3.2.2 解决方案 3.2.3 实现方法 3.3 解决...
该源码是课程 Java Spring...阅读建议:此资源以开发简化的案例做为Spring学习上手的基础,快速掌握代码编写实现,注重快速掌握Spring,能使新手尽快上手进入开发,同时了解实际应用后,对进一步理解概念更加有促进作用
1.4 我对IoC/DI的理解 1.5 SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结 1.6 »Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了) 1.7 Spring开闭原则的表现-BeanPostProcessor...
附录A介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。附录B介绍一些与Spring有关的其他开源框架。本书的每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必...
Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...