springboot入门
搞掉了手动的spring,mybatis,springmvc配置类,只需要创建一个控制类即可
控制类:
package com.itjh.controller;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println("ID======》》》"+id);
return "再一次!好?";
}
}
运行:
结果:
上图中看出端口号为8080,这里的路径不用写项目名称(和之前的ssm不同):
http://localhost:8080/books/1
简易版运行springboot项目,不用idea:
先打包jar包;
然后在文件中的target中可以找到jar包:
直接在当前的路径框中输入cmd
,跳转至命令行,再输入java -jar jar包名
结果和用了idea的一样,都可以通过路径访问:http://localhost:8080/books/1
yaml数据格式
- 创建springboot项目时,自动生成的
.properties
文件 .yml
文件.yaml
文件
注: 二三中格式中的参数前面须加空格如:port:
80
根据缩进的多少来确定等级
具体看下图
三种格式不同:
一:
server.port=80
二:
#server:
# port: 81
三:
server:
port: 82
三种格式的文件都进行了配置,则采取哪个呢?按照一二三的顺序进行
日志:root后面的参数不同,运行程序之后的结果也不同
只显示运行成功:
logging:
level:
root: warn
显示端口号等基础的日志:
logging:
level:
root: info
显示所有的日志:
logging:
level:
root: debug
读取yaml型数据
三种方式:
- 直接读取
- 封装进Environment来读取数据
- 封装进自定义的pojo类中进行读取数据
三种方式如下:
只用控制类:
- 第一种方式利用注解
@Value
即可- 第二种方式只需要创建
Environment
对象,并且加上自动装配注解即可实体类和控制类:
- 第三种方式需要先创建一个实体类,其中的属性分别对应配置文件中的属性,再在控制了中直接打印实体类的对象
server:
port: 81
ent:
name: 阿三
age: 15
ai:
- 一
- 二
- 三
logging:
level:
root: info
第三种方式中的实体类:
package com.itjh.pojo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Arrays;
@Component
@ConfigurationProperties(prefix = "ent")
public class entry {
private String name;
private int age;
private String[] ai;
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[] getAi() {
return ai;
}
public void setAi(String[] ai) {
this.ai = ai;
}
@Override
public String toString() {
return "entry{" +
"name='" + name + '\'' +
", age=" + age +
", ai=" + Arrays.toString(ai) +
'}';
}
}
三种方式的控制类如下:看注释
package com.itjh.controller;
import com.itjh.pojo.entry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/books")
public class BookController {
// 方式一,用 注解@Value
@Value("${ent.name}")
private String name;
@Value("${ent.age}")
private Integer age;
@Value("${ent.ai[2]}")
private String gg;
// 方式二: 封装进Environment中
@Autowired
private Environment environment;
// 方式三: 封装进系定义类entry中
@Autowired
private entry entry;
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println("ID======》》》"+id);
// 第一种方式
System.out.println("名字:"+name);
System.out.println("年龄:"+age);
System.out.println("爱好:"+gg);
System.out.println("_______________________________________");
// 第二种方式
System.out.println("姓名:"+environment.getProperty("ent.name"));
System.out.println("年龄:"+environment.getProperty("ent.age"));
System.out.println("爱好之一为:"+environment.getProperty("ent.ai[1]"));
System.out.println("___________________________________________");
// 第三种方式
System.out.println(entry);
return "再一次!好?";
}
}
第一种详解:
第二种详解:
第三种详解:
注意:
实体类上面如果爆红,就在pom.xml
文件中加入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
多环境配置
不同的情况所需要的端口号等等都是不一样的:测试用的,上线之后用的等…
.yaml
和.yml
配置文件:
如果输入
profile
等之后,idea
没有提示,则需要在设置里面设置一下
代码实现:最终端口号是8082
spring:
profiles:
active: test
---
spring:
profiles: pro
server:
port: 8080
---
spring:
profiles: dev
server:
port: 8081
---
spring:
profiles: test
server:
port: 8082
.properties
文件:
分为主文件和分类文件:
主文件:
spring.profiles.active=dev
三个分类文件(根据包的顺序):最终结果用的是8080
server.port=8080
server.port=8082
server.port=8081
命令行启动参数设置
打包成jar包之后,依然可以设置配置类中的参数:打包前最好先clean
一下
然后在文件夹中的路径上输入cmd
打开命令行窗口(这里设置了选择哪一个端口,这里的配置优先级高于jar包中的配置,就是覆盖了):输入java -jar springboot01-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
上面的是根据自己建的配置类来设置的,当然,没有自己创建的也可以:
spring:
profiles:
active: test
---
spring:
profiles: pro
server:
port: 8080
---
spring:
profiles: dev
server:
port: 8081
---
spring:
profiles: test
server:
port: 8082
各种位置的配置的覆盖等级: