问题标签 [property-placeholder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-mvc - 在 spring-boot 中使用自定义拦截器,@Value 默认值优先于我配置的值
我正在编写我的第一个 spring-boot 应用程序,所以我相信我的某个配置问题导致了我的错误。
我有一个类“MyInterceptor”,它用“@Component”注释并扩展了 HandlerInterceptorAdapter。
我有一个用“@Configuration”注释的配置类“WebConfiguration”(并且没有用“@EnableWebMvc”注释)。
我在 WebConfiguration 中声明/注入我的拦截器类,如下所示:
然后将此类指定为拦截器,如下所示:
在 MyInterceptor 中,我声明了一个要为其注入值的属性。我已将其声明为默认值,如下所示:
当我像上面那样在@Value 注释中声明“default_value”时,始终使用该值。我的 application-dev.yml 文件中声明的值被忽略。
当我删除默认值时,将使用我的 application-dev.yml 中的值。
我怀疑 @Value 注释中的默认值是在配置值之后加载并出于某种原因覆盖它。但我不知道为什么或如何阻止它。
我的应用程序中使用 @Value 注释但未在我的 WebConfiguration 中声明/注入的其他服务没有表现出相同的行为。
我尝试像这样添加我的拦截器:
然后改变了这个:
但是当我这样做时,无论我是否声明了默认值,都不会获取 application-dev.yml 中的配置值。
我确实理解为什么 @Resource 注释注入使我配置的属性可用,以及为什么 Config 类中的直接构造函数调用不可用。但是使用 @Resource 注释是错误的方法吗?为什么我的默认设置没有被覆盖?
我应该如何将配置值注入到我的拦截器和在我的 Config 类中类似声明的其他类中?
karaf - Karaf v4.0.8:多个蓝图无法从相同的持久 ID 加载配置
更新:由于某种原因,花了一点时间才意识到,但我看到配置文件是特定于包 PID 的,并且通过尝试在两个不同包中的蓝图中加载相同的 cfg 文件,我正在创建一个竞争条件。确保仅在其目标包中使用 cfg 文件。
注意:以上内容仅适用于蓝图捆绑包。如果您不依赖 OSGI ConfigAdmin 服务来动态保存捆绑包,并且希望使用来自 Camel 上下文之类的 cfg 文件,那应该没问题。
我通过 karaf 4.0.8 'deploy' 文件夹部署了 2 个蓝图。两者都有以下共同部分:
我想从“common”加载两者通用的配置。但是,当它们从“etc”文件夹共享相同的 persistentId 和属性文件时,第二个要部署的蓝图会继续加载和卸载。如果我让它们从不同的文件中加载-一切正常。
来自社区的任何想法为什么我有这种行为?提前致谢。
spring-boot - Spring Cloud 配置实现以及 Spring Boot PropertyPlaceholderConfigurer 不起作用
我正在实施 spring 云配置以在我的应用程序中外部化配置。我有 Spring Boot 应用程序,其中已经实现了属性占位符配置器。后来我做了与spring cloud config相关的更改,它没有从远程存储库中读取属性文件。它总是从属性占位符配置器中给出的静态属性中读取。如何使 spring cloud config 与属性占位符配置器一起工作?我希望我的应用程序根据给定的配置文件从远程存储库中读取属性并覆盖属性占位符配置器值。请帮我解决这个问题。提前致谢!
属性占位符配置:
Spring Cloud 配置 application.properties:
我编写了一个控制器来检查它是否正在从远程存储库中读取属性。
当我运行并检查 db url 时,它总是返回属性占位符配置中给出的“test_url”,它不会从远程存储库中读取。
让我知道我是否缺少使其工作的东西,或者如果无法将 Spring 云配置和属性占位符配置器结合起来。
java - Spring @Value TypeMismatchException:无法将类型“java.lang.String”的值转换为所需类型“java.lang.Double”
我想使用 @Value 注释来注入 Double 属性,例如:
并使用 Spring 属性占位符(属性文件):
我得到例外:
org.springframework.beans.TypeMismatchException:无法将“java.lang.String”类型的值转换为所需的“java.lang.Double”类型;嵌套异常是 java.lang.NumberFormatException: For input string: "${item.priceFactor}"
有没有办法使用来自属性文件的 Double 值?
java - 运行基于 Spring 的应用程序时如何解析占位符?
同事们,我有基于 java 的 Spring 配置:
当我执行mvn clean package -Denv=dev
它运行测试并构建项目时没有任何错误。
现在我想运行已编译的 jar。我执行java -jar dir-integration-1.2-SNAPSHOT.jar -Denv=dev
并且程序失败(这是预期的),下一个堆栈跟踪:
Wnen 我运行$ java -jar dir-integration-1.2-SNAPSHOT.jar --env=dev
结果是下一个:
在应用程序运行期间我应该怎么做才能从指定的属性文件中接收属性?
java - 在设置属性占位符之前使用 SystemPropertyInitializer 设置系统属性
根据this answerorg.springframework.batch.support.SystemPropertyInitializer
,您可以在Spring Context启动期间使用Spring Batch类设置系统属性。
特别是,我希望能够使用它来设置ENVIRONMENT
,因为部分 Spring Batch 配置读取:
但SystemPropertyInitializer
用于afterPropertiesSet()
设置系统属性,显然这发生在配置PropertyPlaceholderConfigurer
.
有可能实现这一目标吗?
routing - Apache Camel:如何使用属性占位符来启用或禁用路由?
我是 Apache Camel 的新手,手头有一个问题陈述。我想构建一个代码,我可以在其中引用骆驼属性中的标志,并允许根据属性文件中的标志可用性启用/禁用路由。我该如何进行?
java - SpringBoot 不替换 Spring Tool Suite 版本中的系统变量 {user.home}:3.8.4.RELEASE
我使用 Spring Initializr 生成了一个 Spring Boot Web 应用程序,在 macOS Sierra 中使用嵌入式 Tomcat + Thymeleaf 模板引擎。我想在 Mac OS中使用系统变量用户主文件夹名称
我的 Spring Boot 应用程序中有这个 Spring 类配置
但是当我启动应用程序时出现此错误
java - 无法通过 Spring 中的属性占位符读取属性文件。获取系统找不到指定的文件错误
当我尝试加载源代码中的属性文件时,我遇到了问题。但是当我尝试从外部加载属性文件时,它工作正常。下面提到了工作和不工作的代码。有人可以帮我解决这个问题。我是春天的新手:)
我为从外部和项目内部加载属性文件所做的唯一更改是 context:property-placeholder 中的位置声明。
配置弹簧上下文以从外部加载属性文件,如下所示。它工作得很好。
从外部加载属性文件时 -工作:
我将我的属性文件配置为在 spring 上下文中从项目加载,如下所示 -不工作:
我的 WebDetails.properties 位于 src/main/resources 下的 Maven 项目中。文件看起来像
并在 WebProperties 中映射属性值,如下所示
我的主要课程是:
当我从代码加载属性时执行我的主类。我收到${url} 错误(系统找不到指定的文件。)
我应该如何在占位符中配置我的位置路径?
更多信息:主类 ProcessWeb 将从批处理文件中调用。部署代码后,当我们从命令提示符执行该批处理文件时,外部属性也会出现相同的问题。是否需要更改任何配置?我们将代码打包成 jar 文件
java - Flyway 数据库迁移中占位符的用途
占位符的目的是什么?占位符在哪些现实世界的实际场景中可能有用?你能描述一些简单的例子来证明有用吗?
此文档页面底部的示例显示了在 SQL 中使用占位符。我们将如何设置要插入的值来代替该占位符?占位符值的来源是否定义为环境变量、Java 变量、Java.properties
文件或其他内容?
占位符是否仅包含纯文本,没有其他数据类型?
占位符只能在 SQL 文件中使用吗?Java 代码中的 SQL 字符串中可以使用占位符吗?
还有其他地方可以使用占位符吗?
我发现了这个问题,占位符如何在 Flyway 中工作?,但它并没有给我一个清晰的画面。