Ioc容器和bean的创建时机
坚持每天写博文,积累下开发中的点点滴滴
-
Ioc容器 容器对象:ObjectFactory与ApplicationContext: BeanFactory:这个接口是spring中最底层的接口,只提供了最简单的IoC功能(创建bean,获取bean,销毁bean); 1,ApplicationContext继承了BeanFactory,提供了基本的IoC功能; 2,ApplicationContext还提供了其他功能: 1,支持国际化; 2,支持消息机制; 3,支持统一的资源加载; 4,支持AOP功能;
在一般的应用当中,一般不使用BeanFactory;推荐用ApplicationContext(应用上下文);
Resource常见实现类(了解) 1.ClassPathResource:从classpath根路径开始找配置文件 2.FileSystemResource:从磁盘的文件路径去找:c:/xx.xml 3.ServletContextResource:应用于Web中,从Web中去中配置文件.
ApplicationContext常见实现类(了解): 1:ClassPathXmlApplicationContext:读取classpath中的资源 ApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”); 2:FileSystemXmlApplicationContext:读取指定路径的资源 ApplicationContext ac = new FileSystemXmlApplicationContext(“c:/licationContext.xml”); 3:XmlWebApplicationContext:需要在Web的环境下才可以运行 XmlWebApplicationContext ac = new XmlWebApplicationContext(); // 这时并没有初始化容器 ac.setServletContext(servletContext); // 需要指定ServletContext对象 ac.setConfigLocation(“/WEB-INF/applicationContext.xml”); // 指定配置文件路径,开头的斜线表示Web应用的根目录 ac.refresh(); // 初始化容器
bean的创建时机: 1.ApplicationContext在加载的时候就会创建所有的bean (Web应用建议) 2.BeanFactory需要等到拿bean的时候才会创建bean(延迟初始化)(桌面程序)
使用ApplicationContext如何延迟初始化: 针对于当前xml中所有的bean。
<beans default-lazy-init="default | false | true">
针对于指定的bean:
<bean lazy-init="default | false | true">