英文:
How to read Azure app config values from Java SpringBoot app
问题
以下是翻译好的部分:
我有一个Springboot应用程序,尝试连接并读取应用配置资源中的值。
Azure应用配置中的一些键(我无法更改)采用以下格式:
/application/config.datasource.jdbc-url
/application/config.datasource.password
/application/config.datasource.username
我有一个配置的Java类,其前缀是 "config",但我不知道应该有哪些成员变量才能访问 "datasource.jdbc-url"、"datasource.password" 等等。
如果应用配置只是 /application/config.username
那么我可以在我的Java类中使用以下内容:
String username;
但是对于一些包含多个点和一些破折号的配置(Java标识符不能包含),我该如何读取这些值?
谢谢!
英文:
I have a Springboot app that is trying to connect and read values from an app config resource.
Some keys in the Azure app config (which I am unable to change) are in this format
`
/application/config.datasource.jdbc-url
/application/config.datasource.password
/application/config.datasource.username`
I have a config Java class with prefix ("config"), but I don't know what member variables I should have in order to access "datasource.jdbc-url", "datasource.password" etc.
If the app config was just /application/config.username
then I could just use the below in my Java class
String username;
but for some of the configs that include multiple dots and some dashes (which Java identifiers can't have), how can I read the values?
Thank you!
答案1
得分: 1
根据您的需求,您有两个选择。您可以使用@Value("config.datasource.jdbc-url")
,或者您可以使用嵌套属性。
public class Datasource {
private String username;
private String password;
private String jdbcurl;
...
}
@ConfigurationProperties(prefix = "config")
class MyProperties {
private Datasource datasource = new Datasource();
...
}
英文:
You have two options depending on what you are looking for. You can either use @Value("config.datasource.jdbc-url")
or you can use nested properties.
public class Datasource {
private String username;
private String password;
private String jdbcurl;
...
}
@ConfigurationProperties(prefix = "config")
class MyProperties {
private Datasource datasource = new Datasource();
...
}
</details>
# 答案2
**得分**: 0
您的用例类似于此示例[azure-spring-cloud-starter-appconfiguration-config-sample][1],请尝试定义[properties class][2]以绑定Azure App Configuration中的配置项。
[1]: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/appconfiguration/azure-spring-cloud-starter-appconfiguration-config/azure-spring-cloud-starter-appconfiguration-config-sample
[2]: https://github.com/Azure-Samples/azure-spring-boot-samples/blob/4ba43ef615e295c01fba0359402c696e7f412049/appconfiguration/azure-spring-cloud-starter-appconfiguration-config/azure-spring-cloud-starter-appconfiguration-config-sample/src/main/java/example/MessageProperties.java#L13
<details>
<summary>英文:</summary>
Your use case is similar to this sample [azure-spring-cloud-starter-appconfiguration-config-sample][1], please try to define the [properties class][2] to bind the configurations in Azure App Configuration.
[1]: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/appconfiguration/azure-spring-cloud-starter-appconfiguration-config/azure-spring-cloud-starter-appconfiguration-config-sample
[2]: https://github.com/Azure-Samples/azure-spring-boot-samples/blob/4ba43ef615e295c01fba0359402c696e7f412049/appconfiguration/azure-spring-cloud-starter-appconfiguration-config/azure-spring-cloud-starter-appconfiguration-config-sample/src/main/java/example/MessageProperties.java#L13
</details>
# 答案3
**得分**: 0
在 `Azure portal` > `App configuration` > `Configuration explorer` 中,我已经为 Username、Password 和 Jdbc url 创建了键和值。
这是我的 UserProperties 类,
```java
@ConfigurationProperties(prefix = "config.datasource")
public class UserProperties {
private String username;
private String password;
private String jdbcurl;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getJdbcurl() {
return jdbcurl;
}
public void setJdbcurl(String jdbcurl) {
this.jdbcurl = jdbcurl;
}
}
这是我创建的 UserController 类,
public class UserController {
private final UserProperties properties;
public UserController(UserProperties properties) {
this.properties = properties;
}
@GetMapping("/Anu")
public String getUsername() {
return "username: " + properties.getUsername();
}
@GetMapping("/vyshu")
public String getPassword() {
return "password: " + properties.getPassword();
}
@GetMapping("/priya")
public String getJdbcurl() {
return "jdbcurl: " + properties.getJdbcurl();
}
}
这是我的代码的引导部分,你应该将你的连接字符串添加在 {} 中,
spring.cloud.azure.appconfiguration.stores[0].connection-string= ${APP_CONFIGURATION_CONNECTION_STRING}
这是我的 Username 的输出,
这是我的 Password 的输出,
这是我的 jdbcurl 的输出,
英文:
Adding to @Moarchy Chan@ConfigurationProperties(prefix = "config.datasource")
In Azure portal
>App configuration
> Configuration explorer
, I have created keys and values for Username, Password and Jdbc url.
This is my Class UserProperties,
@ConfigurationProperties(prefix = "config.datasource")
public class UserProperties {
private String username;
private String password;
private String jdbcurl;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getJdbcurl() {
return jdbcurl;
}
public void setJdbcurl(String jdbcurl) {
this.jdbcurl = jdbcurl;
}
}
Here is the UserController I have created,
public class UserController {
private final UserProperties properties;
public UserController(UserProperties properties) {
this.properties = properties;
}
@GetMapping("/Anu")
public String getUsername() {
return "username: " + properties.getUsername();
}
@GetMapping("/vyshu")
public String getPassword() {
return "password: " + properties.getPassword();
}
@GetMapping("/priya")
public String getJdbcurl() {
return "jdbcurl: " + properties.getJdbcurl();
}
}
This the bootstrap for my code, you should add your connection string in {},
spring.cloud.azure.appconfiguration.stores[0].connection-string= ${APP_CONFIGURATION_CONNECTION_STRING
}
This is the output for my Username,
This is the output for my Password,
This is the output for my jdbcurl,
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论