`

Spring IOC&DI之Setter注入

阅读更多

 

上一节总结了依赖注入中的构造器注入方式,本节总结基于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"/>

 

分享到:
评论

相关推荐

    笔记28-JAVAEE之Spring IoC&DI

    JAVAEE之Spring IoC&DI Spring IoC(Inversion of Control,即控制反转)是Spring框架的核心机制之一,它提供了一种解耦合的方式,使得应用程序的各个组件之间能够松散耦合,提高了系统的灵活性和可维护性。 在传统...

    Springioc注入Demo

    2. **setter注入**:通过setter方法来设置依赖对象,Spring容器会在对象创建后调用setter方法注入依赖。这种方式更符合JavaBean规范,使得对象可以在无依赖的情况下被实例化,但在使用前需要注入依赖。 3. **接口...

    springIoc实现原理

    Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由代码自身来完成,而在Spring Ioc中...

    Spring_0200_IOC_Introduction setter注入

    在Java开发中,Spring框架是一个不可或缺的重要部分,它通过控制反转(Inversion of Control,简称IOC)和依赖注入(Dependency Injection,简称DI)的概念,帮助开发者实现松耦合的软件设计。本篇将重点讲解Spring...

    Spring Ioc 注解 依赖注入

    其中,IoC和依赖注入(Dependency Injection, DI)是Spring框架最核心的部分之一。 #### 二、IoC容器概述 在传统的Java应用程序中,对象的创建和管理通常由程序员来完成。这种方式会导致代码之间存在高度耦合,难以...

    Spring Ioc(依赖注入)入门例子--属性注入

    Spring的核心特性之一就是它的Inversion of Control(IoC,控制反转)容器,也被称为Dependency Injection(DI,依赖注入)。这个概念是Spring框架使应用程序组件之间解耦的关键。让我们深入探讨一下Spring的IoC和...

    SpringIoc示例代码

    2. **依赖注入(DI)**:Spring IOC的主要功能之一就是依赖注入。有两种方式实现DI:构造器注入和setter注入。构造器注入是在Bean实例化时通过构造函数传递依赖,而setter注入则是通过调用setter方法设置依赖。在`...

    什么是Ioc和DI

    在实际应用中,DI通常作为IoC容器的一部分来实现,例如Spring框架中的BeanFactory或ApplicationContext,它们都提供了依赖注入的功能,从而帮助开发人员遵循IoC的原则,构建出更加灵活、可维护的软件系统。...

    关于spring的AOP ,IOC,DI的理解

    IOC,也称为依赖注入,是Spring框架的核心概念之一。它将对象的创建和管理的权利从代码中转移给了Spring容器。在传统的Java程序中,我们通常会使用`new`关键字创建对象,但在Spring中,对象的实例化、初始化和装配都...

    spring IOC容器依赖注入XML配置

    Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)为核心,极大地简化了应用程序的复杂性。在本教程中,我们将深入探讨如何通过XML配置在...

    springioc和spring aop

    **依赖注入(DI)**有多种实现方式,包括构造器注入、setter注入和接口注入。构造器注入在创建对象时就注入依赖,setter注入则允许在对象创建后随时注入,接口注入则通过实现特定接口来注入依赖。选择哪种方式取决于...

    Spring IOC.pdf

    Spring IOC,即Spring控制反转,是Spring框架的核心特性之一。控制反转(Inversion of Control,简称IoC)是一种设计原则,用于减少代码间的耦合,提高系统模块化和代码的重用性。在Spring框架中,IOC具体体现在对...

    spring ioc思维导图源文件

    - **依赖注入(DI,Dependency Injection)**:是IOC的一种实现方式,Spring通过DI管理对象的依赖关系,即在运行时将依赖的对象注入到需要它们的组件中。 **2. Spring容器** - **Bean工厂(BeanFactory)**:...

    springIOC控制反转 依赖注入实例

    在传统的程序设计中,我们通常手动创建对象并管理它们之间的依赖关系,而在Spring中,这些任务由IOC容器来处理,实现了从依赖管理到依赖注入的转变。 控制反转(IOC)意味着应用程序不再直接创建对象,而是将对象的...

    Spring IoC讲解PPT

    Spring 提供了构造函数注入、setter 注入和接口注入三种方式来实现依赖注入。通过这种方式,对象的依赖关系被明确地定义在配置中,而不是硬编码在对象内部,提高了代码的可测试性和可维护性。 **面向切面编程(AOP...

    Spring IOC源码解读

    Spring IOC,即Inversion of Control(控制反转),是Spring框架的核心特性之一,它负责管理和装配应用程序中的对象。在传统的编程模式中,对象通常自行创建和管理它们所依赖的其他对象,这导致了代码间的高耦合。而...

    Spring IOC和DI实现原理及实例解析

    依赖注入(DI)是指IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。例如,将对象B注入(赋值)给对象A的成员变量。 IoC与DI的实现可以通过setter方法注入和构造方法注入两种方式实现。setter方法注入是指...

    JavaEE spring IoC入门案例

    JavaEE Spring 框架是企业级应用开发的首选之一,尤其在控制反转(Inversion of Control, 简称IoC)和依赖注入(Dependency Injection, DI)方面表现出色。IoC是一种设计模式,它将对象的创建和管理从应用程序的业务...

    spring IOC实现(墨者革离)

    在Spring中,实现IOC的主要方式有两种:依赖注入(Dependency Injection,DI)和基于XML的配置。在这个项目中,可能结合了这两种方法。依赖注入可以通过构造函数注入、setter方法注入或接口注入来实现,使得对象间的...

    手写spring ioc(三) 资源org.zip

    3. **依赖注入**:Spring IOC的一大特点就是依赖注入(DI,Dependency Injection)。这包括了字段注入、构造器注入和setter注入。手写版本可能会实现构造器注入,通过分析bean的构造函数及其参数,自动寻找依赖并...

Global site tag (gtag.js) - Google Analytics