如何让Spring的配置文件只在开启服务的时候读取?

本文介绍如何在Spring环境中优化配置文件读取策略,使其仅在服务启动时读取,避免频繁读取导致的程序延迟。通过在web.xml中添加监听器、配置上下文参数并在Action中获取ApplicationContext对象实现这一目标。

如何让Spring的配置文件只在开启服务的时候读取,其他时候不再读取?


Spring+Struts1时我们一般会在Action的某个方法里这样做


这样做会有个不好的地方,就是每次一调用Action里面的方法时就会读取xml,这样会使得程序缓慢,不提倡这样做?那怎样做最好了?

第一步:

在web.xml配置文件中加入一个监听器,在服务一启动的时候把Spring的配置文件的applicationContext.xml读取(可以改名)

这样加


第二步:

在web.xml中配置中给上下文传参数(这个会在Action里面用到)


第三步:

在Action里面的方法里这样去获得ApplicationContext对象


app就是ApplicationContext对象

可以app.getBean("");

就这样就实现了Spring的配置文件只在启动服务ide时候读取,而不会多次读取了!


可能你在搭建spring环境的时候会有忘记导包,这样在第三步的时候的WebApplicationContextUtils可能不能出来,那记得导入这个包

### 读取配置文件的方法 在 Spring 框架中,`ClassPathResource` 是用于访问类路径下资源文件的一个实用类。它通过类加载器(`ClassLoader`)加载资源文件,并将其转换为 `InputStream` 流,从而实现对资源文件的读取。这种方式特别适用于读取打包在 JAR 文件中的资源文件,因为 `ClassLoader` 能够直接从类路径中解析资源的 URL,并打开对应的输入流。 若需使用 `ClassPathResource` 读取配置文件,首先需要将配置文件放置在类路径下,例如 `src/main/resources` 目录。在代码中,通过构造 `ClassPathResource` 实例,并调用其 `getInputStream()` 方法,即可获取配置文件的输入流。例如,若配置文件为 `application.properties`,则可以按如下方式读取: ```java import org.springframework.core.io.ClassPathResource; import java.io.InputStream; import java.util.Properties; public class ConfigLoader { public void loadConfig() { try { ClassPathResource resource = new ClassPathResource("application.properties"); InputStream inputStream = resource.getInputStream(); Properties properties = new Properties(); properties.load(inputStream); // 使用 properties 读取配置信息 } catch (Exception e) { e.printStackTrace(); } } } ``` 在读取完成后,应确保关闭输入流以释放资源。可以使用 `try-with-resources` 语句自动管理资源: ```java import org.springframework.core.io.ClassPathResource; import java.io.InputStream; import java.util.Properties; public class ConfigLoader { public void loadConfig() { try (InputStream inputStream = new ClassPathResource("application.properties").getInputStream()) { Properties properties = new Properties(); properties.load(inputStream); // 使用 properties 读取配置信息 } catch (Exception e) { e.printStackTrace(); } } } ``` 此外,若配置文件位于子目录中,例如 `config/database.properties`,则需要提供相对于类路径的完整路径: ```java ClassPathResource resource = new ClassPathResource("config/database.properties"); InputStream inputStream = resource.getInputStream(); ``` 需要注意的是,在 JAR 包中访问资源文件,不能直接使用 `File` 类操作资源,因为资源文件在 JAR 包中并不是文件系统中的实际文件。因此,`ClassPathResource` 是推荐的资源访问方式之一。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值