spring容器继承体系

在这里插入图片描述

  • FileSystemXmlApplicationContext——使用文件系统导入配置
  • ClassPathXMLApplicationContext——使用xml文件导入配置
  • AnnotationConfigApplicationContext——使用注解导入配置信息

二. 两大重要API:

  1. BeanFactory——定义bean的工厂接口
    在资源缺乏年代,没将一个bean放入spring容器中时,容器是不会创建对象的,只有在需要使用到这个对象时才会创建这个对象,目的是节约资源。问题是使用过程中会耗时,体验差。
  2. ApplicationContext——在beanFactory的基础上进行了扩展
    资源在不断更新,内存不在缺乏,一个对象存放在内存中不会对内存产生影响,当spring容器启动时,就会创建所有在容器中的对象(多例除外),使项目访问速率提高。

三. FactoryBean的使用

SessionFactory

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.beans.factory.FactoryBean;

/**
 * 获取SqlSession对象
 */
public class SessionFactory implements FactoryBean {

    @Override
    public Object getObject() throws Exception {
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }

    @Override
    public Class<?> getObjectType() {
        return SqlSession.class;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }
}

配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="session" class="com.gh.factory.SessionFactory"></bean>

</beans>

测试

@Test
    public void getSession(){
        ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext03.xml");
        SqlSession session = ioc.getBean("session", SqlSession.class);
        System.out.println(session);
    }

四. BeanFactory和FactoryBean

  • BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。
  • 在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爪蛙岛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值