1.通过构造函数创建
<bean id='injectBean' class="di.InjectBean"></bean> <bean id="diConstruct" class="di.DependencyInjectConstruct"> <constructor-arg type="java.lang.String" value="Inject construct test"/> <constructor-arg ref="injectBean"/> </bean>
package di; public class DependencyInjectConstruct { private final String value; private final InjectBean injectBean; public DependencyInjectConstruct(String value, InjectBean injectBean) { this.value = value; this.injectBean = injectBean; } public void print() { System.out.println(value); System.out.println(injectBean); } }
2.通过Setter注入
<bean id="diSetter" class="di.DependencyInjectSetter"> <property name="value" value="Inject setter test"/> <property name="injectBean" ref="injectBean"/> </bean>
package di; public class DependencyInjectSetter { private String value; private InjectBean injectBean; public void setValue(String value) { this.value = value; } public void setInjectBean(InjectBean injectBean) { this.injectBean = injectBean; } @Override public String toString() { return "DependencyInjectSetter [value=" + value + ", injectBean=" + injectBean + "]"; } }
3.通过工厂方法
<bean id="diStaticMethod" class="di.DependencyInjectStaticMethod" factory-method="create"></bean>
package di; public class DependencyInjectStaticMethod { private final String value; private final InjectBean injectBean; private DependencyInjectStaticMethod(String value, InjectBean injectBean) { this.value = value; this.injectBean = injectBean; } public static DependencyInjectStaticMethod create() { return new DependencyInjectStaticMethod("Dependency inject for status method", new InjectBean()); } @Override public String toString() { return "DependencyInjectStaticMethod [value=" + value + ", injectBean=" + injectBean + "]"; } }
4.如果需要的非static的工厂方法可以用factory-bean类引用一个对象来创建bean
<bean id="factoryBean" class="di.DependencyInjectMethod"></bean> <bean id="diMethod" class="di.DependencyInjectStaticMethod" factory-bean="factoryBean" factory-method="create"></bean>
package di; public class DependencyInjectMethod { private String value; private InjectBean injectBean; public DependencyInjectMethod() { } private DependencyInjectMethod(String value, InjectBean injectBean) { this.value = value; this.injectBean = injectBean; } public DependencyInjectMethod create() { return new DependencyInjectMethod("Dependency inject for method", new InjectBean()); } @Override public String toString() { return "DependencyInjectMethod [value=" + value + ", injectBean=" + injectBean + "]"; } }
相关推荐
本文将深入探讨Spring中实例化Bean的三种主要方式:构造器注入、静态工厂方法注入以及实例工厂方法注入。 #### 1. 构造器注入(Constructor Injection) 构造器注入是指通过调用Bean类的构造器来创建Bean实例。...
但如果这些定义分布在不同的配置文件中,或者通过编程方式动态添加,就可能导致容器内出现两个相同的Bean实例。 2. **@Autowired注解的误用**:Spring的自动装配机制可能导致Bean的多次实例化。如果一个BeanA依赖于...
构造器注入是DI的一种形式,它通过在bean的构造函数中传入依赖对象来初始化bean。这种方式确保了在bean创建时,所有必需的依赖都已经就绪,使得对象在构造完成后即处于可用状态。 二、Spring中配置构造器注入 在...
Spring Bean三种注入方式详解 ...Spring Bean 的依赖注入有三种方式:使用属性的 setter 方法注入、使用构造器注入和使用 Filed 注入。不同的方式适用于不同的场景,我们需要根据实际情况选择合适的依赖注入方式。
在本文档中,我们关注的是Spring如何通过三种不同的方式实例化Bean。这三种方式分别是:构造方法实例化、静态工厂方法实例化和实例工厂方法实例化。我们将深入探讨构造方法实例化这一主题。 首先,为了开始我们的...
2. 每次请求Prototype Bean时,容器都会调用Bean的工厂方法或者构造函数来创建新的实例。 3. 如果Prototype Bean有依赖项,容器会递归地创建这些依赖的实例,直到所有依赖项都被满足。 在实际开发中,我们可以通过...
自动构造Java的Bean类,暂时仅支持定义包名、类名、带参构造方法、成员变量及其对应的get和set方法,同eclipse里面该项功能,不过本项目是通过配置文件实现,可以根据自己的需要进行拓展,平时用起来省时省力。
首先,我们来了解Spring中的bean注入主要有以下四种方式: 1. **设值注入(Setter Injection)**:这是最常见的一种注入方式,通过setter方法来设置bean的属性。在XML配置文件中,我们可以通过`<property>`标签来...
Bean是由Spring容器创建、初始化、装配以及管理的对象,开发者可以通过多种方式在代码中获取这些Bean。以下将详细介绍Spring在代码中获取bean的几种主要方法: 1. **`ApplicationContext` 接口** `...
5. **索引**:如果以上方式都无法确定唯一bean,那么可以为bean定义索引(例如,`@Indexed`),Spring将根据索引值进行选择。 在`@Bean`和`Spring的factoryBean`注入的情况下,`factoryBean`允许我们通过自定义工厂...
2. **属性注入**:Spring容器使用依赖注入(DI)来设置Bean的属性,包括通过setter方法、构造器参数、@Autowired注解等方式。 3. **初始化**:在实例化和属性注入后,Spring调用Bean的初始化回调方法。这些方法可以...
在探讨Spring 3.X企业应用开发过程中,第四章的内容聚焦于如何在Spring框架的核心组件——IoC(控制反转)容器中装配Bean。在Spring框架中,Bean装配是指Spring容器将应用程序中的对象进行实例化、配置以及组装的...
本节将详细介绍基于XML、注解(Annotation)以及自动装配这三种Bean装配方式。 首先,我们来理解什么是Bean的装配。Bean的装配,也称为依赖注入,是指将对象所需的依赖关系(例如其他对象或服务)设置到该对象中,...
本文将详细探讨Spring中bean实例化的三种主要方式:普通构造方法创建、静态工厂创建和实例工厂创建。 1. 普通构造方法创建: 这是最常见、最直观的方式,适用于大部分情况。在Spring配置文件中,我们通过`<bean>`...
反射实现的bean转换类,配合类型转换器,告别所有bean转vo,bean转dto,dto转bean,vo转bean,什么构造器转换之类的,简直浪费程序员生命
它提供了一种简化的方式来构建用户界面,并且能够更好地处理用户输入以及服务器端业务逻辑。 - **Managed Beans**:在JSF中用于封装业务逻辑的对象,这些对象由容器管理其生命周期。 #### 二、Managed Beans的作用 ...
构造函数方式在创建Bean时就完成依赖注入,适合对象初始化时就需要依赖的场景;静态工厂和实例工厂则提供了更灵活的创建Bean的方式,适用于需要自定义创建逻辑的情况。理解并熟练掌握这些方法,对于有效利用Spring...
四、MyBatis与Java Bean的结合 1. 映射XML文件:在MyBatis的Mapper XML文件中,我们可以定义SQL语句,并使用`<resultMap>`标签映射查询结果到Java Bean。通过字段名和数据库列名的对应,MyBatis能自动将查询结果转换...
本篇文章将深入探讨Spring项目中Bean的实例化过程,包括三种主要的bean实例化方式:构造方法、静态工厂和实例工厂。 首先,让我们了解什么是Bean。在Spring中,Bean是应用程序中的业务对象,它们由Spring容器负责...