当前位置:   article > 正文

43-springboot-yaml读取数据_yaml读取环境变量

yaml读取环境变量

1.使用value直接读取

在需要读取配置数据的类中,使用@Value注解直接注入配置值。例如:

  1. @Component
  2. public class MyComponent {
  3.     @Value("${myapp.name}")
  4.     private String name;
  5.     
  6.     @Value("${myapp.age}")
  7.     private int age;
  8.     
  9.     // ...
  10. }

在上面的示例中,通过${...}语法,可以读取YAML配置文件中myapp.name和myapp.age的值,并将它们注入到name和age变量中。

然后,你就可以在MyComponent或其他类中使用这些注入的值进行业务逻辑处理。
需要注意的是,使用@Value注解读取YAML数据时,你需要确保配置文件中存在相应的键(例如myapp.name和myapp.age)以及对应的值。

2.使用environment封装后读取数据

创建一个封装环境变量读取的工具类,例如 YAMLConfigReader:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.context.annotation.PropertySource;
  3. import org.springframework.core.env.Environment;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. @PropertySource("classpath:application.yml")
  7. public class YAMLConfigReader {
  8.     @Autowired
  9.     private Environment environment;
  10.     public String getValue(String key) {
  11.         return environment.getProperty(key);
  12.     }
  13. }

在上面的示例中,我们使用 Environment 对象通过 getProperty 方法来获取指定键对应的值。在需要读取配置数据的类中注入 YAMLConfigReader 对象,并调用其 getValue 方法进行配置值的读取。例如:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. public class MyComponent {
  5.     private final YAMLConfigReader yamlConfigReader;
  6.     @Autowired
  7.     public MyComponent(YAMLConfigReader yamlConfigReader) {
  8.         this.yamlConfigReader = yamlConfigReader;
  9.     }
  10.     public void doSomething() {
  11.         String name = yamlConfigReader.getValue("myapp.name");
  12.         int age = Integer.parseInt(yamlConfigReader.getValue("myapp.age"));
  13.         // 使用配置数据进行业务逻辑处理
  14.     }
  15. }

在上面的示例中,我们通过构造函数注入了 YAMLConfigReader 对象,并在 doSomething 方法中调用了其 getValue 方法来读取配置值。注意,这里我们需要根据需要将配置值转换为相应的数据类型。

3.实体类封装属性后读取数据

创建一个用于封装配置属性的实体类,例如 MyAppConfig:

  1. import org.springframework.boot.context.properties.ConfigurationProperties;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. @ConfigurationProperties(prefix = "myapp")
  5. public class MyAppConfig {
  6.     private String name;
  7.     private int age;
  8.     // 添加相应的 getter 和 setter 方法
  9. }

在上面的示例中,我们使用注解 @ConfigurationProperties(prefix = "myapp") 来指定配置属性的前缀,即在 YAML 配置文件中与该实体类对应的配置属性的起始位置。在 Spring Boot 应用程序的配置类或启动类上,添加 @EnableConfigurationProperties 注解,并指定要扫描的实体类。例如:

  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  4. @SpringBootApplication
  5. @EnableConfigurationProperties(MyAppConfig.class)
  6. public class MyApplication {
  7.     public static void main(String[] args) {
  8.         SpringApplication.run(MyApplication.class, args);
  9.     }
  10. }

现在,你可以在需要读取配置数据的地方直接注入 MyAppConfig 对象,并使用其 getter 方法获取相应的属性值。例如:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. public class MyComponent {
  5.     private final MyAppConfig myAppConfig;
  6.     @Autowired
  7.     public MyComponent(MyAppConfig myAppConfig) {
  8.         this.myAppConfig = myAppConfig;
  9.     }
  10.     public void doSomething() {
  11.         String name = myAppConfig.getName();
  12.         int age = myAppConfig.getAge();
  13.         // 使用配置数据进行业务逻辑处理
  14.     }
  15. }

在上面的示例中,我们通过构造函数注入了 MyAppConfig 对象,并在 doSomething 方法中调用了其 getter 方法来获取配置值。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/939289
推荐阅读
  

闽ICP备14008679号