博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Spring容器
阅读量:6540 次
发布时间:2019-06-24

本文共 3231 字,大约阅读时间需要 10 分钟。

hot3.png

    Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。它们都可以代表Spring容器,Spring容器是生成Bean实列的工厂,并管理容器中的Bean。

    Spring容器最基本的接口就是BeanFactory。BeanFactory负责配置、创建管理Bean,它有一个子接口:ApplictionContext,因此也被称为Spring上下文。

    BeanFactory接口包含以下几个基本方法:

@Override	public boolean containsBean(String arg0) {		// TODO Auto-generated method stub		return false;	}	@Override	public String[] getAliases(String arg0) {		// TODO Auto-generated method stub		return null;	}	@Override	public Object getBean(String arg0) throws BeansException {		// TODO Auto-generated method stub		return null;	}	@Override	public 
T getBean(Class
arg0) throws BeansException { // TODO Auto-generated method stub return null; } @Override public
T getBean(String arg0, Class
arg1) throws BeansException { // TODO Auto-generated method stub return null; } @Override public Object getBean(String arg0, Object... arg1) throws BeansException { // TODO Auto-generated method stub return null; } @Override public Class
getType(String arg0) throws NoSuchBeanDefinitionException { // TODO Auto-generated method stub return null; } @Override public boolean isPrototype(String arg0) throws NoSuchBeanDefinitionException { // TODO Auto-generated method stub return false; } @Override public boolean isSingleton(String arg0) throws NoSuchBeanDefinitionException { // TODO Auto-generated method stub return false; } @Override public boolean isTypeMatch(String arg0, Class
arg1) throws NoSuchBeanDefinitionException { // TODO Auto-generated method stub return false; }

    对于ApplicationContext是BeanFactory的子接口,它也是最常用的。其常用的实现类是FileSystemXmlApplicationContext,ClassPathXmlApplicationContext,AnntationConfigApplication。

读取配置文件通常使用Resource对象传入,对于大部分WEB应用可以在项目启动时自动加载ApplicationContext实列。

    在web.xml中配置:

contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener

    自己获取ApplicationContext对象有如下几种方法:

//搜索当前文件路径下的application-spring.xml,创建Resource对象FileSystemResource isr = new FileSystemResource("application-spring.xml");//创建BeanFactory实列XmlBeanFactory xbf = new XmlBeanFactory(isr);

    或者

//搜索当前文件下的applicationContext-spring.xml并创建Resource对象ClassPathResource cpr = new ClassPathResource("applicationContext-spring.xml");//创建BeanFactory实列XmlBeanFactory xbf = new XmlBeanFactory(cpr);

    如果应用中有多个配置文件,则应该使用BeanFactory的子接口ApplicationContext来创建BeanFactory实列。ApplicationContext通常有如下两个实现类:

    1)FileSystemXmlApplicationContext:基于文件系统的XML配置文件创建ApplicationContext实列;

   2)ClassPathXmlApplicationContext:以类加载路径下的XML配置文件创建ApplicationContext实列;

ApplicationContext appContext = new FileSystemXmlApplicationContext(new String[]{"spring.xml", "spring1.xml"});//或者ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[]{"spring.xml", "spring1.xml"});

    整理关系如下:

    161953_CYX6_3697923.png   

   由于ApplicationContext是BeanFactory的子类,因此ApplicationContext完全可以当做Spring容器,它增强了BeanFactory的功能,当系统创建ApplicationContext容器时,默认会预初始化所有的singleton Bean。这意味着:系统前期创建ApplicationContext时将有较大的系统开销,但一旦ApplicationContext初始化完成,程序后面获取singleton Bean时将拥有较好性能。

转载于:https://my.oschina.net/u/3697923/blog/1616938

你可能感兴趣的文章
Memory Management
查看>>
The Packaging Process in Yocto/OE
查看>>
JQUERY 对 表格中的数据重排序
查看>>
程序员常用借口指南
查看>>
关于PXE网络安装linux系统中碰到的个别问题
查看>>
awk 常用方法
查看>>
Android网络框架实现之【Retrofit+RxJava】
查看>>
Android文件的加密与解密
查看>>
SOAP webserivce 和 RESTful webservice 对比及区别
查看>>
【原】记录一句话
查看>>
Android标题栏,状态栏
查看>>
三数中值快速排序(长度小于3的数组转插入排序)
查看>>
Windows下安装Memcached for PHP
查看>>
hdu 1040 As Easy As A+B
查看>>
java笔记:SpringSecurity应用(二)
查看>>
vim命令
查看>>
php记录代码执行时间
查看>>
【C】strcpy()需谨慎使用;
查看>>
用Adobe Flash Professional CS6创建一个iOS应用程序
查看>>
简简单单几段代码让自己变成最合格的网站管理员
查看>>