联系:
ApplicationContext接口继承自BeanFactory,拥有更多的功能;
区别:
BeanFactory默认是懒加载(是在获取时才去创建对象的)
ApplicationContext默认是迫切加载(创建容器的时候就创建了对象),但是把迫切加载改变成懒加载,
方式一:配置单个bean懒加载在spring配置文件中把bean属性中加入lazy-init=“true”。
<bean id="tomato" class="cn.it.show.Tomato" lazy-init="true"></bean>
方式二:配置所有bean懒加载,在spring配置文件的申明和约束后面加入default-lazy-init=“true”;
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd" default-lazy-init="true">
Spring管理对象
- 前提条件:必须有无参构造。
- 管理外部Bean:管理我们自己写的类
<!-- 管理外部类 -->
<bean id="tomato" class="cn.it.show.Tomato" lazy-init="true"></bean>
- 管理内部Bean:管理别人写好的,API自带的类
例如:获取当前系统时间 -》以前的方式:new Date()
现在Spring管理:
<!-- 管理内部类 -->
<bean id="data" class="java.util.Date"></bean>
在测试方法中就可以直接获取当前时间了
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Date bean = ac.getBean("data",java.util.Date.class);
System.out.println(bean);//Thu Apr 16 15:25:41 CST 2020