工场方法注入(静态和非静态)
工厂方法注入(静态和非静态)
先看非静态的
先写一个简单工厂
package com.lbx.factory; import com.lbx.model.Car; /** * 这是非静态的工厂方法注入 * @author Administrator * */ public class CarFactory { public Car createHongQiCar(){ Car car = new Car(); car.setName("红旗"); car.setSpeed("200"); return car; } }
对应的bean.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="carFactory" class="com.lbx.factory.CarFactory"></bean> <bean id="car" factory-bean="carFactory" factory-method="createHongQiCar"></bean> </beans>
再看静态的(无需依赖工厂的bean)
工厂类
package com.lbx.factory; import com.lbx.model.Car; /** * 这是静态的工厂方法注入 * @author Administrator * */ public class CarFactory2 { public static Car createHongQiCar(){ Car car = new Car(); car.setName("红旗"); car.setSpeed("200"); return car; } }
对应的bean2.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="car" class="com.lbx.factory.CarFactory2" factory-method="createHongQiCar"></bean> </beans>