Spring通过工厂方法配置 Bean
2018-06-01 22:47
351 查看
一、通过静态工厂方法配置bean
<!-- 通过静态工厂方法配置bean,注意不是配置静态工厂方法实例,而是配置bean实例 class属性:指向静态工厂方法的全类名 factory-method:指向静态工厂方法的名字 constructor-arg:如果工厂方法需要传入参数,则使用constructor-arg配置参数 --> <bean id="car" class="com.lh.factorybean.config.StaticCarFactory" factory-method="createCar"> <constructor-arg><value>ford</value></constructor-arg> </bean>
package com.lh.factorybean.config; import java.util.HashMap; import java.util.Map; import com.lh.factorybean.bean.Car; /** * @ClassName: StaticCarFactory * @Description: Car静态工厂类,直接调用某一个类的静态方法就可以返回bean的实例 * @author Liu * @date 2018年6月1日 下午10:12:08 */ public class StaticCarFactory { private static Map<String, Car> map = new HashMap<>(); static { map.put("audi",new Car("Audi", 300000.0)); map.put("ford",new Car("Ford", 400000.0)); } //静态工厂方法 public static Car createCar(String name) { return map.get(name); } }
package com.lh.factorybean.bean; /** * @ClassName: Car * @Description: Car定义 * @author Liu * @date 2018年6月1日 下午9:22:17 */ public class Car { private String brand; private Double price; public Car() { super(); } public Car(String brand, Double price) { this.brand = brand; this.price = price; } public void setBrand(String brand) { this.brand = brand; } public void setPrice(Double price) { this.price = price; } @Override public String toString() { return "Car [brand=" + brand + ", price=" + price + "]"; } }
二、通过实例工厂方法配置bean
package com.lh.factorybean.config; import java.util.HashMap; import java.util.Map; import com.lh.factorybean.bean.Car; /** * @ClassName: InstanceCarFactory * @Description: 实例工厂的方法创建bean,即先需要创建工厂本身,再调用工厂的实例方法返回bean的实例 * @author Liu * @date 2018年6月1日 下午10:31:45 */ public class InstanceCarFactory { private Map<String, Car> map = null; public InstanceCarFactory() { map = new HashMap<>(); map.put("audi", new Car("Audi", 300000.0)); map.put("ford", new Car("Ford", 400000.0)); } public Car createCar(String name) { return map.get(name); } }
<!-- 配置工厂的实例 --> <bean id="carFactory" class="com.lh.factorybean.config.InstanceCarFactory"/> <!-- 通过实例工厂方法来配置bean --> <!-- 通过静态工厂方法配置bean,注意不是配置静态工厂方法实例,而是配置bean实例 factory-bean属性:指向实例工厂方法的bean引用 factory-method:指向实例工厂方法的名字 constructor-arg:如果工厂方法需要传入参数,则使用constructor-arg配置参数 --> <bean id="car2" factory-bean="carFactory" factory-method="createCar"> <constructor-arg><value>audi</value></constructor-arg> </bean>
三、输出
package com.lh.factorybean; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @ClassName: Main * @Description: TODO * @author Liu * @date 2018年6月1日 下午9:30:37 */ public class Main { public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans-factorybean.xml"); System.out.println(ctx.getBean("car")); System.out.println(ctx.getBean("car2")); ctx.close(); } }
Car [brand=Ford, price=400000.0]//静态工厂方法 Car [brand=Audi, price=300000.0]//实例工厂方法
相关文章推荐
- Spring学习(7)--Spring中通过工厂方法和FactoryBean配置bean
- Spring通过工厂方法配置bean
- Spring中通过工厂方法配置bean
- spring 9 bean配置--通过工厂方法(静态工厂方法&实例工厂方法
- spring(12) Spring的通过工厂方法配置Bean
- Spring学习记录(九)---通过工厂方法配置bean
- Spring通过工厂方法配置bean
- Spring通过工厂方法配置Bean
- Spring 通过工厂方法(Factory Method)来配置bean
- spring中通过工厂方法配置Bean
- Spring-10:通过工厂方法配置Bean
- spring学习笔记九 通过工厂方法配置bean
- Spring 通过工厂方法(Factory Method)来配置bean
- Spring_通过工厂方法配置 Bean
- spring 通过工厂方法配置Bean
- spring通过工厂方法和FactoryBean来配置Bean
- Spring_通过工厂方法配置bean(9)
- spring 通过工厂方法配置Bean
- Spring通过工厂方法配置bean
- Spring初学之通过工厂方法配置Bean