Spring通过构造方法依赖注入
1. 创建一个Person
package com.spring.bean; public class Person { private String name; private String address; private double height; private int weight; public Person(String name, String address, double height) { super(); this.name = name; this.address = address; this.height = height; } public Person(String name, String address, int weight) { super(); this.name = name; this.address = address; this.weight = weight; } @Override public String toString() { return "Person [name=" + name + ", address=" + address + ", height=" + height + ", weight=" + weight + "]"; } }
2. 创建spring 配制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"> <!-- 通过构造器注入属性--> <!-- 1. 通过index属性指定要注入的属性值,默认会选择靠前的构造器注入 --> <bean id="person1" name="person" class="com.spring.bean.Person"> <constructor-arg value="matt" index="0"></constructor-arg> <constructor-arg value="上海" index="1"></constructor-arg> <constructor-arg value="172" index="2"></constructor-arg> </bean> <!-- 2. 通过name属性指定要注入的属性值--> <bean id="person2" class="com.spring.bean.Person"> <constructor-arg value="joy" index="0"></constructor-arg> <constructor-arg value="上海" index="1"></constructor-arg> <constructor-arg value="59" name="weight"></constructor-arg> </bean> <!-- 2. 通过type属性指定要注入的属性值--> <bean id="person3" class="com.spring.bean.Person"> <constructor-arg value="joy" index="0"></constructor-arg> <constructor-arg value="上海" index="1"></constructor-arg> <constructor-arg value="59" type="int"></constructor-arg> </bean> </beans>
3. 创建运行类
package com.spring.bean; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class PersonMain { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); Person person1 = (Person) ctx.getBean("person1"); System.out.println(person1); Person person2 = (Person) ctx.getBean("person2"); System.out.println(person2); Person person3 = (Person) ctx.getBean("person3"); System.out.println(person3); } }
运行结果:
Person [name=matt, address=上海, height=172.0, weight=0] Person [name=joy, address=上海, height=0.0, weight=59] Person [name=joy, address=上海, height=0.0, weight=59]
注, 可以通过spring配制文件中不同的属性指定选择相应的构造方法。
相关推荐
二、Spring依赖注入的实现方式 1. **setter方法注入**:Spring通过调用对象的setter方法来设置其依赖的实例。在bean配置文件中,使用`<property>`标签指定依赖属性。 2. **构造器注入**:Spring可以通过调用带有多...
NULL 博文链接:https://zhangyulong.iteye.com/blog/856986
Spring依赖注入是Spring框架的核心特性之一,它极大地简化了Java应用程序的开发,使得对象之间的依赖关系得以解耦,提高了代码的可测试性和可维护性。本文将深入探讨Spring依赖注入的底层实现机制。 首先,我们要...
本文将深入探讨Spring中的依赖注入方式,包括构造器注入、设值注入和接口注入。 **一、构造器注入** 构造器注入是通过在类的构造函数中传入依赖对象来实现的。Spring容器在创建对象时,会调用带有相应依赖的构造...
本篇学习笔记将深入剖析Spring依赖注入的原理,通过源码分析帮助我们理解这一核心机制。 首先,依赖注入允许我们解耦组件之间的关系,使得各个组件可以独立地进行开发、测试和维护。在Spring中,DI主要通过两种方式...
本篇将详细讲解如何使用构造器注入作为Spring依赖注入的一种方式,并通过一个完整的可运行示例——"SpringIOCTest2"来加深理解。 首先,理解依赖注入的概念。依赖注入允许我们不在类内部创建对象,而是通过外部源...
了解CGLIB和Objenesis的工作原理,可以帮助我们更好地理解Spring如何实现依赖注入、AOP以及其它高级特性。例如,CGLIB的代理过程涉及到了ASM库,Objenesis的实例化机制则涉及了Java的反射API和类加载器。通过深入...
Spring框架的核心包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)。依赖注入允许组件之间松耦合,而AOP则用于实现跨切面的关注点,如日志记录、事务管理等。这两个jar...
通过阅读和理解这些源码,你可以更深入地了解Spring依赖注入的工作原理及其在项目中的具体使用。 在进行依赖注入时,Spring使用BeanFactory或ApplicationContext作为容器,负责创建、管理和装配Bean。容器读取配置...
在Java开发领域,Spring框架是不可或缺的重要组成部分,它为开发者提供了强大的依赖注入、AOP(面向切面编程)以及各种企业级服务。标题中的"spring-cglib-repack-3.2.5.jar"和"spring-objenesis-repack-2.6.jar"是...
Spring依赖注入是Spring框架的核心特性之一,它使得对象之间的依赖关系得以解耦,增强了代码的可测试性和可维护性。依赖注入(Dependency Injection,简称DI)的理念是,一个对象不应该负责寻找并创建它所依赖的对象...
Objenesis可以快速地实例化一个对象,而无需调用构造函数,这对于Spring的依赖注入和AOP代理来说是一个非常有用的补充工具。 这两个库在Spring框架中的协同工作,使得Spring能够灵活地处理各种类型的类,并实现高效...
Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口注入 接口注入是指通过接口...
Spring依赖注入是Spring框架的核心特性之一,它极大地简化了Java应用程序的开发,使得对象之间的依赖关系得以解耦,提高了代码的可测试性和可维护性。本文将深入探讨Spring依赖注入的概念、工作原理以及如何在实际...
【Spring依赖注入详解】 在Java开发中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)功能而闻名。依赖注入是一种设计模式,它允许我们解耦组件,使我们的应用程序更加灵活,易于测试和维护。本篇...
本知识点将深入探讨Spring框架如何通过注解方式实现依赖注入,以帮助开发者更好地理解和应用这一特性。 一、依赖注入的概念 依赖注入是一种设计模式,其核心思想是将对象之间的依赖关系从代码中分离出来,由外部...
普通方法(set 方法)、构造方法、引用类型、简单类型(基本数据类型与 String)等。Spring 框架基于这些知识点,为我们提供了两种注入方式:setter 注入和构造器注入。 二、setter 注入 setter 注入是指通过 ...
随着Spring框架的发展,除了XML配置之外,Spring还引入了注解的方式来简化依赖注入的过程。下面介绍几种常用的依赖注入相关的注解: - **@Component**:用于标记一个普通的Java类为Spring管理的Bean。 - **@Service...
通过这种方式,Spring能够注入切面逻辑,比如日志记录、事务管理等,即使在不修改原有代码的情况下也能实现扩展功能。 其次,`spring-objenesis-repack-2.4.jar`是Objenesis库的一个版本,Objenesis是一个用于创建...