gpt4 book ai didi

java - 如何访问 WEB-INF 文件夹外的 jdbc 属性文件(用于 Spring Security 配置)?

转载 作者:行者123 更新时间:2023-11-28 23:30:05 31 4
gpt4 key购买 nike

我们如何访问 Web 应用程序的 WEB-INF 文件夹之外的 Spring Security 配置中的 jdbc 属性?我的项目层次结构如下:

tomcat
webapps
appName
Configuration
jdbc.properties
other configuration files too are here
WebPages
all the jsps/htmls here
WEB-INF
web.xml
spring-security.xml
classes/
lib/
tlds/

在 spring-security.xml 中,我试图引用 jdbc.properties 并且每次我都收到找不到文件的异常,

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="file:${catalina.home}/webapps/appName/configuration/jdbc.properties"/>

<property name="location" value="file:${catalina.base}/webapps/appName/configuration/jdbc.properties"/>

<property name="location" value="/configuration/jdbc.properties"/>

<property name="location" value="file:/configuration/jdbc.properties"/>

<property name="location" value="classpath:/configuration/jdbc.properties"/>

<property name="location" value="classpath:/configuration/jdbc.properties"/>

</bean>

{catalina.home} 和 {catalina.base} 可以工作,但只能在服务器重新启动或应用程序重新部署之前有效。 SO 或 Internet 上的几乎所有答案都指向解决方案,其中 jdbc.properties 文件放置在类路径中(即类文件夹内),但由于内部原因,我不能在我的项目中这样做。

最佳答案

如果您将属性文件移动到src/main/resources,假设您的项目由maven 管理,那么您可以通过执行以下操作来检索它

Properties prop = new Properties();

try {
// load a properties file
prop.load(YourClass.class.getResourceAsStream("/jdbc.properties")); // note the leading /

System.out.println(prop.getProperty("password"));

} catch (IOException ex) {
ex.printStackTrace();
}

YourClass 是这段代码所在的类。

Maven 将编译类的类文件和所有资源放在 WEB-INF/classes 中的 src/main/resources 中,只有您的应用程序可以访问它们。

如果你把文件放在src/main/resources/someFolder,你需要从

访问它

prop.load(YourClass.class.getResourceAsStream("/someFolder/jdbcProperties"));您提供给上述方法的路径是相对于您所在类的包的,除非您指定了前导正斜杠,在这种情况下它将相对于类路径的根目录,即类文件夹。

关于java - 如何访问 WEB-INF 文件夹外的 jdbc 属性文件(用于 Spring Security 配置)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31653421/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com