• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Spring框架通过工厂创建Bean的三种方式实现

java 搞代码 4年前 (2022-01-05) 28次浏览 已收录 0个评论

这篇文章主要介绍了Spring框架通过工厂创建Bean的三种方式实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

工厂模式

Spring中bean的创建,默认是框架利用反射new出来的bean实例。有时候也会有一些复杂的情况。

假设有一个飞机,属性如下,现在需要造很多同型号的飞机,那么唯一需要改变的属性只有DriverName(机长姓名),此时可以使用工厂模式帮我们创建对象,有一个专门帮我们创建对象的类帮我们创建对象,这个类就叫工厂。

 public class AirPlane { private String DriverName;// 机长姓名 private String AirPlaneName;// 飞机名字 private String longth;// 飞机长度 private Integer num;// 载客量 //省略getter与setter方法 }

静态工厂:工厂本身不用创建对象,通过静态方法调用。
实例工厂:工厂本身需要创建对象,需要先new一个工厂实例。

1.使用静态工厂创建bean

静态工厂:

 package com.gql.factory; import com.gql.bean.AirPlane; /** * 静态工厂 * * @author guoqianliang */ public class AirPlaneStaticFactory { public static AirPlane getAirPlane(String drivername) { System.out.println("静态工厂造飞机..."); AirPlane airplan = new AirPlane(); airplan.setDriverName(drivername); airplan.setAirPlaneName("歼20"); airplan.setLongth(20); airplan.setNum(1); return airplan; } }

在xml中注册静态工厂:

 <!-- 静态工厂: factory-method="getAirPlane"指定哪个方法是工厂方法--> 

测试:

 @Test public void test07() { System.out.println("容器启动完成"); AirPlane bean = (AirPlane) ioc.getBean("airPlan1"); System.out.println("打印飞机属性:" + bean); }

2.使用实例工厂创建bean

实例工厂:

 package com.gql.factory; import com.gql.bean.AirPlane; /** * 实例工厂 * @author guoqianliang */ public class AirPlaneInstanceFactory { public AirPlane getAirPlane(String drivername) { System.out.println("实例工厂造飞机..."); AirPlane airpl<i style="color:transparent">来源gaodai$ma#com搞$代*码网</i>an = new AirPlane(); airplan.setDriverName(drivername); airplan.setAirPlaneName("歼20"); airplan.setLongth(20); airplan.setNum(1); return airplan; } }

在xml中注册实例工厂:

  • factory-bean=“InstanceFactory” :指定使用哪个工厂实例。
  • factory-method=“getAirPlane”:使用哪个工厂方法。
  

测试:

 @Test public void test08() { System.out.println("容器启动完成"); AirPlane bean = (AirPlane) ioc.getBean("airPlan2"); System.out.println("打印飞机属性:" + bean); }

3.实现FactoryBean工厂创建Bean

ioc容器启动的时候不会创建实例(无论是单实例还是多实例),获取的时候才创建实例对象。

实现FactoryBean接口:

 package com.gql.factory; import org.springframework.beans.factory.FactoryBean; import com.gql.bean.Book; public class MyFactoryBean implements FactoryBean { /** * 返回创建的对象 */ @Override public Book getObject() throws Exception { System.out.println("MyFactoryBean创建对象..."); Book book = new Book(); book.setBookName("红楼梦"); book.setAuthor("曹雪芹"); return book; } /** * 返回创建的对象的类型 */ @Override public Class getObjectType() { // TODO Auto-generated method stub return Book.class; } /** * 是单例? true:是 false:不是 */ @Override public boolean isSingleton() { // TODO Auto-generated method stub return true; } }

在xml中注册:

 <!-- 使用FactoryBean -->

测试:

 @Test public void test09() { System.out.println("容器启动完成"); Object bean = ioc.getBean("myFactoryBean"); System.out.println("打印属性:" + bean); }

以上就是Spring框架通过工厂创建Bean的三种方式实现的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Spring框架通过工厂创建Bean的三种方式实现

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址