`

跟我学Spring3 学习笔记六 注入

阅读更多


跟我学Spring3 学习笔记一

跟我学Spring3 学习笔记二

跟我学Spring3 学习笔记三

跟我学Spring3 学习笔记四

跟我学Spring3 学习笔记五 注入

 

 

引用其它Bean

 

一、构造器注入方式:

(1)通过” <constructor-arg>”标签的ref属性来引用其他Bean

 

(2)通过” <constructor-arg>”标签的子<ref>标签来引用其他Bean,使用bean属性来指定引用的Bean

二、setter注入方式:

(1)通过” <property>”标签的ref属性来引用其他Bean

(2)通过” <property>”标签的子<ref>标签来引用其他Bean,使用bean属性来指定引用的Bean

 

 

public class HelloDiBean implements HelloApi{

	private HelloApi helloApi;
	private HelloApi helloApi2;
	

	public HelloDiBean(HelloApi helloApi){
		this.helloApi = helloApi;
	}
	
	public void sayHello() {
		helloApi.sayHello();
		helloApi2.sayHello();
	}
	

	public HelloApi getHelloApi2() {
		return helloApi2;
	}

	public void setHelloApi2(HelloApi helloApi2) {
		this.helloApi2 = helloApi2;
	}
}

 配置注入引用其他的bean

 

<!-- 引用其他的bean进行注入 -->
	<bean id="helloBean" class="com.dilist.HelloDiBean">
		<constructor-arg index="0" ref="mapBean" />
		<property name="helloApi2">
			<ref bean="properBean" />
		</property>
	</bean>
	
 

其他引用bean 的高级用法:

 

/**
 * Spring还提供了另外两种更高级的配置方式,<ref local=””/>和<ref parent=””/>:
 * (1)<ref local=””/>配置方式:用于引用通过<bean id=”beanName”>方式中通过id属性指定的Bean,
 * 		它能利用XML解析器的验证功能在读取配置文件时来验证引用的Bean是否存在。
 * 		因此如果在当前配置文件中有相互引用的Bean可以采用<ref local>方式从而如果配置错误能在开发调试时就发现错误。
 * (2)<ref parent=””/>配置方式:用于引用父容器中的Bean,不会引用当前容器中的Bean,
 *       当然父容器中的Bean和当前容器的Bean是可以重名的,获取顺序是直接到父容器找。
 */
public class HelloHigh implements HelloApi{
	
	private HelloApi helloApi;
	private HelloApi helloApi2;
	

	public HelloHigh(HelloApi helloApi){
		this.helloApi = helloApi;
	}
	
	public void sayHello() {
		helloApi.sayHello();
		System.out.println("");
		helloApi2.sayHello();
	}
	

	public HelloApi getHelloApi2() {
		return helloApi2;
	}

	public void setHelloApi2(HelloApi helloApi2) {
		this.helloApi2 = helloApi2;
	}

}
 

helloworld.xml:

 

<!-- 注入properties类型 -->
	<bean id="properBean" class="com.dilist.HelloDiProperties">
		<property name="properties">
			<props value-type="int" merge="default"><!-- 虽然指定value-type,但是不起作用 -->
				<prop key="1">1sss</prop>           <!-- Properties 建和值都是String类型 -->
				<prop key="2">2</prop>
			</props>
		</property>
		<property name="properties2">
			<value> <!-- 分隔符可以是 “换行”、“;”、“,” 不建议该方式,优先选择第一种方式 -->
				1=11
				2=22;<!-- 这样的分隔符好像没用 -->
			    3=33,
				4=44
			</value>
		</property>
	</bean>

	<!-- Spring还提供了另外两种更高级的配置方式,<ref local=””/>和<ref parent=””/> -->
	<bean id="helloHigh" class="com.dilist.HelloHigh">
		<constructor-arg index="0"><ref local="properBean" /></constructor-arg>
		<property name="helloApi2"><ref parent="properBean" /></property>	
	</bean>
 

 

helloworldParent.xml:

 

<!-- 注入properties类型 -->
	<bean id="properBean" class="com.dilist.HelloDiProperties">
		<property name="properties">
			<props value-type="int" merge="default"><!-- 虽然指定value-type,但是不起作用 -->
				<prop key="1">2dss</prop>           <!-- Properties 建和值都是String类型 -->
				<prop key="2">3aas</prop>
			</props>
		</property>
		<property name="properties2">
			<value> <!-- 分隔符可以是 “换行”、“;”、“,” 不建议该方式,优先选择第一种方式 -->
				1=111
				2=222;<!-- 这样的分隔符好像没用 -->
			    3=333,
				4=444
			</value>
		</property>
	</bean>
 

调用处 利用加载父容器的方式,注入父容器中的Bean:

 

 

@Test
	public void testDiBeanHigh() {
		// 以classes为根目录算起
		// 读取配置文件实例化一个Ioc容器

		// 初始化父容器
		ApplicationContext parentContext = new ClassPathXmlApplicationContext(
				"helloworldParent.xml");

		// 初始化当前容器
		ApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "helloworld.xml" }, parentContext);

		// 构造 + setter注入 引用其他的bean注入
		HelloApi helloApi = context.getBean("helloHigh", HelloApi.class);
		helloApi.sayHello();

	}
1
0
分享到:
评论

相关推荐

    Springcloud学习笔记.md

    Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...

    跟我学spring3pdf,高清

    《跟我学Spring3》是一本深入浅出的Spring框架学习指南,主要针对Spring 3.x版本进行讲解。这本书旨在帮助初学者和有一定经验的开发者更好地理解和应用Spring框架,提升其在实际开发中的技能。PDF文档提供了清晰的...

    跟我学spring3

    在《跟我学Spring3》中,你将深入学习以下主题: 1. Spring Boot:一个快速启动Spring应用的框架,简化了配置并提供了内置的服务器和依赖管理。 2. Spring MVC:学习如何使用Spring MVC构建RESTful服务,处理HTTP...

    跟我学Spring,Spring3学习资料

    关于Spring3学习资料,本材料旨在为新手提供系统学习Spring3的资源和实例。在内容组织上,涵盖以下几个主要部分: ### 1. IoC(控制反转)与DI(依赖注入) - **IoC基础:** IoC是Spring的核心概念之一,通过它,...

    跟我学Spring3

    《跟我学Spring3》这本书是针对Java开发人员深入学习Spring框架第三版的一份教程。Spring作为Java企业级应用开发中的核心框架,它以其强大的功能、灵活性和模块化设计深受开发者喜爱。Spring3版本在前一版本基础上...

    开涛 跟我学spring3 pdf+源码

    总的来说,《跟我学Spring3》结合PDF教程和源码,为Java开发者提供了一套完整的Spring学习路径,无论你是初学者还是有一定经验的开发者,都能从中受益匪浅。通过学习和实践,你可以掌握Spring的核心技术和最佳实践,...

    Spring框架学习笔记

    这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...

    跟我学spring3(1-13)

    《跟我学Spring3》是一本深入浅出介绍Spring框架的电子书,分为两部分,分别是“跟我学Spring3(8-13).pdf”和“跟我学Spring3(1-7).pdf”,全面覆盖了Spring框架的核心概念和技术。Spring作为Java开发中的主流框架,...

    开涛系列—跟我学spring3 pdf+学习源码+项目源码

    跟我学spring3.pdf 跟我学spring3-源码.rar 跟我学spring3-项目源码(pointShop)(基于注解).rar 跟我学spring3-项目源码(pointShop)(基于XML配置文件).rar

    跟我学spring3 pdf+源码

    跟我学spring3(1-7).pdf 跟我学spring3(8-13).pdf 跟我学spring3-源码.rar 跟我学spring3-项目源码(pointShop)(基于注解).rar 跟我学spring3-项目源码(pointShop)(基于XML配置文件).rar

    跟我学spring3 .pdf

    《跟我学Spring3》这本书是针对Spring框架进行深入解析的一本教程,涵盖了Spring的核心特性,包括IoC(Inversion of Control,控制反转)、DI(Dependency Injection,依赖注入)、AOP(Aspect-Oriented Programming...

    Spring6学习笔记

    Spring6学习笔记,师承老杜

    spring指南学习笔记

    标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...

    跟我学spring

    标题“跟我学spring”和描述“spring 的使用,每个知识点和项目中的运用,20章的介绍。”暗示这是一份详细介绍Spring框架使用方法的教程或手册,覆盖了Spring的各个方面,并以实例为导向,深入探讨了每个知识点在...

    springcloud学习笔记.pdf

    Spring Cloud 学习笔记 本笔记主要介绍了从单体架构到微服务架构的演变过程,以及 Spring Cloud 中的微服务架构搭建。下面是本笔记的详细知识点总结: 一、单体架构 单体架构是指整个系统只有一个工程,打包往往...

Global site tag (gtag.js) - Google Analytics