Spring学习笔记九--静态工厂方法和实例工厂方法
2016-03-06 00:00
746 查看
工厂方法配置bean
配置bean方式:xml(反射),FactoryBean
静态工厂方法创建bean,对象创建过程封装到静态方法
实例工厂方法
配置bean方式:xml(反射),FactoryBean
静态工厂方法创建bean,对象创建过程封装到静态方法
实例工厂方法
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 静态工厂方法配置bean实例 class工厂方法全类名 method静态工厂方法的名字 constructor-arg传入工厂方法参数 --> <bean id="car1" class="factory.StaticCarFactory" factory-method="getCar"> <constructor-arg value="audi"/> </bean> <!-- 配置实例工厂实例 --> <bean id="carFactory" class="factory.InstancdCarFactory"></bean> <!-- 通过实例工厂方法配置bean--> <bean id="car2" factory-bean="carFactory" factory-method="getCar"> <constructor-arg value="benz"/> </bean> </beans>
package factory; import java.util.HashMap; import java.util.Map; /** * 静态工厂方法 */ public class StaticCarFactory { private static Map<String, Car> cars = new HashMap<>(); static { cars.put("audi", new Car("audi", 300000)); cars.put("benz", new Car("benz", 500000)); } public static Car getCar(String name) { return cars.get(name); } }
package factory; /** * 实例工厂方法,先需要创建工厂本身,再调用工厂的实例方法 */ import java.util.HashMap; import java.util.Map; public class InstancdCarFactory { private Map<String, Car> cars = null; public InstancdCarFactory() { cars = new HashMap<>(); cars.put("audi", new Car("audi", 10000)); cars.put("benz", new Car("benz", 20000)); } public Car getCar(String brand) { return cars.get(brand); } }
package factory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { App 7fe0 licationContext ctx = new ClassPathXmlApplicationContext("factory//factory.xml"); Car car1 = (Car)ctx.getBean("car1"); System.out.println(car1); Car car2 = (Car)ctx.getBean("car2"); System.out.println(car2); } }
package factory; public class Car { private String brand; private double price; public Car() { System.out.println("this is car constructor."); } public Car(String brand, double price) { this.brand = brand; this.price = price; } public String getBrand() { return brand; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public void setBrand(String brand) { System.out.println("setting brand ..."); this.brand = brand; } public void init() { System.out.println("init ..."); } public void destory() { System.out.println("destory..."); } @Override public String toString() { return "Car{" + "brand='" + brand + '\'' + ", price=" + price + '}'; } }
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 模拟Spring的简单实现
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- Spring Bean基本管理实例详解
- java实现简单美女拼图游戏
- 详解Java的Spring框架中的事务管理方式
- 解析Java的Spring框架的BeanPostProcessor发布处理器
- Java开发框架spring实现自定义缓存标签
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- spring boot实战之内嵌容器tomcat配置