一,Spring IoC容器的实例化:
三,bean的别名
<bean name="dataSourceA" class="..." />
引用上面定义的bean
<alias name="dataSourceA" alias="dataSourceB" />
<alias name="dataSourceA" alias="dataSourceC" />
1. Resource resource = new FileSystemResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
2. ClassPatchResource resource = new ClassPathResource ("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
3. ApplicationContext context = new ClassPathXmlApplication(new String[]{"beans1.xml","beans2.xml"});
BeanFactory factory = (BeanFactory) context;
二,从外面加载xml配置文件
<beans>
<import resource="service.xml"/>
<bean id=".." class="..." />
</beans>
四,创建bean的一般方法
1.使用构造器实例化
<bean id="myBean" class="..." />
2.使用静态工厂方法创建bean
<bean id = "" class=",,," factory-method="createInstance" />
其中createInstance()必须是static方法
3.使用实例工厂方法
<bean id="myFactory" class="......" >
</bean>
......
<bean id="myBean" factory-bean="myFactory" factory-method="createInstance" />
4.使用容器
InputStream is = new FileInputStream(new File("beans.xml"));
BeanFactory factory = new XmlBeanFactory(is);
MyBean mb = (MyBean) factory.getBean("myBean");
五,注入
1.setter注入
2,构造器注入
当构造函数的参数类型一致时,通过index指定值
3.工厂静态方法
<bean id="exampleBean" class="ExampleBean" factory-method="createInstance">
<constructor-arg ref="beanA" />
<.../>
<constructor-arg type="int" value="1" />
</bean>
<bean id="beanA" class="......" />
......
ExampleBean.java
public class ExampleBean{
private ExampleBean(...){}
public static ExampleBean(BeanA beanA,...,int i){
ExampleBean eb = new ExampleBean();
......
return eb;
}
}
...................
idref 指定在xml中已经定义过的bean,它可以是一个property的value...<idref bean="someBean" />
local ...<idref local="someBean" />指定在同一个xml文件里定义的bean
六,延迟初始化bean
<bean id="lazyBean" class="..." lazy-init="true" />
<beans default-lazy-init="true">
//some bean define
</beans>
七、Autowiring modes
no,byName,byType,constructor,autodetect
八、bean的作用域
singleton、prototype、request、session、global session