`
hacksin
  • 浏览: 10448 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Bean 的四种构造方式

阅读更多

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的三种方式

    本文将深入探讨Spring中实例化Bean的三种主要方式:构造器注入、静态工厂方法注入以及实例工厂方法注入。 #### 1. 构造器注入(Constructor Injection) 构造器注入是指通过调用Bean类的构造器来创建Bean实例。...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    但如果这些定义分布在不同的配置文件中,或者通过编程方式动态添加,就可能导致容器内出现两个相同的Bean实例。 2. **@Autowired注解的误用**:Spring的自动装配机制可能导致Bean的多次实例化。如果一个BeanA依赖于...

    通过bean的构造器赋值.zip

    构造器注入是DI的一种形式,它通过在bean的构造函数中传入依赖对象来初始化bean。这种方式确保了在bean创建时,所有必需的依赖都已经就绪,使得对象在构造完成后即处于可用状态。 二、Spring中配置构造器注入 在...

    Spring Bean三种注入方式详解

    Spring Bean三种注入方式详解 ...Spring Bean 的依赖注入有三种方式:使用属性的 setter 方法注入、使用构造器注入和使用 Filed 注入。不同的方式适用于不同的场景,我们需要根据实际情况选择合适的依赖注入方式。

    Java开发学习(四)----bean的三种实例化方式.doc

    在本文档中,我们关注的是Spring如何通过三种不同的方式实例化Bean。这三种方式分别是:构造方法实例化、静态工厂方法实例化和实例工厂方法实例化。我们将深入探讨构造方法实例化这一主题。 首先,为了开始我们的...

    singleton Bean 创建 prototype Bean

    2. 每次请求Prototype Bean时,容器都会调用Bean的工厂方法或者构造函数来创建新的实例。 3. 如果Prototype Bean有依赖项,容器会递归地创建这些依赖的实例,直到所有依赖项都被满足。 在实际开发中,我们可以通过...

    根据配置文件自动构造Bean类

    自动构造Java的Bean类,暂时仅支持定义包名、类名、带参构造方法、成员变量及其对应的get和set方法,同eclipse里面该项功能,不过本项目是通过配置文件实现,可以根据自己的需要进行拓展,平时用起来省时省力。

    java巩固练习Spring 的bean注入方式有几种demo例子

    首先,我们来了解Spring中的bean注入主要有以下四种方式: 1. **设值注入(Setter Injection)**:这是最常见的一种注入方式,通过setter方法来设置bean的属性。在XML配置文件中,我们可以通过`&lt;property&gt;`标签来...

    Spring在代码中获取bean的几种方式.rar

    Bean是由Spring容器创建、初始化、装配以及管理的对象,开发者可以通过多种方式在代码中获取这些Bean。以下将详细介绍Spring在代码中获取bean的几种主要方法: 1. **`ApplicationContext` 接口** `...

    通过@Autowired注解注入bean的顺序,以及@bean注入.rar

    5. **索引**:如果以上方式都无法确定唯一bean,那么可以为bean定义索引(例如,`@Indexed`),Spring将根据索引值进行选择。 在`@Bean`和`Spring的factoryBean`注入的情况下,`factoryBean`允许我们通过自定义工厂...

    Spring框架中Bean的生命周期 Spring中Bean有几种作用域

    2. **属性注入**:Spring容器使用依赖注入(DI)来设置Bean的属性,包括通过setter方法、构造器参数、@Autowired注解等方式。 3. **初始化**:在实例化和属性注入后,Spring调用Bean的初始化回调方法。这些方法可以...

    第四章 在Ioc容器中装配Bean

    在探讨Spring 3.X企业应用开发过程中,第四章的内容聚焦于如何在Spring框架的核心组件——IoC(控制反转)容器中装配Bean。在Spring框架中,Bean装配是指Spring容器将应用程序中的对象进行实例化、配置以及组装的...

    基于java的企业级应用开发:Bean的装配方式.ppt

    本节将详细介绍基于XML、注解(Annotation)以及自动装配这三种Bean装配方式。 首先,我们来理解什么是Bean的装配。Bean的装配,也称为依赖注入,是指将对象所需的依赖关系(例如其他对象或服务)设置到该对象中,...

    详解Spring中bean实例化的三种方式

    本文将详细探讨Spring中bean实例化的三种主要方式:普通构造方法创建、静态工厂创建和实例工厂创建。 1. 普通构造方法创建: 这是最常见、最直观的方式,适用于大部分情况。在Spring配置文件中,我们通过`&lt;bean&gt;`...

    反射实现的bean转换类

    反射实现的bean转换类,配合类型转换器,告别所有bean转vo,bean转dto,dto转bean,vo转bean,什么构造器转换之类的,简直浪费程序员生命

    JSF 资源 managed bean 课件

    它提供了一种简化的方式来构建用户界面,并且能够更好地处理用户输入以及服务器端业务逻辑。 - **Managed Beans**:在JSF中用于封装业务逻辑的对象,这些对象由容器管理其生命周期。 #### 二、Managed Beans的作用 ...

    Spring中实例化bean的四种方式详解

    构造函数方式在创建Bean时就完成依赖注入,适合对象初始化时就需要依赖的场景;静态工厂和实例工厂则提供了更灵活的创建Bean的方式,适用于需要自定义创建逻辑的情况。理解并熟练掌握这些方法,对于有效利用Spring...

    使用mybatis自动建bean

    四、MyBatis与Java Bean的结合 1. 映射XML文件:在MyBatis的Mapper XML文件中,我们可以定义SQL语句,并使用`&lt;resultMap&gt;`标签映射查询结果到Java Bean。通过字段名和数据库列名的对应,MyBatis能自动将查询结果转换...

    Spring项目bean实例化代码

    本篇文章将深入探讨Spring项目中Bean的实例化过程,包括三种主要的bean实例化方式:构造方法、静态工厂和实例工厂。 首先,让我们了解什么是Bean。在Spring中,Bean是应用程序中的业务对象,它们由Spring容器负责...

Global site tag (gtag.js) - Google Analytics