Spring学习之使用静态工厂方法以及实例工厂方法配置bean

原创 2017年06月10日 02:18:22

首先创建一个Car类作为bean方便工厂方法的使用

public class Car {

public String toString() {
return "Car [name=" + name + ", price=" + price + "]";
}
private String name;
private double price;
public Car()
{

}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Car(String name,double price)
{
this.name=name;
this.price=price;
}

}


接下来,首先是如何使用静态工厂方法来返回bean实例

1.写一个静态工厂并在静态代码块中添加bean

public class StaticFactory {
private static Map<String, Car> cars=new HashMap<String, Car>();
static{
cars.put("奥迪", new Car("奥迪", 300000.0));
cars.put("福特",new Car("福特", 250000.0));
}
public static Car getCar(String name)
{
return cars.get(name);
}


}

2.在xml文件中进行配置

   <!-- 
通过静态工厂方法来配置bean,不是配置静态工厂方法实例,而是配置bean实例
class属性:指向静态工厂的全类名
factory-method:指向静态工厂方法的方法名
constructor-arg如果工厂方法需要传入参数,则使用constructor-arg来配置参数
-->
<bean id="car1" 
class="factory.StaticFactory"
factory-method="getCar">
<constructor-arg value="奥迪"></constructor-arg>
</bean>     

使用实例工厂方法来返回bean实例

1.编写一个实例工厂

public class InstanceFactory {
private Map<String, Car> cars=new HashMap<String, Car>();
public InstanceFactory()
{
cars.put("奥迪", new Car("奥迪", 300000.0));
cars.put("福特", new Car("福特", 250000.0));
}
public  Car getCar(String name)
{
return cars.get(name);
}
}

2.在xml文件中进行配置

 <!-- 通过实例工厂方法来配置bean
factory-bean:实例工厂的全类名
factory-method:指向静态工厂方法的方法名
constructor-arg如果工厂方法需要传入参数,则使用constructor-arg来配置参数
 -->
<!-- 配置工厂的实例 -->
<bean id="factory" class="factory.InstanceFactory"></bean>
<!-- 通过实例工厂来配置bean -->
<bean id="car2"  factory-bean="factory" factory-method="getCar">
<constructor-arg value="奥迪"></constructor-arg>
</bean>

版权声明:本文为博主原创文章,未经博主允许不得转载。

spring学习小结7_使用工厂方法来配置bean:静态工厂方法和实例工厂方法

使用工厂方法来配置bean:静态工厂方法和实例工厂方法 静态工厂方法:将对象创建的过程封装到另外一个类的静态方法中。当客户端需要对象时,只需要简单地调用工厂方法,而不需要关心对象创建 的细节。 ...
  • u012574931
  • u012574931
  • 2016年02月26日 12:13
  • 375

Spring 使用静态工厂方式实例化Bean

知识点介绍:静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让spring管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过spring注入的形式获取...
  • ma_hoking
  • ma_hoking
  • 2014年12月20日 21:00
  • 3246

转:Spring使用静态工厂方法创建Bean

如何在Spring中不再使用Spring创建Bean实例,而是把Bean创建过程转移到开发者手中。 1. 使用静态工厂方法创建Bean     使用静态工厂方法创建Bean实例时,class属...
  • u012110719
  • u012110719
  • 2015年08月18日 16:03
  • 1547

Spring 在静态工具类中使用注解注入bean

问题最近在项目中遇到这样一个情况:有一个发送邮件的工具类。在这个工具类中提供了几种静态方法,静态方法需要另外一个类的实例提供处理。解决在网上查阅了资料后有几种解决方案,具体可以参考http://blo...
  • da_guo_li
  • da_guo_li
  • 2017年06月14日 17:13
  • 1196

spring中的bean何时被实例化

spring中bean默认是sinleton的,延迟加载为false 。即 如果想要一个类延迟实例化,那么将其的lazy-init=”true”或改变其 scope(类的管理方式)。spring在服...
  • JKL852qaz
  • JKL852qaz
  • 2016年10月18日 16:46
  • 2591

Spring 使用实例工厂方法实例化Bean

知识点介绍:         实例工厂的意思是获取对象实例的方法不是静态的,所以你需要首先new工厂类,再调用普通的实例方法。 【转载使用,请注明出处:http://blog.csdn.net/m...
  • ma_hoking
  • ma_hoking
  • 2014年12月20日 22:00
  • 2140

Spring中抽象bean的使用

转载自http://langgufu.iteye.com/blog/1911615 我们在应用Spring时,在一般的设计时,肯定要用的抽象类。那在Spring中怎么样配置这些抽象B...
  • u010953266
  • u010953266
  • 2015年05月11日 20:35
  • 1928

Spring IoC容器实例化bean的三种方式

先来看一下工程目录结构 下面是接口及其实现类和实体类 package com.luhy.spring.hello; public interface HelloApi { publ...
  • lu8000
  • lu8000
  • 2013年05月30日 00:20
  • 3493

在spring的bean中注入内部类

在spring中注入内部类,有可能会遇到如下异常信息: 2014-5-14 21:52:45 org.springframework.context.support.AbstractApplicati...
  • z69183787
  • z69183787
  • 2016年02月01日 15:14
  • 2173

Spring IOC 创建bean实例的方式

据我所知,创建bean实例的方式有4种方式~ 下面我会一一写出来这4种方式~ 第一种:xml文件中有bean的配置,而且这个bean所对应的java类中存在一个无参构造器,那么这个时候spring...
  • qq_33642117
  • qq_33642117
  • 2016年07月17日 15:05
  • 2387
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring学习之使用静态工厂方法以及实例工厂方法配置bean
举报原因:
原因补充:

(最多只允许输入30个字)