<?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.xsd">
<!-- 通过静态工厂方法来配置Bean,注意不是配置静态工厂方法实例,而是配置bean实例-->
<bean id="car1" class="com.dasenlin.test.springmodel.factory.StaticCarFactory" factory-method="getCar">
<constructor-arg value="audi"></constructor-arg>
</bean>
<!-- 实例工厂的方法 -->
<bean id="carFactory" class="com.dasenlin.test.springmodel.factory.InstanceCarFactory"></bean>
<bean id="car2" factory-bean="carFactory" factory-method="getCar">
<constructor-arg value="audi"></constructor-arg>
</bean>
</beans>
java部分及测试(静态化获取值部分)
package com.dasenlin.test.springmodel.factory;
import java.util.HashMap;
import java.util.Map;
public class StaticCarFactory {
private static Map<String,Car> cars =new HashMap<String,Car>();
static{
cars.put("audi", new Car("audi","shanghai",100000));
cars.put("Fute", new Car("fute","beijing",30000));
}
public static Car getCar(String name){
return cars.get(name);
}
}
实例化获取值部分
package com.dasenlin.test.springmodel.factory;
import java.util.HashMap;
import java.util.Map;
public class InstanceCarFactory {
private Map<String,Car> cars=null;
public InstanceCarFactory(){
cars = new HashMap<String, Car>();
cars.put("audi", new Car("audi","shanghai",300000));
cars.put("fute", new Car("fute","beijing",200000));
}
public Car getCar(String name){
return cars.get(name);
}
}
car实例
package com.dasenlin.test.springmodel.factory;
/**
*构造方法注入
*/
public class Car {
private String brand;
private String company;
private int price;
private double maxSpeed;
public Car(String brand, String company, int price) {
super();
this.brand = brand;
this.company = company;
this.price = price;
}
public Car(String brand, String company, double maxSpeed) {
super();
this.brand = brand;
this.company = company;
this.maxSpeed = maxSpeed;
}
public double getMaxSpeed() {
return maxSpeed;
}
public void setMaxSpeed(double maxSpeed) {
this.maxSpeed = maxSpeed;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", company=" + company + ", price=" + price + ", maxSpeed=" + maxSpeed + "]";
}
}
以及spring默认的单例模式
<?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.xsd">
<!-- 使用bean的scope 属性来配置bean的作用域
singleton:默认值,容器初始化创建一个bean,单利的
prototype:原型的,容器初始化时不创建bean的实例,而是在每次请求的时候创建一个新的bean-->
<bean id="car" class="com.dasenlin.test.springmodel.autowire.Car" scope="prototype">
<property name="brand" value="Audi"></property>
<property name="price" value="3000000"></property>
</bean>
</beans>
spEL表达式
<?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.xsd">
<!-- 使用spel为属性赋值一个字面值 -->
<bean id="address" class="com.dasenlin.test.springmodel.spel.Address">
<property name="city" value="#{'BeiJing'}"></property>
<property name="street" value="Wudaokou"></property>
</bean>
<!-- 使用spEl引用静态属性 -->
<bean id="car" class="com.dasenlin.test.springmodel.spel.Car">
<property name="brand" value="Audi"></property>
<property name="price" value="500000"></property>
<property name="tyrePerimeter" value="#{T(java.lang.Math).PI * 80}"></property>
</bean>
<bean id="person" class="com.dasenlin.test.springmodel.spel.Person">
<!-- spEl来引用其他的Bean -->
<property name="car" value="#{car}"></property>
<!-- spEl来引用其他的Bean的属性 -->
<property name="city" value="#{address.city}"></property>
<property name="info" value="#{car.price >300000 ? '金领':'白领'}"></property>
<property name="name" value="Tom"></property>
</bean>
<bean id="carlife" class="com.dasenlin.test.springmodel.spelcon.Car"
init-method="instance" destroy-method="destory">
</bean>
</beans>