1,提供构造函数来让spring实现构造注入
public class PersonService {
private String name;
//提供bean的构造函数,让spring用构造注入的方式来构造cibean
public PersonService(String name) {
this.name = name;
}
public void info(){
System.out.println("此人的名字为:" + name);
}
}
2,提供setter函数来让spring实现setter注入
package com.supan.spring;
public interface Person {
public void useAxe();
}
package com.supan.spring;
public interface Axe {
public String chop();
}
package com.supan.spring;
public class StoneAxe implements Axe {
public String chop() {
return "石斧砍柴好慢";
}
}
package com.supan.spring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
[color=red]//实现ApplicationContextAware接口让该bean持有了容器的引用。[/color]
public class Chinese implements Person,ApplicationContextAware {
private ApplicationContext atx;
private Axe axe;
public Axe getAxe() {
return axe;
}
public void setAxe(Axe axe) {
this.axe = axe;
}
public void useAxe() {
System.out.println(axe.chop());
}
@Override
public void setApplicationContext(ApplicationContext atx)
throws BeansException {
this.atx = atx;
}
public ApplicationContext getContext(){
return atx;
}
}
3,spring配置文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<bean id="personService" class="PersonService">
<!-- 采用构造注入的方式 -->
<constructor-arg index="0" value="chenchaoyang"></constructor-arg>
</bean>
<bean id="chinese" class="com.supan.spring.Chinese">
<!-- 采用setter注入的方式 -->
<property name="axe" ref="stoneAxe"></property>
</bean>
<bean id="stoneAxe" class="com.supan.spring.StoneAxe"></bean>
</beans>
3,测试类;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.supan.spring.Person;
public class SpringTest {
public static void main(String[] args) {
//创建spring的ApplicationContext
ApplicationContext ctx = new
ClassPathXmlApplicationContext("applicationContext.xml");
PersonService p =
ctx.getBean("personService",PersonService.class);
p.info();
System.out.println(p2.getContext() == ctx);
Chinese p2 = ctx.getBean("chinese",Chinese.class);
p2.useAxe();
System.out.println(ctx);
}
}
4,结果:
此人的名字为:chenchaoyang
石斧砍柴好慢
分享到:
相关推荐
Spring IoC容器主要通过两种方式实现依赖注入: 1. **构造器注入**:通过类的构造方法来注入依赖项。 2. **设值注入**:通过setter方法来注入依赖项。 #### 四、使用注解进行依赖注入 随着Spring框架的发展,除了...
Spring框架是Java开发中广泛应用的一个开源框架,以其优秀的反转控制(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)理念为核心,极大地简化了企业级应用的开发工作。下面将详细介绍这两个...
在Spring框架中,控制反转主要通过两种方式实现:构造器注入和setter注入。构造器注入是在创建对象时通过构造函数传入依赖,而setter注入则是在对象创建后通过setter方法设置依赖。这两种方式都可以帮助我们解耦代码...
依赖注入主要有两种实现方式:设值注入(Setter Injection)和构造注入(Constructor Injection)。 ##### 5.1 设值注入 设值注入是指通过setter方法传入被调用者的实例。这种方式简单直观,易于理解和实现,因此在...
在Spring框架中,依赖注入是核心特性之一,通过控制反转(Inversion of Control,IoC)实现了组件之间的解耦。 ### 依赖注入的基本概念 依赖注入允许开发者在不修改代码的情况下,通过配置来改变对象间的依赖关系。...
Spring框架的核心特性之一就是依赖注入(Dependency Injection,简称DI),它通过控制反转(Inversion of Control,简称IOC)实现。这个"helloIoc.zip"压缩包包含的是一组用于演示Spring IOC基本概念和使用的测试...
在Spring框架中,依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)是核心设计理念,它们旨在降低组件之间的耦合度,提高代码的可测试性和可维护性。理解这两个概念对于掌握...
Spring的核心特性之一就是它的Inversion of Control(IoC,控制反转)容器,也被称为Dependency Injection(DI,依赖注入)。这个概念是Spring框架使应用程序组件之间解耦的关键。让我们深入探讨一下Spring的IoC和...
Spring提供了两种类型的IoC容器:`BeanFactory`和`ApplicationContext`。`BeanFactory`是最基本的容器,而`ApplicationContext`则提供了更多的高级特性,如国际化支持、事件发布机制等。 #### 六、IoC与服务定位器...
本实例主要探讨Spring框架的基础概念,包括依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)。这两个概念是Spring的核心特性,它们极大地简化了代码的维护和管理,提高了软件...
在Java编程中,Spring框架是应用最广泛的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)容器。这篇博客"使用反射和注解模拟Spring的依赖注入"探讨了如何通过基本的Java特性来实现...
Spring框架中的IOC(控制反转)和DI(依赖注入)是两种关键的设计模式,它们极大地提升了软件的可维护性和可扩展性。控制反转是一种设计思想,它改变了传统的对象创建方式,将对象的创建和管理权从应用程序自身转移...
在软件开发领域,IOC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)是两种重要的设计模式,特别是在Java和Spring框架中被广泛使用。这些概念有助于提高代码的可测试性、可维护性和模块...
Spring框架的核心特性之一是控制反转(Inversion of Control,IoC),这与依赖注入(Dependency Injection,DI)密切相关。这两个概念都是为了实现软件组件之间的松耦合,从而提高系统的可扩展性和可维护性。 控制...
在Java的Spring框架中,控制反转(IoC,Inversion of Control)和依赖注入(DI,Dependency Injection)是核心设计理念,它们旨在降低组件之间的耦合度,提高代码的可测试性和可维护性。Spring框架通过IoC容器来管理...
控制反转是依赖注入的一种实现方式,它将对象的创建和管理的权利反转给了一个外部容器,即所谓的IoC容器。在没有IoC的情况下,`Coder`类的依赖关系是在代码中硬编码的,而在IoC模式下,这些依赖关系是在运行时由IoC...
在Spring中,IOC的主要实现方式有两种:依赖注入(Dependency Injection,简称DI)和基于接口的配置。下面将对这两种方式进行详细阐述。 一、依赖注入(Dependency Injection) 1. **构造器注入**:通过构造函数来...
在Java开发领域,Spring框架是应用最广泛的轻量级框架之一,它以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC)特性著称。本文将深入探讨Spring框架中的依赖注入,...
总的来说,Spring .Net 的控制反转和依赖注入特性极大地提升了 .Net 应用程序的可维护性和可测试性。通过合理地配置和使用 IoC 容器,开发者可以构建出更加灵活、解耦的系统,同时简化单元测试和组件集成的过程。在...
Spring通过两种主要方式实现依赖注入:设值注入和构造注入。 设值注入是通过setter方法来传递被调用者实例。例如,在上述示例中,`Chinese`类实现了`Person`接口,它依赖于`Axe`接口的实现。`Chinese`有一个`setAxe...