Bean的配置形式:基于XML文件的方式;基于注解的方式
Bean的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法&实例化工厂的方法)、factoryBean
下文主要介绍静态工厂方法和factoryBean的方法:
建立实体:
就两个属性以及对应的get、set方法
package com.spring.entity01;
/**
* @Author: wj
* @Date: 2018/11/19 14:29
* @Version 1.0
*/
public class Car {
public String carNam;
public String price;
public Car(String carNam, String price) {
this.carNam = carNam;
this.price = price;
}
public String getCarNam() {
return carNam;
}
public void setCarNam(String carNam) {
this.carNam = carNam;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"carNam='" + carNam + '\'' +
", price='" + price + '\'' +
'}';
}
}
一.静待工厂方法:
1.建立工厂类:
通过getCar 方法根据Map的key值返回相应的实体类
package com.spring.beanFactory;
import com.spring.entity01.Car;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: wj
* @Date: 2018/11/19 14:31
* @Version 1.0
*/
public class StaticCarFactory {
private static Map<String,Car> carMap = new HashMap<String, Car>();
static {
carMap.put("audi",new Car("audi","20000"));
carMap.put("ford",new Car("ford","40000"));
}
public static Car getCar(String name){
return carMap.get(name);
}
}
2.建立XML文件
3.main方法:
4.输出:
该方法主要通过xml传入的参数去找到工厂方法里静态Map中对应的实体类实现的。
二.factoryBean 方法
1.建立CarFacoryBean 类实现FactoryBean接口
package com.spring.beanFactory;
import com.spring.entity01.Car;
import org.springframework.beans.factory.FactoryBean;
/**
* @Author: wj
* @Date: 2018/11/19 15:29
* @Version 1.0
*/
public class CarFactoryBean implements FactoryBean<Car> {
private String carNam;
public void setCarNam(String carNam) {
this.carNam = carNam;
}
public Car getObject() throws Exception {
return new Car(carNam,"520000");
}
public Class<?> getObjectType() {
return Car.class;
}
public boolean isSingleton() {
return true;
}
}
2.建立xml文件
<!--
class:CarFactoryBean的全路径
该方法是通过getObject方法返回实体Bean的
-->
<bean id="car2" class="com.spring.beanFactory.CarFactoryBean" >
<property name="carNam" value="BMW"></property>
</bean>
3.输出
:
总结:工厂方法在多框架继承的时候比较常见,在继承Struts2是会用得到