目录
目录
springboot
1.什么是springboot
springboot提供了一站式的解决方案,可以快速创建spring的应用,内嵌了tomcat服务器,提供了可选的starter,比如说web的starter,导入所有的依赖;还有自动配置,按需配置,约定大于配置;提供生生产级别的特性,监控指标,健康监控,外部化配置不需要源码改变;
2.springboot开发步骤
- 创建项目:创建maven的工程,继承parent的父工程(所有的springboot项目必须继承spring-boot-starter-parent)
- 导入依赖:导入web需要的starter;
- 主程序:创建启动类(加上@springbootApplication)
- 运行run方法;
- 打包:当然springboot也提供了打包插件,(spring-boot-maven-plugin插件)
- 支持外部化配置:
3.springboot优点
- 简化整合;starter
- 简化配置:yml的配置文件;
- 简化部署:打包成jar包,linux有Java环境就可以启动;
- 简化运维:修改配置,健康检查等
4.springboot的依赖管理
web-starter 会根据maven的传递性,导入所有的依赖,而且不需要写版本号,是因为每个项目都继承parent项目,里面有依赖管理,dependencymangement;
5.自动化配置
yml中的属性会和配置文件类绑定;
按需加载,导入web的starter,回到导入所有starer的基础springboot-starter,有一个autoconfigure
的包,包中有所有场景的自动配置类;
6.注解
@import导入第三方的类进入容器;
@configuration配置类
@conditionon***条件注解:conditionOnClass
7.属性绑定
配置文件中通过@bean和@configurtionProperties(prefix = "pig");(pig开头)
然后通过配置文件绑定比如:pig.id =2,pig.name = 佩奇;
或者:
@enableconfigurtionProperties
8.自动配置原理
- 首先导入web-stater,里面有核心的starter导入了autoconfigure包;
- 主程序的espringbootapplication由三个注解组成的:
-
@SpringBootConfiguration配置类 @ComponentScan包扫描的规则
- @EnableAutoConfiguration开启自动配置:
- 通过@import批量导入组件,根据MATA-INF/spring下的autoconfigure文件按需加载;因为有条件注解conditionOnClass,也就是只有导包之后才生效;
- 每个配置类中都有@enableconfigurtionProperties绑定配置文件类;
-
9.日志
springboot的日志支持,logf4j2和logback,默认是logback,也是在核心的starter中导、入了loging的包,
10.web开发
mata-INF/spring/的配置类都绑定了配置文件类
- springMVC的是spring.mvc
- web的通用是spring.web;
- 文件上传的是spring.servlet.multtipart;
- 服务器配置是server
静态资源规则:
也就是在类路径
11.内容协商
- 一套系统适配多个客户端,
- 可以通过请求头accept:,也可以通过请求行/person?format=json或者format=xml
- 默认开启请求头内容协商
- spring.mvc.contentnegotiation.favor-parameter=true(开启请求参数的内容协商)
11.错误处理机制:
自动配置类是ErrorMvcAutoConfiguration
一般情况下,SpringMVC定义一个全局处理异常类
@ControllerAdvice
public class GlobalEx {
@ResponseBody
@ExceptionHandler(Exception.class)
public String handlerEx(Exception e){
return e.getMessage();
}
}
服务器内部错误,会走自定义的异常处理,比如说controller中出现10/0;
数据整合:
- 创建mapper接口和mapper.xml,
- 在springboot上标注@MapperScan(basePackages = )(告诉mapper接口在哪里)
- 配置文件中mybatis: mapper-locations: classpath:/mapper/*.xml(告诉xml在哪里)
- mybatis: configuration: map-underscore-to-camel-case: true(驼峰命名规则)
基础特性
12.profiles环境隔离
- 区分环境:(dev)开发,(test)测试,(prod)上线;
- 步骤:
- 标识环境:@profile({"dev"})
- 激活环境:配置文件中 profiles: active: dev
- 配置文件:配置文件application-yml;
- application-dev.yml
13.外部化配置
优先级:命令行>yml>属性参数(springbootapplication)
包外的>包内的(同级情况下比如都在包内:profile>默认的配置)
14.单元测试
测试类必须和主程序启动类同包;
场景整合:
- swagger(openAPI规范)
- 使用openAPI架构
-
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.2.0</version> </dependency>
-
比如说@Operation(description = "这是删除的方法")
远程过程调用
不同机器的服务相互调用,服务提供者和消费者通过请求响应的方式相互作用;
可以使用 dubbo,GRPC,或者cloud
面试题 :
API和SDK的区别:SDK是开发工具包,本地jar包,API远程接口;
web安全
15.springsecurity整合
- 认证
- 授权
- 攻击防护
- xss跨站脚本攻击
- CSRF跨站请求伪造
- CORS跨域请求共享
- SQL注入