-
一.手动配置
新建maven项目,导入依赖,不需要配置<packing>war</packing>,springboot内置了
- 要使用springboot,首先继承其父亲
-
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> </parent>
-
- 然后导入pringboot的核心启动器依赖,包含了自动配置,日志和yaml
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
-
- 然后导入支持web开发的依赖,这里依赖里面包括了tomacat,spring-webmvc
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
- 新建一个启动类BootApp,运行启动类之后,不会直接跳转到页面的,需要我们自己去地址栏输入网址,注意括号里面是逗号,不是点
-
package com.pro; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * springboot 的启动类 */ @SpringBootApplication public class BootApp { public static void main(String[] args) { SpringApplication.run(BootApp.class,args); } }
-
- 控制层注解是RestController
-
package com.pro.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hai") public String hai(){ return "hello world"; } }
-
- 如果我们没有导入下面这个插件,jar包会很小,加入之后大小就会正常,大小正常之后,我们就可以打开cmd命令行窗口,执行java - jar包名称
-
<!--将项目相关的依赖,一并打包到jar中,后面可以放到服务器上运行--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
-
二.自动配置:建完项目,我们上面手动配置的东西,都给我们配好了
- 新建项目的时候,这样建
-
springboot里面有三种配置文件:peoperties,yml,yaml
- application.properties
- *application.yml:
yml当中系统提供的数据,和自定义的数据赋值,以及在controller里面的取值方式
- 第一种:@Value
-
#系统提供的,我们引出来,填值就可以了 server: port: 9999 servlet: context-path: /boot2 #自定义的配置数据,也可以在这里配置,在controller里面如何获取? #字符串 dd: 俊俊 #对象 person: name: zs #数组 address: - hz - cq #单,双引号,有不同的含义,双引号识别换行,会换行,单引号忽略换行 msg: 'hello \n world' msg1: "hello \n world1" #引用已经定义的名称 mmssgg: hello${dd} mmssgg1: 'hello ${dd}'
-
controler中取:
-
package com.pro.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @Value("${dd}") private String dd; @Value("${person.name}") private String perName; @Value("${address[0]}") private String address; @Value("${msg}") private String msg; @Value("${msg1}") private String msg1; @Value("${mmssgg}") private String mmssgg; @Value("${mmssgg1}") private String mmssgg1; @GetMapping("/hai") public String hai(){ return "hello world"+perName+"=="+address+"=="+msg+"=="+msg1+"=="+mmssgg+"=="+mmssgg1; } }
- 第二种:@Autowired
- 第三种:这种在编程过程中经常会用到
- 在properties包下面新建一个PersonConfigurationProperties类
- 系统提供的数据在编写时会有提示,但是我们自己的是没有提示的,为了在编写自定义数据的时候能够有提示,我们需要导入一个依赖
-
<!--对自定义的配置处理,可以在rebuild后,yml中可以提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>2.1.7.RELEASE</version> <optional>true</optional> </dependency>
在导入依赖,下载的时候可能会报这个错
-
- 第三种方式在于可以对对象的多个属性同时赋值
- 因此,咱们第三种方式也就出来了,和其他两种的区别:
-
前两种主要是针对单个数据去赋值,如果是对象有多个属性,就没法赋值了
-
第三种针对对象的多个属性可以赋值
三.项目的三种状态:生产,测试,上线(正常运营)
- 配置文件application.properties指定执行哪个配置文件
- yml配置文件指定使用哪个配置文件(这里有地方要注意)
- 如果在配置文件中没有指定,那么默认是8080
- 第三种指定方式:
- 第四种方式:
- 优先级:properties>yml>yaml
- 指定配置文件时:
- 第三第四种方式优先级高于前者(自己测出来的)
- 第一种和第二种同时都指定,但是指定不一样时,第一种优先级高。