怎么在Spring框架中通过工厂创建Bean
这篇文章给大家介绍怎么在Spring框架中通过工厂创建Bean,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站制作、格尔木网络推广、成都微信小程序、格尔木网络营销、格尔木企业策划、格尔木品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供格尔木建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
工厂模式
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中注册静态工厂:
测试:
@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 airplan = 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中注册:
测试:
@Test public void test09() { System.out.println("容器启动完成"); Object bean = ioc.getBean("myFactoryBean"); System.out.println("打印属性:" + bean); }
关于怎么在Spring框架中通过工厂创建Bean就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
当前文章:怎么在Spring框架中通过工厂创建Bean
网页链接:http://scjbc.cn/article/geoijp.html