`

Spring Bean中的自动装配——byType

阅读更多

自动装配byType即通过查找类属性在配置文件中bean中定义的class属性来注入,而不是通过类属性名与配置文件中bean的id属性来匹配的。

如下例:

package com.lwf.bean;

public class Bean2 {

	private Bean3 bean3;
	private Bean4 bean4;
	private Bean5 bean5;
	
	public Bean3 getBean3() {
		return bean3;
	}
	public void setBean3(Bean3 bean3) {
		this.bean3 = bean3;
	}
	public Bean4 getBean4() {
		return bean4;
	}
	public void setBean4(Bean4 bean4) {
		this.bean4 = bean4;
	}
	public Bean5 getBean5() {
		return bean5;
	}
	public void setBean5(Bean5 bean5) {
		this.bean5 = bean5;
	}
	
}

 

package com.lwf.bean;

import java.util.Date;

public class Bean3 {

	private int id;
	private String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

 

package com.lwf.bean;

public class Bean4 {

	private int id;
	private String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

 

package com.lwf.bean;

public class Bean5 {

	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
}

 

配置文件:

<?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:aop="http://www.springframework.org/schema/aop"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
default-autowire="byType"			
>

	<bean id="bean2" class="com.lwf.bean.Bean2"/>
	<bean id="bean5ref" class="com.lwf.bean.Bean5">
			<property name="age" value="33"></property>
	</bean>
	
	<bean id="parentBean" abstract="true">
		<property name="id" value="1"/>
		<property name="name" value="zhang"/>
	</bean>
	
	<bean id="bean3ref" class="com.lwf.bean.Bean3" parent="parentBean"/>
	<bean id="bean4ref" class="com.lwf.bean.Bean4" parent="parentBean"/>
</beans>

 

可以看到配置文件改为byType。

测试类:

package com.lwf.client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lwf.bean.Bean2;

public class Client {
	public static void main(String[] args) {
	
		
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext*.xml");
		Bean2 bean2 = (Bean2)ctx.getBean("bean2");
		System.out.println(bean2.getBean3().getName());
		System.out.println(bean2.getBean3().getId());
		System.out.println(bean2.getBean4().getId());
		System.out.println(bean2.getBean4().getName());
		System.out.println(bean2.getBean5().getAge());
	}
}

 

 

注:在这次测试中,Bean3中删除了Date属性,这次因为在测试的时候发现自己写的日期转化类在byType下报错。

本次测试结果:

2010-05-19 17:08:39,732 INFO [org.springframework.context.support.ClassPathXmlApplicationContext] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@19fcc69: display name [org.springframework.context.support.ClassPathXmlApplicationContext@19fcc69]; startup date [Wed May 19 17:08:39 CST 2010]; root of context hierarchy
2010-05-19 17:08:39,888 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from file [D:\workdirlocal\spring_autowire\bin\applicationContext.xml]
2010-05-19 17:08:40,201 INFO [org.springframework.context.support.ClassPathXmlApplicationContext] - Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@19fcc69]: org.springframework.beans.factory.support.DefaultListableBeanFactory@20be79
2010-05-19 17:08:40,263 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@20be79: defining beans [bean2,bean5ref,parentBean,bean3ref,bean4ref]; root of factory hierarchy
zhang
1
1
zhang
33

 

分享到:
评论

相关推荐

    spring中的自动装配实例byName、byType

    在Spring框架中,自动装配(Auto-Wiring)是一种简化依赖注入的方式,它允许Spring容器自动为bean找到并设置其依赖。本篇文章将深入探讨两种主要的自动装配方式:byName和byType,以及它们在实际应用中的实例。 **1...

    spring入门教程之bean的继承与自动装配详解

    本文将深入探讨Spring Bean的继承与自动装配。 首先,让我们了解Bean的基本定义。在Spring配置文件中,`&lt;beans&gt;`元素作为根元素,包含了一系列`&lt;bean&gt;`子元素。每个`&lt;bean&gt;`元素定义了一个Bean实例,它由一个唯一的...

    spring自动装配例子

    (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 &lt;bean class="xxx" &gt;&lt;/bean&gt; (4)constructor:与 byType 方式类似,不同之处是构造注入 &lt;bean class="xxx" &gt;&lt;/bean&gt; 本例,演示 byName...

    Spring实现自动装配

    然而,自动装配简化了这个过程,Spring容器会尝试根据类型或名称自动找到合适的依赖并注入到bean中。 在Spring 4中,自动装配主要有以下几种方式: 1. **无注解自动装配(No Annotation Auto-Wiring)**:在XML...

    Spring自动装配解析

    在Spring的XML配置文件中,可以通过`&lt;beans&gt;`标签的`autowire`属性来全局设置自动装配策略,或者在单个`&lt;bean&gt;`标签中通过`autowire`属性指定某一个bean的自动装配方式。 4. 使用注解进行自动装配 Spring 2.5引入了...

    spring bean 属性总结

    在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件或注解来定义、配置和管理Beans。下面将深入探讨`&lt;beans&gt;`、`&lt;bean&gt;`及其属性,以及其他相关的配置元素。 ...

    Java注解机制之Spring自动装配实现原理详解

    Java注解机制之Spring自动装配...Java注解机制之Spring自动装配实现原理详解是指Spring框架中使用Java注解机制来实现自动装配功能的机制,该机制可以根据注解信息来自动将Bean对象关联起来,从而实现了自动装配功能。

    彻底搞明白Spring中的自动装配和Autowired注解的使用

    例如,在 User Bean 中有一个属性 role,可以使用 byType 自动装配来将类型为 Role 的 Bean 自动装配到 User Bean 中。 3. constructor 自动装配 constructor 自动装配是指根据 Bean 的构造器入参来自动装配依赖...

    spring自动装配

    标题中的“Spring自动装配”指的是Spring框架中的一个重要特性,它允许开发者在不显式配置Bean依赖的情况下,由Spring容器自动管理Bean之间的依赖关系。这一特性极大地简化了代码,提高了可维护性和可测试性。 在...

    Spring的自动装配源代码

    在Spring框架中,自动装配(Auto-Wiring)是一种简化配置的方式,它允许Spring容器自动为Bean提供依赖。这种特性使得开发者无需显式地在XML配置文件中声明Bean之间的依赖关系,从而减少了配置工作量,提高了代码的可...

    Spring的Autowired自动装配(XML版本+Annotation版本+源码+解析)

    @Autowired是Spring框架中的一个核心注解,用于实现自动装配bean的需求。当我们想要在类中注入某个依赖时,不再需要手动通过setter方法或构造函数进行设置,而是通过@Autowired来自动完成。这种特性极大地提高了代码...

    spring自动装配项目struts2

    Spring提供了多种自动装配方式,如byType、byName等,可以根据配置或注解来实现。在项目中,通过配置Spring的bean定义,或者使用@Autowired注解,我们可以让Spring自动为我们的bean注入所需的依赖,简化了代码并增强...

    第五章 Spring4 自动装配、方法注入

    例如,如果你有一个名为"dataSource"的bean定义,并且你的另一个bean需要一个DataSource类型的属性,Spring可以通过byType自动装配,将"dataSource"注入到该属性中。这大大减少了手动配置的工作量。 接下来,我们...

    Spring中自动装配的4种方式

    Spring中自动装配的4种方式 在 Spring 框架中,自动装配是指容器可以自动将 Bean 之间的关系装配起来,不需要手动配置,从而简化了 XML 配置文件的编写。下面将详细介绍 Spring 中的 4 种自动装配方式。 byName ...

    Spring的自动装配Bean的三种方式

    本文将详细讲解Spring中自动装配Bean的三种主要方式:byName、byType以及constructor。这些方法帮助Spring的IoC容器自动识别并连接Bean的依赖,从而减少手动配置的工作量。 首先,我们来看第一种自动装配方式——`...

    Spring 自动装配及其注解

    在Spring框架中,自动装配(Autowiring)是一种机制,它允许Spring容器自动为bean提供其依赖,而无需显式配置。自动装配极大地简化了应用的配置,使得开发者可以更专注于业务逻辑。本文将深入探讨Spring自动装配的...

    spring学习之四“自动装配”

    在Spring框架中,“自动装配”(Autowiring)是一项核心特性,它允许Spring容器自动为bean注入所需的依赖,而无需显式配置。本篇将深入探讨自动装配的概念、类型以及如何在Spring应用中使用。 自动装配是Spring IoC...

    spring装配bean实例代码

    在Spring框架中,Bean装配是核心功能之一,它负责初始化、配置和管理应用程序中的对象。本文将深入探讨Spring装配Bean的实例代码,帮助你更好地理解这一关键概念。 首先,Spring装配Bean主要有两种方式:XML配置和...

    Spring自动装配模式表

    当设置自动装配模式为`byType`时,Spring容器会根据Bean的属性类型来查找容器中具有相同类型的其他Bean,并将其作为依赖注入到当前Bean中。这种方式适用于属性类型和依赖Bean类型一致的情况。 **优点**: - 简化了...

Global site tag (gtag.js) - Google Analytics