SpringBoot获取自定义参数

无论是properties格式还是yml的配置文件格式,其获取参数是一样的

yml的格式语法请参考http://www.ruanyifeng.com/blog/2016/07/yaml.html

这里以yml文件格式举例:

application.yml

student:
  name: "张三"
  age: 18
  sex: "男"

获取参数

第一种:

通过@Value注解

@Controller
public class HelloWorldController {

    @Value("${student.name}")
    private String name; 

    @GetMapping("/hello")
    @ResponseBody
    public String hello(){
        System.out.println(Arrays.asList(stus));
        return sname;
    }
}

第二种:

通过@ConfigurationProperties(prefix = "student")与@Autowired结合使用。prefix 省略的前缀名称

  • student.class

    //这里以po类距离四,但是要想使用ConfigurationProperties注入参数 需要提供get、set方法
    package com.lifeibai.po;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    @ConfigurationProperties(prefix = "student")
    public class Student {
      private String name;
      private int age;
      private String sex;
    
      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 getSex(){
          return sex;
      }
    
      public void setSex(String sex){
          this.sex = sex;
      }
    
      @Override
      public String toString(){
          final StringBuilder sb = new StringBuilder("Student{");
          sb.append("name='").append(name).append(''');
          sb.append(", age=").append(age);
          sb.append(", sex='").append(sex).append(''');
          sb.append('}');
          return sb.toString();
      }
    }
    
    @Controller
    public class HelloWorldController {
    
      @Value("${student.name}")
      private String name;
      @Autowired
      private Student student;
    
      @GetMapping("/hello")
      @ResponseBody
      public String hello(){
          return student.toString();
      }
    }
    

第三种:

使用  @Autowired private Environment env;属性 来获取参数

@Controller
public class HelloWorldController {

    @Autowired
    private Environment env;

    @GetMapping("/hello")
    @ResponseBody
    public String hello(){

        return env.getProperty("student.name");
    }
}

发表评论

登录后才能评论
关注我们