gpt4 book ai didi

spring - 通过 webmvc-config.xml 在 Spring boot 项目的自定义属性文件中定义的配置未反射(reflect)到一个项目组件

转载 作者:行者123 更新时间:2023-12-02 11:38:52 24 4
gpt4 key购买 nike

我正在使用 Spring boot 版本 1.5.2..我知道已经很旧了。

我有多个具有 @SpringBootApplication 注释的项目组件,因此它们作为单独的应用程序运行。在所有这些应用程序中,我们都有一些自定义配置文件,例如 webmvc-config.xml 文件中名为 projectscopes.properties 的文件 -

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:/spring/application.properties</value>
<value>classpath:/spring/local.properties</value>
<value>classpath:/spring/netbankingapplication.properties</value>
<value>classpath:/spring/projectscopes.properties</value>
<value> file:${projectname.config.dir}/application.properties </value>
<value>file:${projectname.config.dir}/netbankingapplication.properties</value>
<value>file:${projectname.config.dir}/projectscopes.properties</value>
</list>
</property>
</bean>

<bean id="configProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:/spring/application.properties</value>
<value>classpath:/spring/local.properties</value>
<value>classpath:/spring/netbankingapplication.properties</value>
<value>classpath:/spring/projectscopes.properties</value>
<value>file:${projectname.config.dir}/application.properties</value>
<value>file:${projectname.config.dir}/netbankingapplication.properties
</value>
<value>file:${projectname.config.dir}/projectscopes.properties</value>
</list>
</property>
</bean>

projectname.config.dir 在 spring-boot:run 期间传递。

此文件定义了所有 API 端点,并定义了可以访问这些 API 的 oauth 角色 -

service/some/path/user/details=prepaid_manager;ROLE_CITRUSPAY_MERCHANT_SUPERVISOR;

问题

对其中一个项目的projectscopes.properties 所做的更改似乎不起作用。我注释掉了现有的 API 路径,它继续工作。还添加了新的,但变化没有体现。

最初这个 API 路径就在那里 -

service/some/path/user/details=project_manager;ROLE_PROJECT_MERCHANT_SUPERVISOR;

现在,我将其注释掉并添加了用户/详细信息 -

#service/some/path/user/details=project_manager;ROLE_PROJECT_MERCHANT_SUPERVISOR;
service/some/path/user/detailss=project_manager;ROLE_PROJECT_MERCHANT_SUPERVISOR;

但我仍然只能访问用户/详细信息。后者抛出此错误 -

{
"timestamp": 1571753007447,
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/service/some/path/user/detailss"
}

我不确定为什么它不读取对projectscopes.properties 的更改。

对 application.properties 所做的更改似乎有效。它定义了数据库配置。

我确认我正在对正确的projectscopes.properties 文件进行更改。给出的配置路径似乎是正确的。当应用程序启动时,我得到以下信息 -

spring-boot:run -Dprojectname.config.dir=/Users/sandeepan.nath/Desktop/codebase/root/prepaid/project-prepaid-internal-app/src/main/resources/spring/ ..

我不知道还要检查什么。

最佳答案

啊我明白了。 projectscopes.properties 中有一个通配符条目 -

service/some/path/**=project_manager;ROLE_CITRUSPAY_MERCHANT_SUPERVISOR;

并且所有单独的声明也都存在。这些都没有清理干净!

并且代码更改不会自动应用。我必须运行全新安装。我正在使用 Intellij 编辑器。

关于spring - 通过 webmvc-config.xml 在 Spring boot 项目的自定义属性文件中定义的配置未反射(reflect)到一个项目组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58506507/

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