• 「Spring Boot 系列」04. Spring Boot配置------获取数据


    Spring Boot数据获取

    简单来说,数据获取就是从application.yml配置文件中拿到相对应的值然后交给对应的实体类对象的属性。


    SpringBoot 提供了以下3种注解来获取数据:

    • @Value
    • @Environment
    • @ConfigurationProperties

    1. @Value

    当我们需要获取配置文件中的某一个数据时,就可以通过 @Value 注解来获取。(使用时标注在实体类的属性上)

    application.yml

    person:
        name: lucy
        age: 18
        hobby:
          - basketball
          - music
          - dance
    
    name1: tony
    
    msg1: 'hello 
     springboot!'
    msg2: "hello 
     SpringBoot!"
    
    
    @Value("${name1}")
    String name1;
    @Value("${person.name}")
    String name;
    @Value("${person.age}")
    int age;
    @Value("${person.hobby[0]}")
    String hobby;
    @Value("${msg1}")
    String msg1;
    @Value("${msg2}")
    String msg2;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    输出结果如下:
    在这里插入图片描述

    2. @Environment

    1. 引入Environment

    2. 通过getProperty方法来获取数据

      @RestController
      public class HelloController {
      @Autowired
      private Environment environment;

      @RequestMapping("/hello")
      public String hello(){
          System.out.println("name1:"+ environment.getProperty("name1"));
          System.out.println("name:"+ environment.getProperty("person.name"));
          System.out.println("age:"+ environment.getProperty("person.age"));
          System.out.println("hobby:"+ environment.getProperty("person.hobby[1]"));
          System.out.println("msg1:"+ environment.getProperty("msg1"));
          System.out.println("msg2:"+ environment.getProperty("msg2"));
      
          return "Hello Spring Boot!";
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      }

    获取结果:
    在这里插入图片描述

    3. @ConfigurationProperties

    @ConfigurationProperties主要作用就是将prefix属性指定的前缀配置项的值绑定到这个JavaBean上,需要和@Component或者@Configuration一起使用才能生效。(使用时标注在实体类上)

    创建一个Person.java的实体类

    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person {
    
        private String name;
        private int age;
        private String[] hobby;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String[] getHobby() {
            return hobby;
        }
    
        public void setHobby(String[] hobby) {
            this.hobby = hobby;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + ''' +
                    ", age=" + age +
                    ", hobby=" + Arrays.toString(hobby) +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    当出现下面的错误时,需要在pom.xml文件中添加下面的依赖(没有就忽略)
    在这里插入图片描述

    
        org.springframework.boot
        spring-boot-configuration-processor
        true
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    编写一个控制器方法

    @RestController
    public class HelloController {
    
        @Autowired
        private Person person;
    
        @RequestMapping("/person")
        public Person person(){
            return person;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    启动该项目,访问地址:http://localhost:8081/person
    在这里插入图片描述

    最后
    祝大家学的愉快,学的神速。
    有帮助的话,各位小伙伴可以点个赞收藏支持下啦!
    也欢迎关煮博主,一个正在努力变强的程序员~

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    RabbitMQ工作模式-工作队列
    项目管理之立项TG0
    【4.3计算机网络】网络规划与设计
    java.nio.channels.SocketChannel[connection-pending remote=/xx.xx.xx.xx:9866]
    为什么要用WRF计算非绝热加热项,以及如何输出非绝热加热项.
    计算机网络-网络层(路由算法与路由协议概述,IP数据报格式,IP数据报分片)
    算法进修Day-34
    Android SDK 加壳加固
    LVS-DR模式
    Java可变参数的应用
  • 原文地址:https://blog.csdn.net/m0_67400973/article/details/126080534