读取Spring配置文件几种方式

Spring Boot读取配置文件的几种方式 Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口。这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体的配置文件。 @PropertySource解析 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Repeatable(PropertySou 阅读详情

读取Spring配置文件几种方式  

2011-12-01 11:59:41|  分类: Spring |  标签:spring  |举报|字号 订阅

获取Spring框架管理的类实例的方法有多种,如下: 

方法一:在初始化时保存ApplicationContext对象 
代码: 
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); 
ac.getBean("beanId"); 
说明: 
这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。 

方法二:通过Spring提供的工具类获取ApplicationContext对象 
代码: 
import org.springframework.web.context.support.WebApplicationContextUtils; 
ApplicationContext ac1 = 
WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc) 
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext 
sc) 
ac1.getBean("beanId"); 
ac2.getBean("beanId"); 
说明: 
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后 
在通过它获取需要的类实例。 
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。 

方法三:继承自抽象类ApplicationObjectSupport 
说明: 
抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationCont 
ext。Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext 
context)方法将ApplicationContext 对象注入。 

方法四:继承自抽象类WebApplicationObjectSupport 
说明: 
类似上面方法,调用getWebApplicationContext()获取WebApplicationContext 

方法五:实现接口ApplicationContextAware 
说明: 
实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对 

象。Spring初始化时,会通过该方法将ApplicationContext 对象注入。 

以上方法适合不同的情况,请根据具体情况选用相应的方法。 

这里值得提一点的是,系统中用到上述方法的类实际上就于Spring框架紧密耦合在一起了,因为这些类是知 

道它们是运行在Spring框架上的,因此,系统中,应该尽量的减少这类应用,使系统尽可能的独立于当前运 

行环境,尽量通过DI的方式获取需要的服务提供者。 



1.利用ClassPathXmlApplicationContext 

可以从classpath中读取XML文件 

(1) ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
UserDao userDao = (UserDao)context.getBean("userDao"); 

(2) ClassPathXmlApplicationContext resource = new ClassPathXmlApplicationContext(new  String[]{"applicationContext-ibatis-oracle.xml","applicationContext.xml","applicationContext-data-oracle.xml"}); 

       BeanFactory factory = resource; 
       UserDao userDao = (UserDao) factory.getBean("userDao"); 

2. 利用ClassPathResource 

可以从classpath中读取XML文件 

Resource cr = new ClassPathResource("applicationContext.xml"); 
BeanFactory bf=new XmlBeanFactory(cr); 
UserDao userDao = (UserDao)bf.getBean("userDao"); 
加载一个xml文件org.springframework.beans.factory.config.PropertyPlaceholderConfigurer不起作用 

3.利用XmlWebApplicationContext读取 

从Web应用程序的文件架构中,指定相对位置来读取定义文件。 

XmlWebApplicationContext 的建構子無法帶參數,參考API文件會發現,預設的location會指向/WEB-INF/applicationContext.xml檔案。使用其 public static屬性DEFAULT_CONFIG_LOCATION可取得此預設檔名。由於我使用MyEclipse,預設會多一個"/WebRoot"的 目錄在WEB-INF之前,因此若在web project裡有一些與web無關的程式要使用context時(例如處理一些MVC架構中的"M"的部份),就無法使用 XmlWebApplicationContext來讀取bean定義檔,因為default location會差一個"WebRoot"的目錄。 
即 使在web.xml裡面,在DispatcherServlet定義中重新定義contextConfigLocation也一樣(此定義可以 override掉XmlWebApplicationContext中的DEFAULT_CONFIG_LOCATION值),因為與web無關的程式 並不會經過web.xml的定義檔設定。目前我還沒試成功過XmlWebApplicationContext取得bean定義檔,使用 ClassPathXmlApplicationContext反而會快一些。 

XmlWebApplicationContext ctx = new XmlWebApplicationContext(); 
    ctx.setConfigLocations(new String[] {"/WEB-INF/ applicationContext.xml"); 
    ctx.setServletContext(pageContext.getServletContext()); 
    ctx.refresh(); 
    UserDao  userDao = (UserDao ) ctx.getBean("userDao "); 

4.利用FileSystemResource读取 

Resource rs = new FileSystemResource("D:/tomcat/webapps/test/WEB-INF/classes/ applicationContext.xml"); 
  BeanFactory factory = new XmlBeanFactory(rs); 
  UserDao  userDao  = (UserDao )factory.getBean("userDao"); 

值得注意的是:利用FileSystemResource,则配置文件必须放在project直接目录下,或者写明绝对路径,否则就会抛出找不到文件的异常 

5.利用FileSystemXmlApplicationContext读取 

可以指定XML定义文件的相对路径或者绝对路径来读取定义文件。 

方法一: 
String[]   path={"WebRoot/WEB-INF/applicationContext.xml","WebRoot/WEB-INF/applicationContext_task.xml"}; 
ApplicationContext context = new FileSystemXmlApplicationContext(path); 

方法二: 
  String path="WebRoot/WEB-INF/applicationContext*.xml"; 
  ApplicationContext context = new FileSystemXmlApplicationContext(path); 

方法三: 
ApplicationContext ctx = 
new FileSystemXmlApplicationContext("classpath:地址"); 
没有classpath的话就是从当前的工作目录
蓝牙RSSI定位实战:用Arduino+BLE4.0搭建厘米级室内定位系统(附完整代码) 本文详细介绍了如何利用Arduino和BLE4.0模块构建厘米级精度的蓝牙RSSI室内定位系统。通过硬件选型、系统架构设计、三点定位算法实现及误差补偿技术,实现在商场导览、仓储管理等场景中的高精度定位。附完整代码和实测数据,帮助开发者快速部署商用级解决方案。 阅读详情

相关推荐

游戏开发实战:如何在Unity中实现六边形网格地图(附完整代码)

本文详细介绍了在Unity中实现六边形网格地图的完整开发流程,从数学原理到实战代码。涵盖三种主流坐标系转换方法、距离计算算法对比、网格生成与渲染技巧,以及高级功能如网格高亮、寻路算法和性能优化策略。适合策略游戏、战棋类游戏开发者提升地图系统开发效率。

656

springCloud config 读取本地相对路径下classpath:/不生效问题

相对路径 clssspatn:/不生效问题解决

weixin_42263093的博客 1120

STM32+CubeMX实战:5步搞定LWIP HTTP服务器搭建(附常见编译错误解决)

本文详细介绍了基于STM32和CubeMX平台,快速搭建LWIP HTTP服务器的5步实战指南。内容涵盖从项目初始化、LWIP深度配置到解决经典的`HTTPD_FSDATA_FILE`编译错误,并分享了使用VSCode进行高效开发的工作流,旨在帮助嵌入式开发者快速实现网络功能并规避常见陷阱。

weixin_29192365的博客 575

Spring Boot 配置文件加载规则

application.properties和application.yml文件可以放在一下四个位置: 外置,在相对于应用程序运行目录的/congfig子目录里。 外置,在应用程序运行的目录里 内置,在config包内 内置,在Classpath根目录 同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆...

狂奔的黑驴 789

openEuler 20.03 LTS面向RK3399移植系列(3)—openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linux kernel 4.4)

任务动机:完成openEuler面向RK3399开发板的移植。 任务描述:按照固件烧写准备,固件获取,固件打包和烧写的步骤实现openEuler面向RK3399开发板的移植,整理过程和相关命令记录到文档。 1. 制作openEuler的rootfs.img 1.1 开发环境 树莓派--openEuler系统 openEuler 20.03 LTS 的内测版本镜像,下载。 1.2 具体操作 1.2.1 ssh远程连接树莓派 确定树莓派IP ssh连接 1.2.2 制作rootfs.img

火种源码的机器人技术专栏 2370

IGBT基础知识

IGBT

u010783226的专栏 1万+

springboot中非容器类获取配置文件数据

如果是被spring容器所管理,一般采用@Value注解就可以读取到application.yml文件的内容。 但是不被spring容器管理,使用@Value是无效的。注入时会是NULL。但就是会有这样的场景,此时可采用在springboot启动类中将环境注入到某一个公共配置类,该类所有属性为公共静态属性攻外部类直接使用。 @SpringBootApplication public class DemoStarterTestApplication { public static void ma

weixin_42740540的博客 2896

Windows Docker + RK3588 部署 YOLO26-Pose 人体姿态检测

YOLO26-Pose 在 RK3588 上的部署流程是 Windows Docker 容器内 ONNX 导出 → RKNN 转换(INT8 量化)→ ADB 推送 → 板端 C++ 推理。YOLO26n-Pose 在 640 输入下全链路约 55 FPS,可以覆盖实时姿态检测需求。先在板端用单张图片验证关键点输出正确性,确认 C++ 后处理的解析逻辑无误后,再切换到摄像头实时推理。

m0_64661770的博客 99

Springboot环境下静态资源文件读取;ClassPathResource;FileNotFoundException

String strpath = “keyword.txt”; //获取文本文档路径 Resource resource = new ClassPathResource(strpath); File file = resource.getFile(); System.out.println(file.exists()); InputStreamReader isr = new InputStreamReader(new FileInputStream(file), “gbk”); BufferedRea

m0_52613676的博客 1818

AI游戏制作07——波次计时器,敌人按波次生成

AI游戏制作07——波次计时器,敌人按波次生成

qq_40572023的博客 48

5G 模组 FM650 USB模式查询及网络配置

完成以上配置后,5G模组可进行搜网,入网成功后,上位机获取 5G IP。

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 1325

关于applicationContext.xml cannot be opened because it does not exist的解决

初学Spring在用Resource rs=new ClassPathResource("applicationContext.xml");时老是遇到这个错误。后来发现用 ApplicationContext ctx=newFileSystemXmlApplicationContext("WebContent/WEB-INF/applicationContext.xml");可以解决这个问题...

weixin_30776863的博客 636

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Spring Boot 读取配置文件的几种方式

springboot读取配置文件的几种方式介绍

weixin_43993310的博客 1861

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring读取外部属性配置文件的几种方式

可以在Spring的applicationContext.xml中引用外部配置的属性文件,比如数据库信息等。。 2.5的配置方式 <context:property-placeholder location="classpath:jdbc.properties"/> 2.0的配置方式 <bean id="propertyConfigurer" class=&quot

小小默:进无止境 3691

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

读取Spring配置文件的几种方式

在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。 一、读取xml配置文件 (一)新建一个java bean package chb.demo.vo; public class HelloBean { private String h...

lgzbj2006的专栏 413

Spring配置文件的几种读取方式

1.新建spring工程,引入需要依赖的最少jar包,spring-aop,spring-beans,spring-content,spring-core,spring-expression <properties> <spring.version>5.0.4.RELEASE</spring.version> </properties> <dependencies> <depend

小鲁班-JAVA开发 358

深入解析Spring Boot中读取配置文件数据的几种方式

除了使用Spring Boot默认的配置文件(如或),我们还可以自定义配置文件,并使用Spring Boot提供的工具进行读取。

xycxycooo的博客 1325

java spring读取配置文件内容_Spring中读取配置文件的方式有几种?

今天和大家分享一下Spring读取配置文件的三种方式,第一种就是Environment,第二种就是占位符,第三种就是SpEL(Spring Express Language)。无论哪一种方式都要先设置数据源再进行读取。在工作当中用的最多的应该是占位符,不过其他两种也有自己的特点。下面一起来看一下吧。我们进行的讲解是以Spring的5.0.2.RELEASE版本基础的哦。第一种:Environmen...

weixin_29357243的博客 1712

Spring读取配置文件的几种方式及依赖

在企业级的项目中,Spring的配置文件中东西会很多,按照目的、功能去拆分配置文件,可以提高配置文件的可读性与维护性,如将配置事务管理、数据源等少改动的配置与配置bean单独分开。当团队开发的时候,每个人虽然都负责自己的模块,但使用Spring如果只是一个配置文件,那么我们的工作经常会有交集,其中一个交集就是在Spring配置文件中增加自己的bean,这样会给团队开发带来一定的不便,所以bean配

IT小智博客 1867

Spring读取配置文件,获取bean的几种方式

Spring读取配置文件,获取bean的几种方式 方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 说明: 这种方式适用于采用

龙腾四海365的专栏 867

java spring读取配置文件内容,Spring读取配置文件的几种方式

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.Reader;import java.util.Properties;import org.junit.Test;import ...

weixin_39589511的博客 262

spring boot 之读取配置文件中属性的几种方式

1.通过@Value注解读取配置文件中属性 2.通过@ConfigurationProperties注解自动装配指定表达式开头的属性 3.实现EnvironmentAware接口,从实现类中获取到Environment对象,然后根据指定的properties配置文件中指定的key获取对应的参数值 @Configuration publicclassEnvironmentUtilsim...

QQ1012470073的博客 583
上一篇: 订制微信 发送给好友 分享到朋友圈 分享到微博
下一篇: 如何实现基于tcp进行http交互
三易的博客
博客等级 码龄15年 42粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值