一. 快速添加依赖
为了快速添加依赖,我们需要先安装一个插件:EditStarters
二. SpringBoot 核心思想:约定大于配置
首先我们写一个helloworld代码:
@Controller @ResponseBody public class TestController { @RequestMapping("/sayHello") public String say(){ return "hello world"; } }
目录结构:
当我们修改TestController 的所在位置后,发现页面访问不到了。因为spring boot约定,你的代码要放到DemoApplication 同级或者子级目录中才能读取到,否则就会扫描不到。
三. SpringBoot 配置文件
• .properties
• .yml/yaml
说明:
• 这里的application.yml 的前置只能是application,否则配置不会生效,而yml可以改为yaml
• 理论上 properties 可以和 yml 一起存在于一个项目中,当两者一起存在一个项目中时,如果配置文件中出现了同样的配置,比如 properties 和 yml 中都配置了端口号,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置文件的优先级最高,但加载完 .properties 文件之后, 也会加载 .yml 文件的配置信息。
• 虽然 。properties 可以和 .yml 共存,但实际的业务当中,我们通常只会采取一种同一的配置文件格式。
四. properties
4.1 properties 基本语法
properties 是以键值对的形式配置的,key 和 value 之间以“=” 连接的,如:
#配置项目端口 server.port=8080 #连接数据库 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/java_db?characterEncoding=utf8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 #自定义配置项 myMessage
4.2 读取配置文件
在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。
@Value 注解使用“${}” 的格式读取,代码如下:
@Controller @ResponseBody public class TestController { //如果直接写字符串,会将字符串赋值给该属性 @Value("${myMessage}") String message; @RequestMapping("/sayHello") @Autowired public String say(){ return "hi "+message; } }
五. yml 基本语法
yml 是树形结构的配置文件,它的基础语法是"key: value",注意 key 和 value 之间使用英文冒号加空格的方式组成的,其中的空格不可省略。
5.1 配置对象
yml 配置如下:
users: name: 张三 id: 123 sex: 男
这个时候就不能用@Value 来读取配置中的对象了,此时需要使用另一个注解@ConfigurationProperties 来读取:
@Component @ConfigurationProperties("users") public class User { private int id; private String name; private String sex; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String s) { this.sex = s; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", s='" + sex + '\'' + '}'; } }
调用类如下:
@Controller @ResponseBody public class UserController { @Autowired User user; @PostConstruct public void doPostConstruct(){ System.out.println(user); } }
5.2 配置集合
yml 配置:
list: {names: [张三,李四,王五]}
注入SpringBoot:
@Component //@Data是Lombok插件提供的,提供了set和get以及toString方法,不需要在写了 @Data @ConfigurationProperties("list") public class ListConfig { private List<String> names; }
使用:
@Controller @ResponseBody public class ListController { @Autowired ListConfig listConfig; @PostConstruct public void doPostConstruct(){ System.out.println(listConfig.getNames()); } }
六. 设置不同环境下的配置文件
6.1 创建不同环境下的配置文件
• application-dev.properties:开发环境
• application-test.properties:测试环境
• application-prod.properties:生产环境
上述配置文件只有 “-” 后面的内容可以修改,其他的都不能修改
6.2 在application.properties 中设置运行环境
spring.profiles.active=dev