容器
public class App{
public static void main(String[] args){
// 1. 加载类路径下的配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 2. 从文件系统下加载配置文件
// ApplicationContext ctx = new FileSystemXmlApplicationContext("/Users/guo/Code/spring-demo/src/main/resources/applicationContext.xml");
// BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// BookDao bookDao = ctx.getBean("bookDao", BookDao.class);
BookDao bookDao = ctx.getBean(BookDao.class);
bookDao.save();
}
}
创建容器
方式一: 类路径加载配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
方式二:文件路径加载配置文件
ApplicationContext ctx = new FileSystemXmlApplicationContext("/Users/guo/Code/spring-demo/src/main/resources/applicationContext.xml");
方式三:加载多个配置文件
ApplicationContext = ctx = new ClassPathXmlApplicationContext("bean1.xml", "bean2.xml");
获取Bean
方式一:使用Bean名称获取
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
方式二:使用Bean名称获取并指定类型
BookDao bookDao = ctx.getBean("bookDao", BookDao.class);
方式三:使用Bean类型获取
BookDao bookDao = ctx.getBean(BookDao.class);
容器类层次结构

BeanFactory初始化
类路径加载配置文件
public class AppForBeanFactory{
public static void main(String[] args){
Resource resources = new ClassPathResource("applicationContext.xml");
BeanFactory bf = new XmlBeanFactory(resources);
BookDao bookDao = bf.getBean(BookDao.class);
bookDao.save();
}
}
BeanFactory创建完毕后,所有的Bean均为延迟加载,Bean的构造方法不会触发
ApplicationContext 延迟加载
<bean id="bookDao" class="com.xxx.dao.impl.BookDaoImpl" lazy-init="true"/>