上一节总结了依赖注入中的构造器注入方式,本节总结基于Setter方式的注入及xml文件的配置方式。
还是根据所依赖对象的类型分为:
(1)基本类型:如int型、String型等。
(2)自定义类型:自定义的类型,也就是封装成了一个单独的bean。
(3)容器类型:如List、Set、Map等
(4)空类型
使用Setter方法注入必须要遵循javabean规范,类内部使用setter/getter方法来设置或者获取属性值。
而且在调用者类内必须要有默认构造函数。如果已经定义了含参构造函数,则必须显式的定义无参构造函数。
因为setter注入方式即调用类中的setter方法将其他属性注入,既然要调用setter方法则需要有对象,spring框架内部就是使用反射原理+类名+默认构造函数先创建一个对象,然后调用setter方法。
具体定义如下所示:
public class MyService{ private MyDao myDao; //引用其他bean private Description des; //引用其它bean private List<String> list = new ArrayList<String>(); //list容器 private Set<String> set = new HashSet<String>(); //set容器 //map容器 private Map<String, Integer> maps = new HashMap<String, Integer>(); //setter & getter方法 public void setMyDao(MyDao myDao){ this.myDao = myDao; } public MyDao getMyDao(){ return myDao; } public void setDes(Description des){ this.des = des; } public Description getDes(){ return des; } public void setList(List<String> list){ this.list = list; } public List<String> getList(){ return list; } public void setSet(Set<String> set){ this.set = set; } public Set<String> getSet(){ return set; } public void setMaps(Map<String, Integer> maps){ this.maps = maps; } public Map<String, Integer> getMaps(){ return maps; } public void addUser(){ myDao.addUser(); des.descript(); } public void print(){ //打印list中的内容 for(String str : list){ System.out.println(str); } for(String str2 : set){ System.out.println(str2); } Iterator<Map.Entry<String, Integer>> it = maps.entrySet().iterator(); while(it.hasNext()){ Map.Entry<String, Integer> entry = it.next(); System.out.println(entry.getKey()); System.out.println(entry.getValue()); } } }
xml文件配置如下:
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-lazy-init="true"> <!--对所有bean进行延迟初始化--> <!-- <context:component-scan base-package="com.springframework.ioc"/> --> <!-- beans declare go here --> <bean id="mysql" class="com.springframework.ioc.MysqlDaoImpl"> <!--调换构造函数顺序--> <constructor-arg index="1" value="1"/> <constructor-arg index="0" value="mysql"/> </bean> <bean id="oracle" class="com.springframework.ioc.OracleDaoImpl"> <property name="name" value="oracle"/> </bean> <bean id="description" class="com.springframework.ioc.Description"/> <!-- 通过setter方法注入--> <bean id = "myservice" class="com.springframework.ioc.MyService"> <property name="myDao" ref = "mysql"/> <property name="des" ref = "description"/> <property name="list"> <list> <value>xiaoming</value> <value>xiaohong</value> <value>xiaolin</value> </list> </property> <property name="set"> <set> <value>jin</value> <value>yin</value> <value>tong</value> </set> </property> <property name="maps"> <map> <entry key="wang" value="1"/> <entry key="li" value="2"/> <entry key="hu" value="3"/> </map> </property> </bean> </beans>
总的来说就是使用
<property name=" xxx" ref = "xxx "/>
或者是
<property name="xxx" value = "xxx"/>
相关推荐
JAVAEE之Spring IoC&DI Spring IoC(Inversion of Control,即控制反转)是Spring框架的核心机制之一,它提供了一种解耦合的方式,使得应用程序的各个组件之间能够松散耦合,提高了系统的灵活性和可维护性。 在传统...
2. **setter注入**:通过setter方法来设置依赖对象,Spring容器会在对象创建后调用setter方法注入依赖。这种方式更符合JavaBean规范,使得对象可以在无依赖的情况下被实例化,但在使用前需要注入依赖。 3. **接口...
Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由代码自身来完成,而在Spring Ioc中...
在Java开发中,Spring框架是一个不可或缺的重要部分,它通过控制反转(Inversion of Control,简称IOC)和依赖注入(Dependency Injection,简称DI)的概念,帮助开发者实现松耦合的软件设计。本篇将重点讲解Spring...
其中,IoC和依赖注入(Dependency Injection, DI)是Spring框架最核心的部分之一。 #### 二、IoC容器概述 在传统的Java应用程序中,对象的创建和管理通常由程序员来完成。这种方式会导致代码之间存在高度耦合,难以...
Spring的核心特性之一就是它的Inversion of Control(IoC,控制反转)容器,也被称为Dependency Injection(DI,依赖注入)。这个概念是Spring框架使应用程序组件之间解耦的关键。让我们深入探讨一下Spring的IoC和...
2. **依赖注入(DI)**:Spring IOC的主要功能之一就是依赖注入。有两种方式实现DI:构造器注入和setter注入。构造器注入是在Bean实例化时通过构造函数传递依赖,而setter注入则是通过调用setter方法设置依赖。在`...
在实际应用中,DI通常作为IoC容器的一部分来实现,例如Spring框架中的BeanFactory或ApplicationContext,它们都提供了依赖注入的功能,从而帮助开发人员遵循IoC的原则,构建出更加灵活、可维护的软件系统。...
IOC,也称为依赖注入,是Spring框架的核心概念之一。它将对象的创建和管理的权利从代码中转移给了Spring容器。在传统的Java程序中,我们通常会使用`new`关键字创建对象,但在Spring中,对象的实例化、初始化和装配都...
Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)为核心,极大地简化了应用程序的复杂性。在本教程中,我们将深入探讨如何通过XML配置在...
**依赖注入(DI)**有多种实现方式,包括构造器注入、setter注入和接口注入。构造器注入在创建对象时就注入依赖,setter注入则允许在对象创建后随时注入,接口注入则通过实现特定接口来注入依赖。选择哪种方式取决于...
Spring IOC,即Spring控制反转,是Spring框架的核心特性之一。控制反转(Inversion of Control,简称IoC)是一种设计原则,用于减少代码间的耦合,提高系统模块化和代码的重用性。在Spring框架中,IOC具体体现在对...
- **依赖注入(DI,Dependency Injection)**:是IOC的一种实现方式,Spring通过DI管理对象的依赖关系,即在运行时将依赖的对象注入到需要它们的组件中。 **2. Spring容器** - **Bean工厂(BeanFactory)**:...
在传统的程序设计中,我们通常手动创建对象并管理它们之间的依赖关系,而在Spring中,这些任务由IOC容器来处理,实现了从依赖管理到依赖注入的转变。 控制反转(IOC)意味着应用程序不再直接创建对象,而是将对象的...
Spring 提供了构造函数注入、setter 注入和接口注入三种方式来实现依赖注入。通过这种方式,对象的依赖关系被明确地定义在配置中,而不是硬编码在对象内部,提高了代码的可测试性和可维护性。 **面向切面编程(AOP...
Spring IOC,即Inversion of Control(控制反转),是Spring框架的核心特性之一,它负责管理和装配应用程序中的对象。在传统的编程模式中,对象通常自行创建和管理它们所依赖的其他对象,这导致了代码间的高耦合。而...
依赖注入(DI)是指IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。例如,将对象B注入(赋值)给对象A的成员变量。 IoC与DI的实现可以通过setter方法注入和构造方法注入两种方式实现。setter方法注入是指...
JavaEE Spring 框架是企业级应用开发的首选之一,尤其在控制反转(Inversion of Control, 简称IoC)和依赖注入(Dependency Injection, DI)方面表现出色。IoC是一种设计模式,它将对象的创建和管理从应用程序的业务...
在Spring中,实现IOC的主要方式有两种:依赖注入(Dependency Injection,DI)和基于XML的配置。在这个项目中,可能结合了这两种方法。依赖注入可以通过构造函数注入、setter方法注入或接口注入来实现,使得对象间的...
3. **依赖注入**:Spring IOC的一大特点就是依赖注入(DI,Dependency Injection)。这包括了字段注入、构造器注入和setter注入。手写版本可能会实现构造器注入,通过分析bean的构造函数及其参数,自动寻找依赖并...