博客
关于我
spring application.xml在项目中的几种解析方式
阅读量:709 次
发布时间:2019-03-17

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

在Java项目中,Spring的applicationContext.xml文件有多种解析方式。下面从不同角度解析这些方法,并结合常见场景提供实用技巧。

一、基于类路径的applicationContext.xml解析

最常见的方式是通过ClassPathXmlApplicationContext来加载applicationContext.xml。

ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml");Object bean = cxt.getBean("beanId");

这种方法适用于标准开发环境中的普通应用。

二、基于文件系统的applicationContext.xml解析

当项目部署路径明确时,可以使用FileSystemXmlApplicationContext。

ApplicationContext cxt = new FileSystemXmlApplicationContext("C:/path/to/applicationContext.xml");Object bean = cxt.getBean("beanId");

这种方式适合需要严格控制配置文件路径的情况。

三、基于资源的低级解析方式

通过Resource和XmlBeanFactory来实现基本的xml解析。

Resource res = new ClasspathResource("applicationContext.xml");XmlBeanFactory factory = new XmlBeanFactory(res);Object bean = factory.getBean("beanId");

这种方式适合对Spring容器进行操作时的底层实现。

四、jsp 页面中的applicationContext.xml解析

在Struts等框架中,通过自定义Bean类来灵活调用Spring-managed bean。

public class GetBean {    private XmlBeanFactory factory;    public GetBean() {        Resource res = new ServletContextResource(            ServletActionContext.getServletContext(), "/WEB-INF/transaction.xml");        factory = new XmlBeanFactory(res);    }    public Object getBean(String beanName) {        XmlWebApplicationContext ctx = new XmlWebApplicationContext();        ServletContext servletContext = ServletActionContext.getServletContext();        ctx.setServletContext(servletContext);        ctx.setConfigLocations(new String[] { "/WEB-INF/transaction.xml" });        ctx.refresh();        return ctx.getBean(beanName);    }}

这种方式适合前端直接调用后台Spring bean的场景。

在实际开发中,可以根据项目需求灵活选择适合的方式。例如,在本地开发环境中使用第一种方法,在特定部署环境中使用第二种方法,或者在web应用中结合第四种方法实现特定功能。

转载地址:http://wjcez.baihongyu.com/

你可能感兴趣的文章
Python3编写网络爬虫10-数据存储方式三-CSV文件存储
查看>>
python3读取redis返回数据带有'b'的问题
查看>>
Python3连接MySQL
查看>>
Python关于isinstance函数的解析 | 附Demo(全)
查看>>
Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
查看>>
python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
查看>>
python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
查看>>
Python: AES加密与解密
查看>>
Python: Range() 最大尺寸;动态的还是静态的?
查看>>
Python: Windows下用 multiprocessing 的深坑
查看>>
python:Could not find platform independent libraries <prefix>解决方法
查看>>
Python:datetime tzinfo 时区名称文档
查看>>
Python:deepcopy(list) vs new_list = old_list[:]
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
查看>>
Python:TypeError:无法连接“str“和“int“对象
查看>>
Python:XPath 在 ElementTree 中不可用
查看>>
Python:从 FTP 服务器下载文件
查看>>
python:从列表中创建元组列表
查看>>