在Spring中可以通过构造函数,静态工厂方法,bean实例的工厂方法这三种方法来实现一个bean的实例化。。我先将这个例子中相关的类代码贴上来,再针对每一种实例化的方法进行说明。
User.java
UserFactory.java
InstantiationTest.java
好了,有了相关的代码之后 ,我们通过xml配置文件来设置bean的实例化方式。。
(一)、通过构造函数
以上面这种设置方式 ,Spring会使用默认的无参构造函数来实例化一个User bean。这点就要注意了,如果 我们的User类中没有无参的构造函数,Spring将无法实例 化这个bean。那如果 我们的构造函数如果有一个或多个参数 的时候 ,比如说现在我们的User类中有一个构造函数:User(int age),我们应该怎样在配置文件中进行声明呢。答案是用<constructor-art>,示例如下:
注意,如果 我们只有一个构造函数,且它有两个 形参,那我们就需要两个 constructor-arg来进行属性的设置,依次类推。还有,可以看到,我上面这个对属性age进行了两次设置,一次是通过constructor-arg,一次是通过 setter来注入,下面我们来看看打印的结果:
User [name=Kevin, age=99]
这是因为我们是对其先进行实例化,之后 又设置了属性,相当于
所以这就可以解释它为什么会打印99了。
(二)、通过静态工厂方法
看一下这种方式 下是怎么来声明配置文件的
可以看到我们用UserFactory类(在上面 可以看到)的静态方法newInstance()来返回一个User对象,因为返回的bean是User类型 的,所以我们也可以在其中来声明User的属性值,如上面我通过 setter的方式来设置其age值 为88,我们看一下执行的结果:
User [name=kevin, age=88]
name的值 是我们在工厂方法中设置的。
(三)、通过某个bean实例的工厂方法
注意这个工厂方法必须是实例方法,刚开始 我觉得在一个对象上调用方法,按说可以调用其静态方法,但是当我把配置文件中的factory-method属性指明为一个static方法时就出现了错误,所以必须记住,这个方法一定要是实例方法。
下面看一下做法:
输出结果为:
User [name=KevinJom, age=88]
(END)
分享到:
相关推荐
Spring的三种实例化Bean的方式
Spring 实例化Bean的三种方式
NULL 博文链接:https://88548886.iteye.com/blog/1682243
本篇文章主要介绍了详解Spring中bean实例化的三种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring项目bean实例化代码,包括bean是如何创建的;实例化bean的三种方式,构造方法,静态工厂和实例工厂。
下面小编就为大家带来一篇浅谈springioc实例化bean的三个方法。小编觉得挺不错的,现在就想给大家,也给大家做个参考。一起跟随小编过来看看吧
通过实例工厂方法和静态工厂方法实例化spring bean的例子。
主要给大家介绍了关于Spring中实例化bean的四种方式,分别是setter 方法、构造函数、静态工厂以及实例工厂等四种方法,分别给出了示例代码供大家参考学习,需要的朋友们下面随着小编来一起学习学习吧。
3、通过spring的xml bean配置或bean注解指定初始化方法,如下面实例的initMethod方法通过@bean注解指定。 销毁的时候实现的方法 1、通过java提供的@PreDestroy注释; 2、通过实现spring提供的DisposableBean接口,并...
Spring 延迟实例化
主要介绍了Spring Bean的初始化和销毁,结合实例形式详细分析了Spring Bean的初始化和销毁相关配置、使用方法及操作注意事项,需要的朋友可以参考下
实例化Bean有三种方式,分别为构造器实例化、静态工厂方式实例化和实例工厂方式实例化(其中最常用的是构造器实例化)。 2.2.1 构造器实例化 创建Web项目,导入相关Jar包; 创建名为Bean1的Java类; 创建Spring配置...
主要介绍了Spring实例化bean过程解析及完整代码示例,简单分析实例化bean过程并且分享了相关实例,具有一定借鉴价值,需要的朋友可以参考下
主要介绍了Spring Bean实例化实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
NULL 博文链接:https://bijian1013.iteye.com/blog/2384411
主要介绍了Spring工厂方法创建bean实例代码,具有一定借鉴价值,需要的朋友可以参考下
主要介绍了Spring实例化bean的方式代码详解,具有一定借鉴价值,需要的朋友可以参考下
1.spring中bean实例化的俩种方式 2.spring中bean的各种元素如何使用 3.spring中的bean管理 4.spring中不同类型bean的作用域 5.spring中bean的生命周期 通过我的项目,可以跟着学习SPringIoC容器和Bean管理,帮助你...
主要介绍了Spring bean对象实例化实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
因此,我们有2种配置,它们使用名称beanName实例化bean,在主应用程序中,我们仅打印该bean的值(非常重要的是,它们都具有相同的名称)。 那么您认为将要打印什么? 示例1 @SpringBootApplication public class ...