码迷,mamicode.com
首页 > 编程语言 > 详细

Spring中三种创建Bean对象的方式

时间:2021-04-07 10:30:03      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:service   pre   nbsp   一个   属性   获取对象   get   静态方法   工厂   

创建Bean的三种方式:

1、 使用类中的默认构造函数创建对象

spring的配置文件中使用Bean标签,配以id和class属性之后,且没有其他属性和标签时,采用的就是默认构造函数创建Bean对象。故类中要提供默认构造函数

如果没有编写任何构造方法,那么编译器会默认赠送一个构造方法,没有参数,方法体什么事都不做。一旦编写了一个构造方法(包括带参数的),那么编译器不再赠送。

技术图片

 构造方法也可以进行重载,即方法名称相同,参数列表不同叫方法重载。如果给构造函数加一个参数,且没有重写默认构造函数,此时表示默认构造函数没有了,对象无法创建。

技术图片

 则会实例化失败

技术图片

 此时,配置文件报错:

技术图片

2、 我们在实际开发中,有可能会用到Jar包中的类,存在jar包中的类都是字节码文件,我们是没法通过修改源码的方式来提供默认构造函数使用普通工厂中的方法创建对象,即使用类中的普通方法创建对象并存入spring容器

现在我们模拟一个工厂类,该工厂类为jar包中的类,类中提供了一个方法,通过这个方法我们可以得到一个AccountService,由于这个类是jar包中的类,无法通过修改源码的方式来提供默认构造函数从而无法得到AccountService对象。

技术图片

 技术图片

即先反射创建InstanceFactory类的对象,

<bean id="instanceFactory" class="com.itheima.factory.InstanceFactory"></bean>

再通过该对象调用类中的方法来创建AccountService对象。

<bean id="accountService" factory-bean="instanceFactory" factory-method="getAccountService"></bean>

其中:factory-bean属性指定工厂Bean对象,factory-method属性指定哪个方法来获取对象。

3、 使用类中的静态方法创建对象,并存入spring容器。

StaticFactory类模拟jar包中的类

技术图片

<bean id="accountService" class="com.itheima.factory.StaticFactory" factory-method="getAccountService"></bean>

 

 

 

Spring中三种创建Bean对象的方式

标签:service   pre   nbsp   一个   属性   获取对象   get   静态方法   工厂   

原文地址:https://www.cnblogs.com/zwh0910/p/14617981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!