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();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/cda464a3cc49d1da00f302dae49dae2b.png)
四、不同环境下的配置文件
项目的不同开发阶段有不同的配置信息,比如数据库链接信息,开发阶段连接本机的数据库就可以,上线以后连接云数据库。具体如下:
- 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。