public class CarFactory {
//非靜態方法
public Car createCar(){
Car car = new Car();
car.setBrand("BMW");
return car;
}
//靜態方法
public static Car createStaticCar(){
Car car = new Car();
return car;
}
}
1.對於非靜態方法createCar的注入方式:
非靜態方法:必須實例化工廠類(factory-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" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 工廠方法-->
<bean id="carFactory" class="com.baobaotao.ditype.CarFactory" />
<bean id="car5" factory-bean="carFactory" factory-method="createCar">
</bean>
</beans>
2.對於靜態方法createStaticCar的注入方式:
靜態方法:無須創建工廠類實例的情況下就可以調用工廠類方法
<?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-3.0.xsd">
<bean id="car6" class="com.baobaotao.ditype.CarFactory" factory-method="createStaticCar"></bean>
</beans>
總結:
factory-bean:用於實例化工廠類;
factory-method:用於調用工廠類方法。