spring4-自动装配beans-通过构造函数参数的数据类型按属性自动装配bean

     2022-03-15     517

关键词:

1.创建Maven项目,项目名称springdemo17,如图所示

技术分享


2.配置Maven,修改项目中的pom.xml文件,修改内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>1.0.0</modelVersion>
  <groupId>shequ</groupId>
  <artifactId>springdemo13</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <properties>
  	<java.version>1.7</java.version>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  
  <repositories>
  	<repository>
  		<id>codelds</id>
  		<url>https://code.lds.org/nexus/content/groups/main-repo</url>
  	</repository>
  </repositories>
  
  <dependencies>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.10</version>
  	</dependency>
  	
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>4.1.4.RELEASE</version>
  	</dependency>
  	
  	<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.34</version>
    </dependency>
       
       
  </dependencies>
  <build/>
</project>


3.在src/main/java下创建实体Bean Forum,包名(com.mycompany.shequ.bean)如图所示

技术分享


4.实体Bean Forum的内容如下

package com.mycompany.shequ.bean;

public class Forum {
	private int fid;
	private String name;
	public int getFid() {
		return fid;
	}
	public void setFid(int fid) {
		this.fid = fid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}


5.在src/main/java下创建实体Bean ForumPost,包名(com.mycompany.shequ.bean)如图所示

技术分享


6.实体Bean ForumPost的内容如下

package com.mycompany.shequ.bean;

public class ForumPost {
	private int pid;
	private String name;
	private Forum forum;
	
	public ForumPost() {
		super();
	}
	public ForumPost(Forum forum) {
		super();
		this.forum = forum;
	}
	public int getPid() {
		return pid;
	}
	public void setPid(int pid) {
		this.pid = pid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Forum getForum() {
		return forum;
	}
	
}


7.在src/main/resources下创建Bean配置文件,配置文件名称spring-bean.xml,如图所示

技术分享


8.spring-bean.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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- 通过构造函数参数的数据类型按属性自动装配Bean -->
   <bean id="forumpost"
       class="com.mycompany.shequ.bean.ForumPost" autowire="constructor">
   </bean>
   
   <bean id="forum" class="com.mycompany.shequ.bean.Forum">
   		<property name="fid" value="3"></property>
   		<property name="name" value="大客户"></property>
   </bean>

</beans>


9.在src/test/java下创建测试类ForumPostTest,包名(com.mycompany.shequ.bean),如图所示

技术分享


10.测试类ForumPostTest的内容如下

package com.mycompany.shequ.bean;

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

public class ForumPostTest {
	
	/**
	 * spring 的自动装配Beans,通过构造函数参数的数据类型按属性自动装配Bean
	 */
	@Test
	public void constructorTest(){
	    ApplicationContext context = new ClassPathXmlApplicationContext("/bean/spring-bean.xml");
		
	    ForumPost forumPost = (ForumPost) context.getBean("forumpost");
		
	    System.out.println(forumPost.getForum().getName());
	}
}	


11.在测试类ForumPostTest的byTypeTest方法上右键运行,输出结果如图所示

技术分享

本文出自 “素颜” 博客,请务必保留此出处http://suyanzhu.blog.51cto.com/8050189/1909519

如何在Spring bean中传递类构造函数参数由注释自动装配

】如何在Springbean中传递类构造函数参数由注释自动装配【英文标题】:HowtopassclassconstructorparametersinSpringbeanAutowiredbyannotations【发布时间】:2015-02-2000:19:24【问题描述】:没有IOC容器的正常方法是:newUser("Names",22);这里的参数值是... 查看详情

spring4.0学习笔记——自动装配

SpringIOC容器可以自动装配Bean,需要做的是在<bean>的autowire属性里指定自动装配的模式1)byType根据类型自动装配,若IOC容器中有多个目标Bean类型一致的Bean,Spring将无法判定哪个Bean最适合该属性,不能执行自动装配2)byName根据... 查看详情

spring(代码片段)

文章目录SpringBeans自动装配Spring自动装配的局限性Spring自动装配byNameSpring自动装配byName样例Spring自动装配byTypeSpring自动装配byType样例Spring由构造函数自动装配Spring由构造函数自动装配SpringBeans自动装配可以使用·bean元素来声明bean... 查看详情

spring4-自动装配beans-通过注解@autowired在set方法上

1.创建Maven项目,项目名称springdemo18,如图所示650)this.width=650;"src="https://s3.51cto.com/wyfs02/M00/8F/16/wKiom1jTPtOxb_hZAAAXfL0FQiU130.png-wh_500x0-wm_3-wmp_4-s_955624966.png"title="QQ截图20170323111721.png"alt 查看详情

spring入门(代码片段)

文章目录SpringBeans自动装配Spring自动装配的局限性Spring自动装配byNameSpring自动装配byName样例Spring自动装配byTypeSpring自动装配byType样例Spring由构造函数自动装配Spring由构造函数自动装配SpringBeans自动装配可以使用·bean元素来声明bean... 查看详情

在spring中通过构造自动装配--constructor

在Spring中,可以使用“通过构造自动装配”,实际上是按构造函数的参数类型自动装配。 这意味着,如果一个bean的数据类型与其他bean的构造器参数的数据类型是相同的,那么将自动装配。 packageauto_constructor;/***Createdbyluo... 查看详情

spring4-自动装配beans-按属性的数据类型自动装配bean

1.创建Maven项目,项目名称springdemo16,如图所示650)this.width=650;"src="https://s1.51cto.com/wyfs02/M00/8F/12/wKioL1jTM5TQRwIZAAAVVs18AUg447.png-wh_500x0-wm_3-wmp_4-s_2174713354.png"title="QQ截图20170323103102.png"al 查看详情

spring4-自动装配beans-按属性名称自动装配

1.创建Maven项目,项目名称springdemo15,如图所示650)this.width=650;"src="https://s4.51cto.com/wyfs02/M02/8F/14/wKiom1jTLkmAE2n-AAAUdP9LGfA400.png-wh_500x0-wm_3-wmp_4-s_1701910619.png"title="QQ截图20170323100824.png"al 查看详情

使用构造函数自动装配泛型类型 [Spring 4.2.5]

】使用构造函数自动装配泛型类型[Spring4.2.5]【英文标题】:Autowiringgenerictypeswithconstructor[Spring4.2.5]【发布时间】:2016-08-1703:11:57【问题描述】:我是Spring新手,正在尝试像本文http://www.ibm.com/developerworks/library/j-genericdao/中那样实... 查看详情

spring4学习笔记-配置bean-自动装配关系作用域引用外部属性文件

1Autowire自动装配 1.1使用:只需在<bean>中使用autowire元素 <beanid="student"class="com.kejian.spring.bean.autowire.Student" p:name="Tony"autowire="byName"></bean> 1.2类型 byName目标bean的id与属性名一置, 查看详情

spring学习-----spring使用@autowired注解自动装配

Spring使用@Autowired注解自动装配在上一篇Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配。在大多数情况下,你可能只需要在特定的 bean 自动装配属性。在Spring中,可以使用 @Auto... 查看详情

spring4.0学习笔记004——bean的配置二(基于xml文件)

1.bean的自动装配SpringIOC容器可以实现Bean的自动装配,需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式。在实际的项目中一般很少使用自动装配功能,因为和自动装配功能所带来的好处比起来,明确清晰... 查看详情

第2章 装配bean(代码片段)

...bsp;第2章 装配Bean  2.1 Spring配置的可选方案  2.2 自动化装配bean    2.2.1 创建可被发现的bean    2.2.2 为组件扫描的bean命名    2.2.3 设置组件扫描的基础包    2.2.4 通过为bean添加注解实现自动装配... 查看详情

<spring实战>3:最小化springxml配置

1自动装配Bean属性1.14种类型的自动装配byName:把与Bean的属性具有相同名字或ID的其他Bean自动装配到Bean的对应属性中byType:把与Bean的属性具有相同类型的其他Bean自动装配到Bean的对应属性中constructor:把与Bean的构造器入参具有相... 查看详情

spring实战读书笔记spring装配bean(代码片段)

目录一、自动装配bean1、组件扫描2、自动装配二、通过Java代码装配Bean1、简单配置2、依赖注入三、通过Xml装配Bean借助构造器注入初始化bean设置属性混合配置Spring容器负责创建应用程序中的bean并通过DI来装配(wiring)他... 查看详情

autofac-装配

...可用服务中,选取一个构造函数来创造对象,这个过程就是自动装配.一、选择构造函数默认情况下,autofac会使用无参构造函数,去创建对象.我将Person类稍微修改了下.publicinterfaceIPerson{voidSelf();}publicclassPerson:IPerson{IAnimaladopt;publicstringNa... 查看详情

spring实战读书笔记spring装配bean(代码片段)

目录一、自动装配bean1、组件扫描2、自动装配二、通过Java代码装配Bean1、简单配置2、依赖注入三、通过Xml装配Bean借助构造器注入初始化bean设置属性混合配置Spring容器负责创建应用程序中的bean并通过DI来装配(wiring)他... 查看详情

springiocautowiring(自动依赖装配)的实现

...Spring中,相对这种显式的依赖管理方式,IoC容器还提供了自动依赖装配的方式,为应用使用容器提供更大的方便。在自动装配中,不需要对Bean属性做显式的依赖关系声明,只需要配置好autowiring属性,IoC容器会根据这个属性的配... 查看详情