Spring Boot:无法将 JNDI 变量加载到 yml 配置文件中

问题描述 投票:0回答:1

根据Spring Boot有关外部化配置的文档,我尝试将JNDI变量加载到我的yml配置文件中,如下所示:

spring:
  # Show or not log for each sql query
  jpa:
    show-sql: java:global/bc-api-immop/hibernate/show_sql

而且这不起作用。

我的 JNDI 上下文中有我的变量:

我也尝试过这个:

spring:
  # Show or not log for each sql query
  jpa:
    show-sql
      jndi-name: java:global/bc-api-immop/hibernate/show_sql

但是,结果还是一样。 你知道我做错了什么吗?

虽然听起来很奇怪,但我也有这段代码,并且它有效:

spring:
  # Set here configurations for the database connection
  datasource:
    jndi-name: java:jboss/datasources/bc-appli-as400-ds

编辑:当我这样做时,它会起作用(所以我的问题实际上来自于获取我的 JNDI 变量):

spring:
  # Show or not log for each sql query
  jpa:
    show-sql: true
spring spring-boot yaml jndi
1个回答
1
投票

你编写 yaml 的方式才是真正的问题

一般概念是

key: value
,因此通过编写
show-sql
,Spring Boot期望值为
true
false
,如附录A.常见应用程序属性所示,因此您的属性配置失败是正常的,我我非常确定这会出现在您的日志文件中的某个位置。

在第一个例子中,当你写

show-sql: java:global/bc-api-immop/hibernate/show_sql
时,你实际上是在回答“我应该向你展示生成的SQL语句吗”和“Hi spring Boot,这是你的数据源”这个问题,我们都知道这没有任何意义弹簧靴:)

另一方面,你最后的陈述是正确的。您正在 yaml 集合项

datasource
下定义属性
jndi-name:
,其值为
java:jboss/datasources/bc-appli-as400-ds

我还建议花 10 分钟阅读这篇文章 在 Y 分钟内学习 X

所以正确的方法可能是

spring:
  # Set here configurations for the database connection
  datasource:
    jndi-name: java:jboss/datasources/bc-appli-as400-ds
  jpa:
    show-sql: true

如果我可以帮助您,请告诉我

© www.soinside.com 2019 - 2024. All rights reserved.