一、依赖注入的概念
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容器** Spring Ioc容器是整个Spring框架的基石,它负责创建、配置和管理对象。容器通过读取XML、Java注解或Java配置类等方式,获取对象的定义信息,然后根据这些信息实例化对象并进行依赖注入。 *...
这个压缩包包含的是Spring框架的IOC(Inversion of Control)核心组件的jar包,是理解和使用Spring进行应用程序开发的基础。 **IOC容器** IOC,或称DI,是Spring的核心特性,它使得开发者可以将对象的创建和管理...
在Spring框架中,IOC(Inversion of Control,控制反转)是其核心概念之一,它改变了传统应用程序中的对象创建和管理方式。本学习资料主要聚焦于Spring的IOC容器,特别是从最基本的BeanFactory开始,逐步深入理解...
Spring框架是Java开发中不可或缺的一部分,它通过提供两种核心特性——控制反转(IoC)和面向切面编程(AOP)来简化应用的构建。理解并掌握这两种技术对于任何Java开发者来说都至关重要。 **控制反转(IoC)**,也...
依赖注入是Spring框架的核心特性之一,它通过反转对象创建和管理的控制权,使得应用程序组件之间的耦合度降低。在Spring中,通常通过以下三种注解实现IoC: - `@Autowired`:自动装配,Spring会根据类型或名称找到...
在这个简单的例子中,`Spring IOC AOP MVC 简单例子`可能是整个项目的整合示例,它将上述三个核心组件结合在一起,演示了如何在一个实际的Web应用中使用Spring。这个示例可能会包括一个简单的用户登录功能,展示如何...
### Spring源码分析_Spring_IOC:深入理解Spring的IOC容器机制 #### 基本概念与核心作用 ...通过深入理解IOC容器的创建与初始化流程,开发者能够更好地利用Spring框架,构建高效、可维护的应用系统。
Spring 是一个广泛应用的 Java 应用开发框架,其核心特性之一就是IOC,它极大地简化了软件组件之间的依赖管理。在本文中,我们将深入探讨 Spring IOC 的概念、工作原理以及如何在实际项目中应用。 首先,理解 IOC ...
5. ** ApplicationContext**:Spring应用上下文(`ApplicationContext`)是IoC容器的接口,负责读取配置文件并创建bean。在案例中,我们可能会看到如何通过`ClassPathXmlApplicationContext`加载配置文件并获取bean...
通过以上步骤,我们可以将Spring的IOC功能和Mybatis的简单数据库操作能力结合,构建出高效、可维护的Java Web应用。Spring的IOC使得我们能更专注于业务逻辑,而Mybatis则让我们能更灵活地处理数据库交互,两者整合...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器处理,使得开发者可以更专注于业务逻辑的编写,而不是对象的生命周期管理。下面,我们将深入探讨Spring...
【Spring 框架与控制反转 (IOC) 知识详解】 Spring 框架是 Java Web 开发中广泛使用的轻量级框架,其核心特性是控制反转 (IOC) 和依赖注入 (DI)。...理解并熟练应用这些概念,能提升开发效率和软件质量。
在测试Spring应用时,可以使用ApplicationContext接口作为容器。它有两种实现方式:ClassPathXmlApplicationContext和FileSystemXmlApplicationContext。前者用于加载存放在项目类路径下的配置文件,后者用于加载...
Spring4 IOC(Inversion of Control,控制...通过这个Spring4 IOC示例源码的学习,不仅可以加深对Spring框架的理解,还能提升在实际项目中的应用能力。在实践中不断探索和掌握,将有助于成为一名更优秀的Java开发者。
在Java世界里,Spring框架是应用最广泛的轻量级框架之一,它的核心特性包括IOC(Inversion of Control,反转控制)和AOP(Aspect Oriented Programming,面向方面编程)。这两个概念是Spring框架的灵魂,极大地提升...
7. ** ApplicationContext**:Spring应用上下文是IOC容器的实现,提供了获取Bean、事件发布等功能。`TestSpringIoc`可能创建ApplicationContext实例,并通过它来获取和操作Bean。 通过`TestSpringIoc`的测试,我们...
IOC意味着应用程序不再直接创建对象,而是由一个外部容器(如Spring框架)来负责对象的创建和管理。这样可以降低组件之间的耦合度,提高代码的可测试性和可维护性。 在Spring中,主要通过以下几种注解来实现IOC: ...
Spring框架作为Java企业级应用开发的基石,其核心组件之一便是IOC(Inverse of Control)容器。IOC容器负责管理应用程序中的对象及其依赖关系,实现了控制反转,极大地简化了Java应用的开发流程。本文将基于Spring...