SpringBoot学习笔记——Spring Boot配置文件

    SpringBoot工程创建时会自动生成application.properties文件,这个文件专门存放配置信息。

    但是目前默认的配合文件已经不能满足我了,需要自己配置一些信息。

    第一、application.properties有一些默认的也是固定的属性和参数,不能改,但是我需要加入自己的配置信息。

    第二、项目上线之时代码已经编译,都是.class文件,没法修改。但是通过一些工具(我推荐WinSCP),项目的配置文件是可以修改的。有时出现的一些小问题不值得停机修改java文件,修改一下配置文件就可以了。

一、自定义属性

    1. 新建SpringBoot项目,application.propeerties中增加自定义属性。

server.port=8888
        
#自定义配置信息
byk.name=hanleilei
byk.age=18
byk.salary=999999
byk.professional=farmers

    2. 使用@Value标签把属性注入到需要的代码上。

@RestController
public class HomeController {

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

    @Value("${byk.age}")
    private int age;

    @Value("${byk.salary}")
    private String salary;

    @Value("${byk.professional}")
    private String professional;

    @GetMapping(value = "/hello")
    public String hello(){
        return "我是"+name+",我现在"+age+"岁,职业"+professional+",我期望薪资是"+salary;
    }
}

    3.启动项目, 浏览器访问http://localhost:8888/hello,如下:

二、将配置文件的属性赋给实体类

    1. 需要配置的属性很多的时候,可以把这些属性作文一个字段来创建一个javabean,并且将属性赋值给他们。

server.port=8888

#自定义配置信息
byk.name=hanleilei
byk.age=18
byk.salary=999999
byk.professional=farmers
byk.msg=hello,i'm ${byk.name}
byk.num=${random.int(100)}
#random.int(100)随机生成100以内的数字
    2.  引入依赖包。
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>
    3. 新建People.java,加上@Component和 @ConfigurationProperties标签。
@Component
@ConfigurationProperties(prefix = "byk")  //配置文件中属性的前缀
public class People {

    private String name;
    private int age;
    private String salary;
    private String professional;
    private String msg;
    private int num;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    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 getSalary() {
        return salary;
    }

    public void setSalary(String salary) {
        this.salary = salary;
    }

    public String getProfessional() {
        return professional;
    }

    public void setProfessional(String professional) {
        this.professional = professional;
    }
}

4. 新建PeopleContrller,加上@EnableConfigurationProperties。如下:

@EnableConfigurationProperties({People.class})
@RestController
public class PeopleContrller {


    @Autowired
    People people;

    @RequestMapping("/people")
    public String people(){
        return people.getMsg()+",我今年"+people.getAge()+",我的学号是"+people.getNum()+",我的希望薪资是"+people.getSalary();
    }
}

    5. 启动项目,浏览器访问http://localhost:8888/people,结果如下:


    三、自定义配置文件

    需要配置的信息过多的时候,不愿意把所有的信息都写在application.properties文件里。

    1. 我们可以自定义一个my.properties,如下:

student.name=LiLei
student.age=18
student.id=10086

    2. 新建Student.java。加@PropertySource和@ConfigurationProperties。

@Configuration
@PropertySource(value = "classpath:my.properties")   //指定配置文件
@ConfigurationProperties(prefix = "student") //属性的前缀
public class Student {

    private String name;

    private int age;

    private  int  id;

    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 int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
    3. 新建StudentController。
@RestController
//@EnableConfigurationProperties({StudentController.class})
public class StudentController {

    @Autowired
    Student student;

    @RequestMapping("/student")
    public String student(){
        return "我是"+student.getName()+",现在"+student.getAge()+",学号是"+student.getId();
    }
}
    4. 启动项目,访问 http://localhost:8888/student,如下:

    四、不同环境下的配置文件

    项目的不同开发阶段有不同的配置信息,比如数据库链接信息,开发阶段连接本机的数据库就可以,上线以后连接云数据库。具体如下:

  • application-test.properties:测试环境
  • application-dev.properties:开发环境
  • application-prod.properties:生产环境 

1. 具体的使用也很简单,在application.properties中加:

spring.profiles.active=dev
2. 新建application-dev.properties文件:
server.port=9999

3. 启动项目。此时访问http://localhost:8888/student报错,必须访问http://localhost:9999/student,如下:

    

五、一些坑

    不能算坑,只是有些不明白。    

    1. 网上的原文说@Component可加可不加,spring-boot-configuration-processor包可引可不引,但是我加不引报错。

    2.网上原文在每个Controller上面加了@EnableConfigurationProperties,但是我这里加不加都不影响功能。

六、感谢大牛

    找大牛点击此处https://blog.csdn.net/forezp/article/details/70437576


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值