Spring Boot
概述
继承了Spring良好基因,青出于蓝而胜于蓝
简化编码
- 起步依赖中封装集成了JavaWeb开发的基本依赖,不用再一个个导入依赖,从而简化了开发
简化配置
- application.yml,配置端口以及其他第三方配置
简化部署
- 内部集成tomcat,启动类一键运行
简化监控
- 使用 spring-boot-starter-actuator 可以用于检测系统的健康情况、当前的Beans、系统的缓存等
项目搭建与结构
环境
-
File -> Project Structure -> SDKs -> JDK home path
-
File->settings ->>搜索maven进行配置
-
File->settings ->>搜索encoding进行配置
- utf-8
创建项目
- IDEA 中可以通过
File->New->Project
来快速构建 Spring Boot 工程记得勾选web
项目结构
-
src/main/java
- 编写主要程序
-
src/main/resources
- 存放静态文件和配置文件
-
src/test/java
- 编写测试程序
Json数据的封装
Spring Boot默认使用自己集成的jackson框架
- null替换为""需要添加一个配置类进行处理
@ResponseBody 返回给前端Json数据
@RequestBody 前端传递过来的Json转化为JavaBean
FastJson 阿里的Json解析框架
fastjson
- 对null值处理需要添加配置类
统一的Json结构
- public class JsonResult {
private T data;
private String code;
private String msg;
}
slf4j简单的日志门面
application.yml 中对日志的配置
- logging:
config: logback.xml
level:
#配置dao层mapper的日志输出级别为:trace
com.soft.dao: trace - 日志输出级别自高到低:ERROR、WARN、INFO、DEBUG、TRACE
logback.xml 配置文件解析
-
1、定义日志输出格式
-
2、控制台输出日志且引用–>1、输出格式
-
3、定义日志文件存储位置
-
4、配置日志文件的详细参数
- 存储位置引用–>3、的配置存储日志
- 日志保存时间
- 单个日志文件的最大,超过则新建日志文件存储
-
5、定义项目中默认日志输出级别
-
6、
- 引用–>2、控制台日志配置
- 引用–>4、定义日志文件的相关参数
使用Logger在项目中打印日志
-
private final static Logger logger = LoggerFactory.getLogger(当前类.class);
-
假设在logback.xml内中配置了日志输出级别为info
-
logger.error("=====测试日志error级别打印====");
-
logger.warn("======测试日志warn级别打印=====");
-
logger.info("======测试日志info级别打印=====");
-
logger.debug("=====测试日志debug级别打印====");
- 输出级别低于info不打印
项目属性配置
1、application.yml
url:
订单微服务的地址
orderUrl: http://localhost:8002
用户微服务的地址
userUrl: http://localhost:8003
- 单个url注入
- @Value("${url.orderUrl}")
private String orderUrl;
- 多个url注入
- 1、引入依赖
- <!-- 引入configuration-processor依赖-->
spring-boot-configuration-processor
- 2、添加MicroServiceUrl 类
- //定义一个 `MicroServiceUrl` 类来专门保存微服务的 url
@Component
@ConfigurationProperties(prefix = “url”)
public class MicroServiceUrl {
private String orderUrl;
private String userUrl;
//需要添加getter和setter
}
- 3.注入MicroServiceUrl类
- @Resource
private MicroServiceUrl microServiceUrl;
- 4、通过microServiceUrl获取url
- 例:microServiceUrl.getOrderUrl()
microServiceUrl.getUserUrl()
server:
port: 8001
server:
port: 8002
-
application.yml
-
指定开发环境
- spring:
profiles:
active:
- spring:
-
dev
-
MVC开发
//不需要转换Json就用@Controller
@RestController
-
控制层注解,内部包含:
- @Controller
- @ResponseBody
//映射请求地址
@RequestMapping
-
可以用于类上也可以用于方法上
-
value 属性:指定请求的实际地址,value 可以省略不写
-
method 属性:指定请求的类型,主要有 GET、PUT、POST、DELETE,默认为 GET
-
produces属性:指定返回内容类型,如 produces = “application/json; charset=UTF-8”
-
此类注解只能用在方法上
- @GetMapping
- @PutMapping
- @PostMapping
- @DeleteMapping
-
获取参数
-
@PathVariable
- //注解主要是获取restfull 风格的url 参数
- //例如:localhost:8080/test/user/2/zhangsan
- @GetMapping(“/user/{idd}/{name}”) //{}里面为占位符
public String testPathVariable(@PathVariable(value = “idd”) Integer id, @PathVariable String name) {
System.out.println(“获取到的id为:” + id+" "+“获取到的name为:” + name);
}
-
@RequestParam
-
支持此类url
-
http://localhost:8080/user?id=1
-
http://localhost:8080/user?idd=1
- @RequestMapping(“/user”)
public String testRequestParam(@RequestParam(value = “idd”, required = false) Integer id) {}
- @RequestMapping(“/user”)
-
post提交
- @PostMapping(“/form1”)
public String testForm(@RequestParam String username, @RequestParam String password) {}
- @PostMapping(“/form1”)
-
-
参数
- required 属性,false为可有可无
- defaultValue 属性:默认值,比较少用,如果没用则没有默认值
-
@RequestBody
- 注解用于接收前端传来Json转化为对应的JavaBean
@Configuration
-
表明该类是个配置类
- @Bean
- @Bean在方法上就是明确地指示了一种方法,什么方法呢——产生一个bean的方法,并且交给Spring容器管理;
集成 Swagger2
导入依赖
- springfox-swagger2
- springfox-swagger-ui
- 需要注意的是Spring Boot对于Swagger2的版本存在兼容性问题,需要根据自己的Spring Boot版本选择对应的Swagger2
添加配置类
-
@Configuration
@EnableSwagger2-
@Bean
public Docket createRestApi() {}-
return new Docket(DocumentationType.SWAGGER_2)
-
.apiInfo(apiInfo())
- 指定构建api文档的详细信息的方法:apiInfo()
-
.select()
-
.apis(RequestHandlerSelectors.basePackage(“com.soft.controller”))
- 指定要生成api接口的包路径,一般把controller作为包路径,生成controller中的所有接口
-
.paths(PathSelectors.any())
-
.build();
-
-
-
private ApiInfo apiInfo() {}
-
构建api文档的详细信息
-
return new ApiInfoBuilder()
-
.title(“Spring Boot集成Swagger2接口总览”)
- // 设置页面标题
-
.description(“学生管理模块接口”)
- // 设置接口描述
-
.contact(“李易尘,” + “lxg5583@163.com”)
- // 设置联系方式
-
.version(“1.0”)
- // 设置版本
-
.build();
- //构建
-
-
-
实体类注解
-
@ApiModel(value = “用户实体类”)
- 注解用于实体类,表示对类进行说明,用于参数用实体类接收。
-
@ApiModelProperty(value = “属性 1”)
- 注解用于类中属性,表示对 model 属性的说明或者数据操作更改。
Controller 类中相关注解
-
@Api(value = “Swagger2 在线接口文档”)
- 注解用于类上,表示标识这个类是 swagger 的资源。
-
@ApiOperation(value = “根据ID获取用户信息”)
- 注解用于方法,表示一个 http 请求的操作。
-
@ApiParam(value = “用户唯一标识ID”)
- 注解用于参数上,用来标