1.IOC DI
2.bean的创建
3.bean的特性
4.依赖注入
1.IOC(Inversion of Control) DI
spring框架实现了对IOC机制的实现,其实现方式为DI(依赖注入)。
beans包与context包是IOC的主要实现。
2.bean的创建
- 基于class创建
- 基于构造器创建
- 基于静态工厂构建
- 基于FactoryBean创建
①基于class创建
<bean id="user" class="com.ckd.service.User" />
②基于构造器创建
public class User {
private String name;
private Integer age;
private Date birthday;
private List<String> list;
private Set<String> set;
private Map<String,Object> map;
private String[] arrays;
private Properties properties;
}
<bean id="dateFormat" class="java.text.SimpleDateFormat">
<constructor-arg name="pattern" value="yyyy-MM-dd"/>
</bean>
<bean id="user" class="com.ckd.service.User">
<!--也可以用index的方式-->
<!--<constructor-arg index="0" value="杨过"/>-->
<!--<constructor-arg index="1" value="18"/>-->
<constructor-arg name="name" value="杨过"/>
<constructor-arg name="age" value="18"/>
<constructor-arg name="birthday">
<bean factory-bean="dateFormat" factory-method="parse">
<constructor-arg value="2000-01-01"/>
</bean>
</constructor-arg>
<constructor-arg name="list">
<list>
<value>"list1"</value>
<value>"list2"</value>
</list>
</constructor-arg>
<constructor-arg name="set">
<set>
<value>set1</value>
</set>
</constructor-arg>
<constructor-arg name="map">
<map>
<entry key="key1" value="value1"/>
<entry key="key2" value-ref="facuser"/>
</map>
</constructor-arg>
<constructor-arg name="arrays">
<array>
<value>value1</value>
<value>value2</value>
</array>
</constructor-arg>
<constructor-arg name="properties">
<props>
<prop key="key1">value1</prop>
<prop key="key2">value2</prop>
</props>
</constructor-arg>
</bean>
③基于静态工厂构建
public static User build(String type){
if ("test".equals(type)){
return new User("test");
} else if ("pro".equals(type)) {
return new User("pro");
}else {
throw new IllegalArgumentException("type 的参数只能为test或pro");
}
}
<bean id="facuser" class="com.ckd.service.User" factory-method="build">
<constructor-arg index="0" value="test"/>
</bean>
④基于FactoryBean创建
<!--实现返回类型是Driver类-->
<bean class="com.ckd.service.DriverFactoryBean">
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306?user"/>
</bean>
public class DriverFactoryBean implements FactoryBean {
private String jdbcUrl;
@Override
public Object getObject() throws Exception {
return DriverManager.getDriver(jdbcUrl);
}
@Override
public Class<?> getObjectType() {
return Driver.class;
}
@Override
public boolean isSingleton() {
return true;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
}
3.bean的特性
作用范围(作用域)
生命周期
装载机制