Spring容器
来源:互联网 发布:沙发网购推荐 知乎 编辑:程序博客网 时间:2024/05/21 18:32
一、定义
Spring容器是生成Bean实例并管理Bean的工厂。
注:Spring里的Bean是广泛的概念,任何的Java对象、Java组件都会被当成Bean处理。
创建Spring容器时,需要提供管理Bean的xml配置文件
二、类型
Spring容器有两个,由如下两个接口实现:
BeanFactory(很少用)
ApplicationContext(可加载多个配置文件)
BeanFactory和ApplicationContext接口都代表Spring容器,且ApplicationContext是BeanFactory的子接口
三、使用BeanFactory实现的Spring容器
BeanFactory用得少,除非对于某些内存非常关键的应用才考虑使用
1. BeanFactory接口的基本方法:
boolean containsBean(String name):判断Spring容器中是否包含id为name的Bean实例 T getBean(`Class<T>` type):获取容器中唯一的、类型为type的Bean实例 Object getBean(String name):返回容器id为name的Bean实例 T getBean(String name,Class<T> type):返回容器id为name,类型为type的Bean实例 Class<?> getType(String name):返回容器id为name的Bean实例的类型
2. BeanFactroy常用实现类
DefaultListableBeanFactory
3. 实例化BeanFactory
//搜索类加载路径下的beanxml文创创建Resource对象Resource source = new ClassPathResource("bean.xml");/* 如果是搜索文件系统xml配置文件可用如下代码获取Resource对象Resource source = new FileSystemResource("bean.xml");*///创建默认的BeanFactory容器DefaultListableBeanFactory factory = new DefaultListableBeanFactory();//让默认的BeanFactory容器加载source对应的xml配置文件new XmlBeanDefinitionReader(factory).loadBeanDefinitions(source);
四、使用ApplicationContext
实现Spring容器
1. ApplicationContext是BeanFactory的子接口,所以除了BeanFactory的全部功能外,还有以下功能:
ApplicationContext默认预初始化所有Bean,可通过在
<bean.../>
上配置lazy-init=”true”取消。因继承了MessageSource接口,所以提供国际化支持
支持资源访问,如URL和文件
事件机制
可同时加载多个配置文件
能以声明方式启动并创建Spring容器
2. ApplicationContext实现类
常用实现类有:
FileSystemXmlApplicationContext ClassPathXmlApplicationContext AnnotationConfigApplicationContext
如果是在Web应用中,常用实现类是:
XmlWebApplicationContext AnnotationConfigWebApplicationContext
3. 实例化ApplicationContext
大部分JavaEE应用在启动Web应用时自动加载ApplicationContext实例,但对于独立的 程序,需要手动实例化
ApplicationContext app= new ClassPathXmlApplicationContext("bean.xml");
只需要这一句代码就够了,因为在创建app时就初始化了所有Bean。上面是利用编程方式创建ApplicationContext实例,下面是以声明方式创建ApplicationContext实例的方式,此时需要在web.xml中配置如下代码:
当bean.xml放在/WEB-INF下时,只需要在web.xml中声明一个listener:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
ContextLoaderListener实现了ServletContextListener接口,在Servlet监听器里ServletContextListener监听的是ServletContext,即Web应用的启动与关闭。
如果bean.xml放在src目录下,即classpath下:
<!-- Spring 容器 --><context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:bean.xml</param-value></context-param><!-- 初始化并监听 Spring 容器 --><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
如果有多个配置文件时,classpath:后面跟通匹符 *
- spring容器
- Spring容器
- spring 容器
- Spring容器
- spring容器
- spring容器
- Spring容器
- spring 容器
- Spring容器
- spring容器
- Spring容器
- Spring容器
- Spring容器
- Spring容器
- Spring容器
- Spring容器
- Spring 容器
- spring容器
- 谁是卧底-CTF题目writeup
- 哈希表续(代码)
- Java多线程系列--“JUC原子类”03之 AtomicLongArray原子类 (r)
- 感觉自己不行了
- Python编程实例1
- Spring容器
- 代码api文档生成
- 【Codeforces】-660A-Co-prime Array(数学)
- Ohana Cleans Up
- linux文件共享之NFS服务
- 僵尸进程
- 可视化库 D3.js
- Java多线程系列--“JUC原子类”04之 AtomicReference原子类 (r)
- Activity意外杀死保存数据