ClassPathXmlApplicationContext 和FileSystemXmlAppli

 


2007-12-20 09:23
* 即: 对于ClassPathXmlApplicationContext(), classpath: 前缀是不需要的, 默认就是指项目的classpath路径下面;

* 如果要使用绝对路径,需要加上 file: 前缀表示这是绝对路径;

*

* 对于FileSystemXmlApplicationContext(), 默认表示的是两种:

* 1,没有盘符的是 项目工作路径, 即项目的根目录;

* 2,有盘符表示的是 文件绝对路径。

*

* 如果要使用classpath路径, 需要前缀 classpath: .

*

*/

public class HelloClient {

protected static final Log log = LogFactory.getLog(HelloClient.class);



public static void main(String[] args) {

// Resource resource = new ClassPathResource("appcontext.xml");

// BeanFactory factory = new XmlBeanFactory(resource);



//用classpath路径也可以

// ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");

// ApplicationContext factory=new ClassPathXmlApplicationContext("appcontext.xml");

// ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/1Java实用项目资源/2Spring/1精通Spring全 Jar代码/workspace/workspace/example6/src/appcontext.xml");





//用文件系统的路径

// ApplicationContext factory=new FileSystemXmlApplicationContext("src/appcontext.xml");


//使用了 classpath: 前缀,作为标志, 这样,FileSystemXmlApplicationContext 也能够读入classpath下的相对路径

// ApplicationContext factory=new FileSystemXmlApplicationContext("classpath:appcontext.xml");

// ApplicationContext factory=new FileSystemXmlApplicationContext("file:G:/1Java实用项目资源/2Spring/1精通Spring全 Jar代码/workspace/workspace/example6/src/appcontext.xml");

ApplicationContext factory=new FileSystemXmlApplicationContext("G:/1Java实用项目资源/2Spring/1精通Spring全Jar代码 /workspace/workspace/example6/src/appcontext.xml");



IHelloWorld hw = (IHelloWorld) factory.getBean("helloworldbean");

log.info(hw.getContent("luoshifei"));

}

}

// ClassPathXmlApplicationContext 是读取 src 目录下的配置文件
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");

//  FileSystemXmlApplicationContext 即系统文件路径,文件的目录。
ApplicationContext context = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");

 

### ApplicationContext与ClassPathXmlApplicationContext的区别及用法 在Spring框架中,`ApplicationContext` 是一个核心接口,提供了对配置元数据的访问,用于定义检索应用程序中的组件。而 `ClassPathXmlApplicationContext` 是 `ApplicationContext` 的具体实现之一,主要用于基于XML配置文件的应用场景。 #### 1. **ApplicationContext** `ApplicationContext` 是一个接口,定义了访问Spring容器中Bean的基本方式。它不仅支持从XML文件加载Bean定义,还支持注解、Java配置类等多种方式。以下是其主要特性: - 提供了Bean的生命周期管理功能。 - 支持国际化(通过MessageSource接口)。 - 支持事件发布监听机制。 - 可以动态刷新上下文(某些实现支持)[^1]。 #### 2. **ClassPathXmlApplicationContext** `ClassPathXmlApplicationContext` 是 `ApplicationContext` 的一个具体实现,专门用于从类路径下的XML配置文件加载Bean定义。它的主要特点包括: - 配置文件必须位于类路径下(如 `src/main/resources`)。 - 构造函数可以直接指定XML配置文件的名称或路径。 - 示例代码如下: ```java import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp { public static void main(String[] args) { // 加载名为beans.xml的配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld"); helloWorld.getMessage(); } } ``` 在此示例中,`beans.xml` 文件位于类路径下,并且定义了一个名为 `helloWorld` 的Bean[^2]。 #### 3. **区别** | 特性 | ApplicationContext | ClassPathXmlApplicationContext | |--------------------------|---------------------------------------|-----------------------------------------| | 类型 | 接口 | 具体实现类 | | 配置方式 | 支持多种方式(XML、注解、Java配置类等)| 仅支持类路径下的XML配置文件 | | 使用场景 | 更加通用,适合复杂项目 | 简单项目或需要明确指定XML配置文件时使用 | | 配置文件位置 | 不限于类路径 | 必须位于类路径下 | #### 4. **总结** 如果项目中需要更灵活的配置方式,可以选择使用 `ApplicationContext` 接口的其他实现(如 `AnnotationConfigApplicationContext`)。而对于简单的基于XML配置的项目,`ClassPathXmlApplicationContext` 是一个方便的选择。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值