【Spring】【BeanFactory容器+ApplicationContext容器】【加载过程】【Spring的测试环境】

2种Spring的容器

<!--applicationContext.xml文件声明bean-->
<bean id="employeeDAO" class="dao.impl.EmployeeDAOImpl" />
1.BeanFactory容器

Spring最简单的容器,功能就只有IOC + DI.

    @Test
    public void dowork() {
        //获得配置文件
        Resource resource = new ClassPathResource("applicationContext.xml");
        //启动容器
        BeanFactory factory=new XmlBeanFactory(resource);
        //获得容器中的对象 (3个方式)
        EmployeeDAOImpl dao=factory.getBean("employeeDAO",EmployeeDAOImpl.class);
        EmployeeDAOImpl dao=(EmployeeDAOImpl) factory.getBean("employeeDAO");
        EmployeeDAOImpl dao=factory.getBean(EmployeeDAOImpl.class);
        System.out.println(dao); 
    }
2.ApplicationContext容器

更全面的容器,

  • IOC+DI+AOP
  • 环境环境感知
  • 国际化相关
  • 统一的资源管理
  • 支持web
    @Test
    public void dowork() {
        //启动容器
        ApplicationContext ctx=new ClassPathXmlApplicationContext("/applicationContext.xml");
        //获得容器中的对象 (3个方式)
        EmployeeDAOImpl  dao = ctx.getBean("employeeDAO",EmployeeDAOImpl.class);
        System.out.println(dao);
    }
3.两个容器的实例化机制
容器的作用就是将Bean实例化.但两个容器的实例化方式不同

BeanFactory容器:

  • 延迟实例化:启动容器时候没有实例化对象.在使用到bean对象时,才创建对象;
  • 应用启动快,使用慢.适合移动App

ApplicationContext容器:

  • 迫切实例化:在启动容器就实例化bean对象.
  • 应用启动慢,使用快,时候web.
  • 声明一个bean需要延迟加载: <bean lazy-init="true"/>
  • 声明全部bean需要延迟加载: <beans default-lazy-init="true"/>

Spring容器的加载过程

  1. 通过配置文件启动Spring容器
  2. 解析所有的<bean>元素,反射创建对应的实例对象
  3. 以id为key,实例为value 存入Spring容器
  4. 使用Spring容器.getBean(XX)来获取对象

Spring的测试环境

省去手动启动容器的过程直接从容器中取值.

//声明测试时候,要启动容器
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext.xml")  //手动启动时候,斜杠可以省,测试加载时候,斜杠别忘了
public class MyTest {

    @Autowired   //取值
    private IEmployeeDAO dao;

    @Test
    public void dowork() {
        System.out.println(dao);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值