Spring工厂方法
IOC通过工厂模式创建bean方式有两种
-
静态工厂方法
-
实例工厂方法
实体类:
package com.soutchwind.entitiy;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
静态工厂类:
package com.soutchwind.factory;
import com.soutchwind.entitiy.Car;
import java.util.HashMap;
import java.util.Map;
public class StaticCarFactory {
private static Map<Long, Car>carMap;
static {
carMap = new HashMap<Long,Car>();
carMap.put(1L,new Car(1L,"宝马"));
carMap.put(2L,new Car(2L,"奔驰"));
}
public static Car getCar(long id){
return carMap.get(id);
}
}
配置文件:
<!--配置静态工厂创建car-->
<bean id="car" class="com.soutchwind.factory.StaticCarFactory" factory-method="getCar">
<constructor-arg value="2"></constructor-arg>
Ioc自动装载(Autowrite)
IoC负责创建对象,DI负责完成对象的依赖注入,通过配置property标签的ref属性来实现注入bean
另一种更简单的依赖注入方式:自动装载,不需要手动配置property,ioc容器会自己选择bean完成注入。
自动装载有两种方式:
-
byName:通过属性名自动装载
-
byType:通过属性的数据类型自动装载。
byname方式
bytype
<!--bytupe实现自动装载,person根据缺少属性的类的类型,在bean中寻找与属性的类名相同的类,注入相应的对象-->
<!--如果有多个对象都符合类的条件。则会报错。-->
<bean id="person" class="com.soutchwind.entitiy.Person" autowire="byType">
<property name="id" value="1"></property>
<property name="name" value="张三"></property>
</bean>