使用构造器注入通过配置构造器参数实现,构造器参数就是依赖
1:按照参数索引依赖注入的Bean
2:按照参数类型依赖注入的Bean
3:根据参数名称依赖注入的Bean
package org.spring.chapter2.helloworld;
public class HelloImpl3 implements HelloApi {
private String message;
private int index;
public HelloImpl3() {
this.message="Hello World in Empty Constructor";
}
public HelloImpl3(String message,int index) {
this.message = message;
this.index = index;
}
@Override
public void sayHello() {
System.out.println(index+":"+message);
}
}
<?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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 通过构造器参数索引方式依赖注入 -->
<bean id="byIndex" class="org.spring.chapter2.helloworld.HelloImpl3">
<constructor-arg index="0" value="Hello Spring By Index" />
<constructor-arg index="1" value="1"></constructor-arg>
</bean>
<!-- 通过构造器参数类型方式依赖注入 -->
<bean id="byType" class="org.spring.chapter2.helloworld.HelloImpl3">
<constructor-arg type="java.lang.String" value="Hello Spring By Type" />
<constructor-arg type="int" value="2" />
</bean>
<!-- 通过构造器参数名称方式依赖注入 -->
<bean id="byName" class="org.spring.chapter2.helloworld.HelloImpl3">
<constructor-arg name="message" value="Hello Spring By Name" />
<constructor-arg name="index" value="3"/>
</bean>
</beans>
@Test
public void testConstructInject(){
ApplicationContext context = new ClassPathXmlApplicationContext("org/spring/chapter2/helloworld/helloworld5.xml");
//1:按照参数索引依赖注入的Bean
HelloApi byIndex = context.getBean("byIndex",HelloApi.class);
byIndex.sayHello();
//2:按照参数类型依赖注入的Bean
HelloApi byType = context.getBean("byType",HelloApi.class);
byType.sayHello();
//3:根据参数名称依赖注入的Bean
HelloApi byName = context.getBean("byName",HelloApi.class);
byName.sayHello();
}
分享到:
相关推荐
在Spring Boot应用中,构造器注入是一种常见的依赖注入方式,但它可能会引发循环依赖的问题。循环依赖是指两个或多个Bean之间形成一个闭环,彼此依赖对方,导致Spring容器在初始化Bean时无法确定创建顺序,从而抛出...
- 构造器注入则是通过调用带有依赖参数的构造函数来创建并初始化bean。这种方式在bean创建时就确保了所有依赖都被注入,有助于实现不可变对象。 ```xml <bean id="exampleBean" class="com.example.ExampleBean">...
构造器注入是指通过构造函数将依赖对象注入到 Bean 中。例如,在 BookServiceImpl 中可以使用构造函数注入 BookDao 对象。 四、环境准备 为了更好地理解 setter 注入和构造器注入,下面将创建一个 Maven 项目,...
本篇将重点讨论IOC中的构造器注入,这是一种实现依赖注入的方式。 一、IOC与依赖注入 IOC的核心理念是将对象的创建和依赖关系的管理从应用代码中分离出来,交给一个专门的容器(在Spring中即ApplicationContext)。...
构造器注入是DI的一种形式,它通过在bean的构造函数中传入依赖对象来初始化bean。这种方式确保了在bean创建时,所有必需的依赖都已经就绪,使得对象在构造完成后即处于可用状态。 二、Spring中配置构造器注入 在...
DI主要有两种实现方式:setter注入和构造器注入。 首先,我们来理解setter注入。setter注入是通过Spring容器调用对象的setter方法来设置其依赖的对象。这种方式比较灵活,因为可以在运行时改变对象的依赖。例如,...
本篇将详细讲解如何使用构造器注入作为Spring依赖注入的一种方式,并通过一个完整的可运行示例——"SpringIOCTest2"来加深理解。 首先,理解依赖注入的概念。依赖注入允许我们不在类内部创建对象,而是通过外部源...
+ 构造器注入 Bean 时。 + 单例代理 Bean 通过 setter 注入的情况。 + 设置了 `@DependsOn` 注解。 反射 * 反射的使用,以 String 类为例:`Class StringClass = String.class; //获取类`、`Method subString =...
依赖构造器注入是指在创建 Bean 时将依赖项传递给构造函数的过程。 使用 @ComponentScan 注解来实现依赖构造器注入 ------------------------------------------------ 在 SpringBoot 框架中,我们可以使用 @...
构造器注入是指通过Bean类的构造方法来注入依赖项。它要求在创建Bean的实例时就提供所有的依赖项,因此在Bean的构造函数中必须包含这些依赖项作为参数。构造器注入具有强制依赖项的特性,更加遵循面向对象设计的“不...
本文将深入探讨Spring中实例化Bean的三种主要方式:构造器注入、静态工厂方法注入以及实例工厂方法注入。 #### 1. 构造器注入(Constructor Injection) 构造器注入是指通过调用Bean类的构造器来创建Bean实例。...
同时,Spring支持依赖注入(Dependency Injection,DI),通过setter方法或者构造器注入bean的依赖。依赖注入使得代码更加松耦合,易于测试和维护。 在"IOC相关JAR包"中,可能包含了如下的库文件: 1. `spring-...
- 除了setter注入,还可以使用构造器注入来初始化Bean的属性。这种方式确保Bean在创建时已经完全初始化。 - 示例: ```java public class ExampleClass { private final AnotherBean myObject; private final ...
- **构造器注入**:在构造函数中注入依赖的bean。 4. **Bean的作用域** Spring支持五种bean的作用域: - **单例(Singleton)**:容器中只有一个实例,所有请求都返回同一个bean。 - **原型(Prototype)**:每次...
构造器注入主要用于某些类因为某种原因不能作为 Bean,只是一个普通类。可以通过类的构造方法传入需要调用的 Bean 接口。这种方式的优点是可以确保依赖项的正确性,但需要注意的是,构造方法的参数顺序和类型必须与 ...
Spring提供了多种注入方式,包括构造器注入、setter注入和接口注入等。通过这种方式,我们可以实现依赖反转,使代码更具灵活性和可测试性。 在嵌套Bean的场景下,一个Bean可以包含另一个或多个Bean作为其属性。例如...
该变量将在构造器中被初始化,通过构造注入steelAxe bean实例作为参数传递给Chinese构造器。 在Spring框架中,构造注入可以通过两种方式实现,一种是使用constructor-arg元素,另一种是使用 @Autowired 注解。使用...
Bean属性注入主要有两种方式:`setter方法注入`和`构造器注入`。前者通过调用Bean的setter方法来设置属性,后者在创建Bean实例时通过构造器传入参数。Spring还提供了多种注入方式,如`属性值注入`、`引用注入`(注入...
本文将详细探讨Spring中的两种主要注入方式:构造器注入和setter注入,以及它们各自的特点和适用场景。 首先,让我们理解什么是依赖注入(Dependency Injection,简称DI)。在传统的编程模式中,一个类通常会直接...