Spring-02-基于xml的配置

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 标准化组件工场的接口 是组件

你可能感兴趣的:(SSM自学,spring,xml,python)