创建容器
方式一:类路径加载配置文件:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
方式二:文件路径加载配置文件(用绝对路径):
ApplicationContext ctx = new FileSystemXmlApplicationContext("D:\\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类型获取(bean必须唯一)
BookDao bookDao = ctx.getBean(BookDao.class);
容器类层次结构
BeanFactory
我们用到的ClassPathXmlApplicationContext和FileSystemXmlApplicationContext都来自BeanFactory。
直接用BeanFactory的话是懒加载,就是不会在解析xml的时候创建bean,而是要用到,我们写代码调用的的时候再调用构造方法创建。验证方法就是可以在构造方法加逻辑,看启动的时候有没有效果就行。
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();
}
}
如果想实现懒加载效果可以加:lazy-init="true"
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" lazy-init="true"/>