介绍:

Spring提供了两种类型的容器:

  • BeanFactory它支持bean实例化和连接
  • ApplicationContext它扩展了BeanFactory ,因此提供了所有这些功能,就像BeanFactory一样。 此外,它提供BeanPostProcessor的自动注册,国际化以及更多功能

Spring容器负责实例化和管理Spring bean的生命周期。 ClassPathXmlApplicationContext是一个实现org.springframework.context.ApplicationContext接口的类。

在本快速教程中,我们将学习如何使用ClassPathXmlApplicationContext

最初设定:

假设我们有一个名为Person的Java类:

public class Person {private int id;private String name;...}

另外,让我们在applicationContext.xml中定义bean

<bean id="person" class="com.programmergirl.domain.Person"><property name="id" value="1"/><property name="name" value="Sam"/>
</bean>

使用

当使用ClassPathXmlApplicationContext时 ,容器从CLASSPATH中存在的给定xml文件中加载bean定义。

现在我们已经在应用程序上下文中定义了Person bean,让我们使用它在main()方法中加载bean:

public class MyApp {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Person person = (Person) context.getBean("person");System.out.println(person.getId() + ":" + person.getName());}
}

请注意, 我们还可以使用几个XML配置文件来初始化Spring容器:

ApplicationContext context= new ClassPathXmlApplicationContext("appContext1.xml", "appContext2.xml");

在这种情况下,较新的bean定义将覆盖较早加载的文件中定义的定义。

在构造xml定义的应用程序上下文时,我们有时可以使用classpath *:前缀:

ApplicationContext context= new ClassPathXmlApplicationContext("classpath*:appContext.xml");

此前缀指定必须将具有给定名称的所有类路径资源合并在一起以形成最终的应用程序上下文定义。

注册一个

WebApplicationContext已经具有用于正确关闭IoC容器的代码。

但是, 对于任何非Web Spring应用程序,我们必须使用registerShutdownHook()方法在应用程序关闭期间正常关闭Spring IoC容器 。 我们可以为bean定义销毁前的方法,这些方法将被调用以释放所有持有的资源。

让我们在Person类中添加一个方法:

public class Person {...public void preDestroy() {System.out.println("Releasing all resources");}}

并更新我们的applicationContext.xml

<bean id="person" class="com.programmergirl.domain.Person" destroy-method="preDestroy"><property name="id" value="1"/><property name="name" value="Sam"/>
</bean>

使用注释时,我们可以在方法上使用@PreDestroy注释,而不是在xml中进行配置。

现在让我们将关闭钩子注册到我们的ApplicationContext

The above code on execution will print:

Conclusion:

In this article, we learned the basic usage of ClassPathXmlApplicationContext .

翻译自: https://www.javacodegeeks.com/2019/05/spring-classpathxmlapplicationcontext.html

Spring ClassPathXmlApplicationContext相关推荐

  1. Java Spring ClassPathXmlApplicationContext是如何判断容器内包含某个Bean的

    ClassPathXmlApplicationContext的获得方式:ClassPathXmlApplicationContext context = new ClassPathXmlApplica ...

  2. 模拟spring - 简单实现spring IOC

    一.前言 IOC (Inverse of control) - 控制反转,spring的IOC实现原理为利用Java的反射机制并充当工厂的角色完成对象的装配和注入. 二.实现细节 附上一张类的结构图, ...

  3. Spring源码分析前篇

    穷举法:把生活所见所闻全部归纳到我们所学的知识体系中来,加以思考总结变成自己的东西.(举例子) 类比法:用自己熟悉的方法(利用自己已有的知识体系),去对比学习新的知识. 学习最好的方法:就是重复 Sp ...

  4. ActiveMQ使用spring JmsTemplate发送消息(一)

    下载地址:http://activemq.apache.org/download-archives.html 解压 启动bin\activemq.bat 生产者接口: public interface ...

  5. 面向抽象编程(模拟Spring的简单实现)

    项目结构如下: 如何思考?面向抽象编程? 先来看看一个序列图 从以上看出了什么?初学的,能看得出是什么才怪,那不管它了.看看具体实现吧 首先要建立一个实体类:User,放在model包下 [java] ...

  6. Spring - 如何实现IOC

    Spring 两大核心特性IOC和AOP.IOC的概念就不再赘述了,那IOC是如何实现的呢?今天写了一个简单的模拟. 项目划分为四层,DAO(interface和impl)->Service-& ...

  7. 【Spring】—-常用属性注入及属性编辑器(三)

    对于对象的注入,我们使用ref方式,可以指定注入的对象,下面看下属性的注入,以及当spring无法转换基本类型进行注入时,如何编写一个类似转换器的东西来完成注入. [属性注入] 常见属性的注入:int ...

  8. 计算机科学精彩帖子收集

    linux源码 LXR 源自"the Linux Cross Referencer",中间的"X"形象地代表了"Cross".与 Sourc ...

  9. springioc注解版运行效果演示

    我们讲一个新的知识,就是手写一下IOC容器,怎么手写一下SpringIOC XML版本,还有手写一下SpringIOC注解的版本,那么相对来说,我们用注解版本的次数可能要多点,很少用到XML版本,XM ...

最新文章

  1. 数学建模学习笔记——时间序列分析
  2. java 应用程序的打包发行
  3. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
  4. 使用Dynamic LINQ实现Ext Grid的远程排序
  5. 欧冠淘汰赛第二回合!我厂生死战!!
  6. FireEye:2012年下半年高级威胁分析报告
  7. 首提 Database Plus 新理念,SphereEx 获数百万美元天使融资,接棒 ShardingSphere 打造新型分布式生态
  8. Redis(十二):Redis事务的基本操作
  9. 清空 linux 服务器,Linux服务器清理
  10. 初学者学python,列表推导到zip()函数,必须会的五种技巧
  11. Apache软件基金会Member陈亮:一名开源拓荒者的 Apache之旅
  12. LZW压缩算法解码器实现
  13. phoenixframework自动化测试平台1.4.6版本发布
  14. 网络编程知识点复习(第一次)
  15. 措施优先级(AP)方法
  16. 水经注全球离线地图数据3.0即将发布
  17. 朴素贝叶斯中拉普拉斯平滑算法
  18. 利用envi进行监督分类(支持向量机)
  19. 下载带vba的wps
  20. VTP(VLAN中继协议/虚拟局域网干道协议 VLAN Trunking Protocol)

热门文章

  1. P3870-[TJOI2009]开关【分块】
  2. 【dfs】无穷迷宫(jzoj 3924)
  3. [CSA35G][XSY3318]Counting Quests (DP)
  4. 从理论知识到落地能力,你欠缺了什么?
  5. 漫画:什么是SHA系列算法
  6. java中,剩下的这两个内部类不太好理解!
  7. 你不知道ADo.Net中操作数据库的步骤【超详细整理】
  8. ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService
  9. HBase的hbase shell 详解
  10. git 拉取gitlab代码