Spring学习笔记1之Spring容器与配置文件

本文介绍了Spring框架的核心——Spring容器,包括Bean工厂和应用上下文,详细讲解了不同类型的ApplicationContext,如AnnotationConfigApplicationContext和XmlWebApplicationContext。同时,概述了Spring的配置方式,包括XML配置、Java配置以及自动装配。
摘要由CSDN通过智能技术生成

一、Spring容器

摘自《spring in action 第四版》第一章

容器是Spring框架的核心。Spring容器使用DI管理构成应用的组件,它会创建相互协作的组件之间的关联。毫无疑问,这些对象更简单干净,更易于理解,更易于重用并且更易于进行单元测试。

Spring容器并不是只有一个。Spring自带了多个容器实现,可以归为两种不同的类型。

(1)bean工厂(由org.springframework. beans. factory.beanFactory接口定义)是最简单的容器,提供基本的DI支持。
(2)应用上下文(由org.springframework.context.ApplicationContext接口定义)基于BeanFactory构建,并提供应用框架级别的服务,例如从属性文件解析文本信息以及发布应用事件给感兴趣的事件监听者。


我们重点讨论应用上下文(ApplicationContext)

Spring自带了多种类型的应用上下文。下面罗列的几个是你最有可能遇到的。

  • AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
  • AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。
  • ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
  • FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
  • XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义。


无论是从文件系统中装载应用上下文还是从类路径下装载应用上下文,将bean加载到bean工厂的过程都是相似的。例如,如下代码展示了如何加载一个
FileSystemXmlApplicationContext:

ApplicationContext ac = new FileSystemXmlApplicationContext("c:/app.xml");


类似地,你可以使用ClassPathXmlApplicationContext从应用的类路径下加载应用上
下文:

ApplicationContext ac = new ClassPathXmlApplicationContext("app.xml");


使用FileSystemXmlApplicationContext和使
用ClassPathXmlApplicationContext的区别在
于:FileSystemXmlApplicationContext在指定的文件系统路径下查找knight.xml文件;而ClassPathXmlApplicationContext是在所有的类路径(包含JAR文件)下查找
knight.xml文件。
如果你想从Java配置中加载应用上下文,那么可以使
用AnnotationConfigApplicationContext:

ApplicationContext ac = new AnnotationConfigApplicationContext(org.springframework.spring.App.class);


在这里没有指定加载Spring应用上下文所需的XML文
件,AnnotationConfigApplicationContext通过一个配置类加载bean。
应用上下文准备就绪之后,我们就可以调用上下文的getBean()方法从Spring容器中获取
bean。

二、Spring配置方法

摘自《spring in action 第四版》第二章

  1. 在XML中进行显式配置。
  2. 在Java中进行显式配置。
  3. 隐式的bean发现机制和自动装配。
乍看上去,提供三种可选的配置方案会使Spring变得复杂。每种配置技术所提供的功能会有一些重叠,所以在特定的场景中,确定哪种技术最为合适就会变得有些困难。但是,不必紧
张——在很多场景下,选择哪种方案很大程度上就是个人喜好的问题,你尽可以选择自己最喜欢的方式。
Spring有多种可选方案来配置bean,这是非常棒的,但有时候你必须要在其中做出选择。
这方面,并没有唯一的正确答案。你所做出的选择必须要适合你和你的项目。而且,谁说我
们只能选择其中的一种方案呢?Spring的配置风格是可以互相搭配的,所以你可以选择使用XML装配一些bean,使用Spring基于Java的配置(JavaConfig)来装配另一些bean,而将剩余的bean让Spring去自动发现。
即便如此,我的建议是尽可能地使用自动配置的机制。显式配置越少越好。当你必须要显式
配置bean的时候(比如,有些源码不是由你来维护的,而当你需要为这些代码配置bean的时候),我推荐使用类型安全并且比XML更加强大的JavaConfig。最后,只有当你想要使用便利的XML命名空间,并且在JavaConfig中没有同样的实现时,才应该使用XML。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值