首页 > 学院 > 开发设计 > 正文

Spring Boot学习笔记-项目属性的简单配置

2019-11-08 01:31:45
字体:
来源:转载
供稿:网友

写在前面

  上一篇文章,简单介绍了创建SPRing Boot项目,这篇文章主要记录Spring Boot的简单配置、两种配置文件、通过注解获取配置文件里的值以及多环境的配置。


简单的配置

  上一节创建好一个Spring Boot项目之后,会在src/main/resources下创建一个配置文件application.properties。下面在该配置文件内进行简单的配置。配置如下:

#配置地址,默认就是本地地址 server.address=127.0.0.1 #配置服务端口,默认为8080 server.port=8080 #配置上下文路径,默认是‘/’ server.context-path=/boot

.yml配置文件

  在Spring Boot中,还有一种配置文件,被更多开发者所使用。是以.yml结尾的一种配置文件。   我们首先需要创建这个配置文件,在和application.properties同一个目录下,我们新建一个application.yml文件。在该文件下,配置与上一步一样效果的配置。

#需要注意的是,该类型配置文件,冒号与值之间务必要添加空格!!! server: address: 127.0.0.1 port: 8080 context-path: /boot

  与上一步的区别显而易见,有层次感,结构清晰,所以,建议使用该类型的配置文件。PS:后面的所有配置都是使用.yml配置,还有就是,不管你选择哪种,另一种配置文件就能删除了。


通过注解获取配置文件属性

代码中调用配置文件属性

  在配置文件中,我们可以设置一些属性,供代码里面调用,比如,我们设置一个人的名字,我们可以在配置文件里这样配置:

server: address: 127.0.0.1 port: 8080 context-path: /boot name: HowieLi age: 18

  在代码里调用name的值,需要使用到@Value注解,代码如下:

package cn.howieli; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; RestController public class HelloController { @Value("${name}") //通过${变量名}调用 private String name; @Value("${age}") private int age; @RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { return name + age; } }

  此时启动项目,访问http://localhost:8080/boot/hello,就会显示HowieLi18了。

配置文件中调用配置文件中的属性

  在配置文件中,可以通过${变量名}来调用上面的属性,配置如下:

server: address: 127.0.0.1 port: 8080 context-path: /boot name: HowieLi age: 18 content: "name: ${name}, age: ${age}"

  代码中直接调用content就可以了,访问启动的应用显示name: HowieLi, age: 18

配置文件中配置javaBean

  生活中一个人的属性有很多,不光有姓名、年龄,可能还要有身高、住址等等属性,如果我们在配置文件中全部配置出来,在代码中一个一个通过注解调用会不会感觉很傻?不过,幸好Spring Boot提供了解决方案。现在我们将配置文件修改如下:

person: name: HowieLi age: 18

之后,创建一个Person类,为属性必须设置getset方法,亲测,不设置,值会为0null,或者直接NullPointerExcepotion,为方便查看,重写一个toString方法。Person类如下:

package cn.howieli; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component //将Person类交由Spring容器管理 @ConfigurationProperties(prefix = "person") //填写配置文件中的前缀 public class Person { private String name; private int age; 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; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } }

  使用@Autowired注解注入,调用数据:

package cn.howieli; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @Autowired private Person person; @RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { return person.toString(); } }

  重新启动项目,访问显示Person [name=HowieLi, age=18]


多环境配置

  在实际开发中,可能会针对不同的环境进行开发,我们作为开发人员,总不能每次部署项目都一个一个的去更改配置吧?我们需要把有限的时间放到更有意义的事上。   接下来,我们在配置文件所在目录下新键一个作为开发环境的配置文件:application-dev.yml,配置如下:

server: address: 127.0.0.1 port: 8080 context-path: /boot person: name: Lihao age: 20

再创建一个作为生产环境的配置文件:application-prod.yml,配置如下:

server: address: 127.0.0.1 port: 8080 context-path: /boot person: name: HowieLi age: 18

此时,修改原配置文件application.yml,配置如下:

spring: profiles: active: dev

  此时重新启动应用,访问http://localhost:8080/boot/hello,就会显示Person [name=Lihao, age=20]nameage的值是开发环境下,也就是application-dev.yml配置文件中的值。反之,将dev修改为prod,重新启动应用访问就会显示Person [name=HowieLi, age=18]devprod主要取决于之前创建的两个配置文件。   补充一点,在使用java -jar命令也可以指定不同的profile启动,命令如下:

java -jar my-spring-boot.jar --spring.profiles.active=dev

  不清楚该命令的可查看我的上一篇博客:Spring Boot学习笔记-STS创建第一个Spring Boot应用 (其它启动方式部分)


结语

  以上就是我自己的学习笔记,如有补充或有错,请一定要指正,一起进步。个人博客:https://www.howieli.cn 和个人CSDN博客: http://blog.csdn.net/howieli_1995。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表