Spring Boot 无法从Sping Boot 应用程序中的Vault读取配置

daolsyd0  于 2024-01-06  发布在  Spring
关注(0)|答案(1)|浏览(235)

我试图读取两个简单的价值观从跳马在Spring Boot 应用程序。没有成功,我不知道为什么。这里是我的代码:
pom.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project
  3. xmlns="http://maven.apache.org/POM/4.0.0"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  6. <modelVersion>4.0.0</modelVersion>
  7. <parent>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-parent</artifactId>
  10. <version>3.2.0</version>
  11. <relativePath/>
  12. <!-- lookup parent from repository -->
  13. </parent>
  14. <groupId>com.company</groupId>
  15. <artifactId>vaultdemo</artifactId>
  16. <version>0.0.1-SNAPSHOT</version>
  17. <packaging>pom</packaging>
  18. <name>vaultdemo</name>
  19. <description>vaultdemo</description>
  20. <properties>
  21. <java.version>17</java.version>
  22. <spring-cloud.version>2023.0.0</spring-cloud.version>
  23. <maven.compiler.source>17</maven.compiler.source>
  24. <maven.compiler.target>17</maven.compiler.target>
  25. </properties>
  26. <dependencies>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-web</artifactId>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework.cloud</groupId>
  33. <artifactId>spring-cloud-starter-vault-config</artifactId>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-tomcat</artifactId>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework.vault</groupId>
  41. <artifactId>spring-vault-core</artifactId>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework.boot</groupId>
  45. <artifactId>spring-boot-starter-test</artifactId>
  46. <scope>test</scope>
  47. </dependency>
  48. </dependencies>
  49. <dependencyManagement>
  50. <dependencies>
  51. <dependency>
  52. <groupId>org.springframework.cloud</groupId>
  53. <artifactId>spring-cloud-dependencies</artifactId>
  54. <version>${spring-cloud.version}</version>
  55. <type>pom</type>
  56. <scope>import</scope>
  57. </dependency>
  58. </dependencies>
  59. </dependencyManagement>
  60. <build>
  61. <plugins>
  62. <plugin>
  63. <groupId>org.springframework.boot</groupId>
  64. <artifactId>spring-boot-maven-plugin</artifactId>
  65. </plugin>
  66. </plugins>
  67. </build>
  68. </project>

字符串
VaultConfiguration.java:

  1. @ConfigurationProperties(value = "knf")
  2. public class VaultConfiguration {
  3. private String username;
  4. private String password;
  5. public VaultConfiguration(String username, String password) {
  6. this.username = username;
  7. this.password = password;
  8. }
  9. public String getUsername() {
  10. return username;
  11. }
  12. public void setUsername(String username) {
  13. this.username = username;
  14. }
  15. public String getPassword() {
  16. return password;
  17. }
  18. public void setPassword(String password) {
  19. this.password = password;
  20. }
  21. }


VaultdemoApplication.java:

  1. @SpringBootApplication
  2. @EnableConfigurationProperties(VaultConfiguration.class)
  3. public class VaultdemoApplication {
  4. public static void main(String[] args) {
  5. ConfigurableApplicationContext context = SpringApplication.run(VaultdemoApplication.class, args);
  6. VaultConfiguration bean = context.getBean(VaultConfiguration.class);
  7. System.out.println(bean.getUsername());
  8. System.out.println(bean.getPassword());
  9. }
  10. }


application.properties:

  1. spring.application.name=spring-boot-hashicorp-vault-sample
  2. spring.cloud.vault.token=hvs.blomXkLGAvs6sXTHcLFYgbqb
  3. spring.cloud.vault.scheme=http
  4. spring.cloud.vault.enabled=true
  5. spring.cloud.vault.uri=http://127.0.0.1:8200
  6. spring.cloud.vault.port=8200
  7. spring.cloud.vault.kv.enabled=true
  8. spring.cloud.vault.kv.backend=secret


Vault中值的图像:


的数据
当我运行应用程序时,它会为用户名和密码打印null。有什么想法可以让它工作吗?

hkmswyz6

hkmswyz61#

好吧,我终于找到了问题。首先,我的 Package 是POM。我的错误是,我改变了 Package POM测试别的东西,但我忘了再次编辑它。我的应用程序甚至没有读取application.properties文件。在目标/类文件夹中没有属性文件。所以我把它改为jar,也改变了application.properties到application. yml。它现在工作正常。
my application.yml:

  1. server:
  2. port: 8081
  3. spring:
  4. config:
  5. import: vault://
  6. cloud:
  7. vault:
  8. uri: http://127.0.0.1:8200
  9. token: hvs.blomXkLGAvs6sXTHcLFYgbqb
  10. kv:
  11. enabled: true
  12. backend: secret
  13. scheme: http

字符串

展开查看全部

相关问题