CLassPathXmlApplicationContext //读取类路径下的xml配置方式
FileSystemXmlApplicationContext //读取指定文件下的xml配置方式
AnnotationConfigApplicationContext //读取配置类的ioc容器
WebApplicationContext //web项目专属的配置的ioc容器
IoC容器创建:
public void creatIoc(){
//方式1:直接创建容器并指定配置文件 [推荐]
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring-03.xml");
}
//读取IoC容器的组件
1、同一类型,在IoC容器中只能有一个bean,否则会出现不唯一异常
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring-03.xml");
//读取IoC容器的组件
//方案1,需要强转
HappyComponent happyComponent=(HappyComponent)applicationContext.getBean("happyComponent");
//方案2
applicationContext.getBean("happyComponent", HappyComponent.class);
//方案3
HappyComponent happyComponent1=applicationContext.getBean(HappyComponent.class);
happyComponent.doWork();
happyComponent1.doWork();
初始化方法和销毁方法
<!--
//通过init-method和destroy-method指定初始化方法,销毁方法
-->
<bean id="beanOne" class="ioc_04.BeanOne" init-method="init" destroy-method="destory"></bean>
组件作用域配置
scope 作用域:单例 【默认值】 【推荐】singleton
多例 prototype
<!--多例-->
<bean id="beanTwo" class="ioc_04.BeanTwo" scope="prototype"></bean>
FactoryBean特性和使用
1、用于配置复杂的Bean对象
2、提供的三种方法 getObject()
getObjectType()
isSingleton()
public class JavaBeanFactoryBean implements FactoryBean<JavaBean> {
/*
*1、实现FactoryBean接口,实现<返回值泛型>
*2、
*/
private String name;
public void setName(String name) {
this.name = name;
}
@Override
public JavaBean getObject() throws Exception{
JavaBean javaBean=new JavaBean();
javaBean.setName(name);
return javaBean;
}
@Override
public Class<?> getObjectType() {
return JavaBean.class;
}
}
区别:
BeanFactory IoC容器中最大的接口 是IoC容器
FactoryBean 标准化组件工场的接口 是组件
原文链接: https://blog.csdn.net/qq_53568730/article/details/135262322