4.ioc容器的两个应用场景
来源:互联网 发布:硅谷办公室装修 知乎 编辑:程序博客网 时间:2024/05/17 18:26
BeanFacotry的应用场景
BeanFactory接口定义了ioc容器的最基本的形式,并且提供了ioc容器所应该遵守的基本的服务契约,同时,这也是我们使用ioc容器所应该遵
守的最顶层和最基本的编程规范,这些接口定义勾画了ioc的基本轮廓,很显然,在Spring的代码实现中,BeanFactory只是一个接口类,并没有
给出容器的具体实现,所以从源码中我们可以看到,如DefaultListableBeanFactory,XmlBeanFactory,ApplicationCOntext等等都可以看成是
容器附加了某种功能的具体实现,就是容器接口体系中的具体容器产品,下面我们来看看BeanFactory是如何定义ioc容器的基本接口的
用户使用容器时候,可以使用转移字符"&"来得到FactoryBean本身,用来区分通过容器来获取FactoryBeanC产生的对象和获取
FactoryBea,n本身(如myJndiObject是一个FactoryBean,那么使用&myJndiObject得到的是FactoryBean,而不是myJndiObject这个FactoryBean
产生出来的对象)
public interface BeanFactory {
String FACTORY_BEAN_PREFIX = "&";
Object getBean(String name) throws BeansException;
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException;
Object getBean(String name, Object... args) throws BeansException;
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
boolean containsBean(String name);
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
Class<?> getType(String name) throws NoSuchBeanDefinitionException;
String[] getAliases(String name);
}
ApplicationContext应用场景
ApplicationContext是一个高级形态的ioc容器,扩展了以下功能
1.支持不同的信息源2.访问资源.3支持应用事件.4.提供附加服务
实现该接口的类有很多,如FileSystemlXmlApplicationContext
截取一段FileSytemXmlApplicationContext的源码下来分析,在FileSytemXmlApplicationContext的设计中,我们可以看到
ApplicationContext应用上下文的主要功能已经在FileSystemXmlApplicationContext的基类AbstractXmlApplicationContext中实现了,在
FileSystemXmlApplicationContext中,作为一个具体的应用上下文,只需要实现和它自身设计相关的两个功能,
一个功能是如果直接应用FileSytemXmlApplicationContext,对于实例化这个应用上下文的支持,同时启动ioc容器的refresh()过程,
秒看代码:
*/
public FileSystemXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent)
throws BeansException {
super(parent);
setConfigLocations(configLocations);
if (refresh) {
refresh();
}
}
另一个功能就是读取配置文件相关
protected Resource getResourceByPath(String path) {
if (path != null && path.startsWith("/")) {
path = path.substring(1);
}
return new FileSystemResource(path);
}
BeanFactory接口定义了ioc容器的最基本的形式,并且提供了ioc容器所应该遵守的基本的服务契约,同时,这也是我们使用ioc容器所应该遵
守的最顶层和最基本的编程规范,这些接口定义勾画了ioc的基本轮廓,很显然,在Spring的代码实现中,BeanFactory只是一个接口类,并没有
给出容器的具体实现,所以从源码中我们可以看到,如DefaultListableBeanFactory,XmlBeanFactory,ApplicationCOntext等等都可以看成是
容器附加了某种功能的具体实现,就是容器接口体系中的具体容器产品,下面我们来看看BeanFactory是如何定义ioc容器的基本接口的
用户使用容器时候,可以使用转移字符"&"来得到FactoryBean本身,用来区分通过容器来获取FactoryBeanC产生的对象和获取
FactoryBea,n本身(如myJndiObject是一个FactoryBean,那么使用&myJndiObject得到的是FactoryBean,而不是myJndiObject这个FactoryBean
产生出来的对象)
public interface BeanFactory {
String FACTORY_BEAN_PREFIX = "&";
Object getBean(String name) throws BeansException;
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException;
Object getBean(String name, Object... args) throws BeansException;
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
boolean containsBean(String name);
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
Class<?> getType(String name) throws NoSuchBeanDefinitionException;
String[] getAliases(String name);
}
ApplicationContext应用场景
ApplicationContext是一个高级形态的ioc容器,扩展了以下功能
1.支持不同的信息源2.访问资源.3支持应用事件.4.提供附加服务
实现该接口的类有很多,如FileSystemlXmlApplicationContext
截取一段FileSytemXmlApplicationContext的源码下来分析,在FileSytemXmlApplicationContext的设计中,我们可以看到
ApplicationContext应用上下文的主要功能已经在FileSystemXmlApplicationContext的基类AbstractXmlApplicationContext中实现了,在
FileSystemXmlApplicationContext中,作为一个具体的应用上下文,只需要实现和它自身设计相关的两个功能,
一个功能是如果直接应用FileSytemXmlApplicationContext,对于实例化这个应用上下文的支持,同时启动ioc容器的refresh()过程,
秒看代码:
*/
public FileSystemXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent)
throws BeansException {
super(parent);
setConfigLocations(configLocations);
if (refresh) {
refresh();
}
}
另一个功能就是读取配置文件相关
protected Resource getResourceByPath(String path) {
if (path != null && path.startsWith("/")) {
path = path.substring(1);
}
return new FileSystemResource(path);
}
0 0
- 4.ioc容器的两个应用场景
- Spring-- Ioc 容器Bean实例化的几种场景
- Unity IOC容器的简单应用
- Ioc容器应用浅析
- Ioc容器应用浅析
- Ioc容器应用浅析
- Ioc容器应用浅析
- 浅析Docker容器的应用场景
- STL 容器应用场景
- git 两个给力的应用场景
- 【Spring】Redis的两个典型应用场景
- Spring学习(四)Spring容器的IOC应用
- IOC容器的理解
- spring的Ioc容器
- Jbpm4的IOC容器
- Spring的IoC容器
- IoC容器的实现
- IOC容器的基本原理
- [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:propert
- 九章算术 开平方
- Java循环结构的控制
- ScrollView中ListView高度不匹配解决方案---最简单的方式
- 预定义符号简述
- 4.ioc容器的两个应用场景
- linux命令及部分快捷键
- WebView加载网页不显示图片解决办法
- zcurd上了开源中国头条
- jQuery选择器
- fedora24 U盘启动盘制作
- java编程实现两个数字的交换
- struts2中的web.xml映射规则
- 网路判断,上拉加载下拉刷新,点击2次返回