![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringBoot技术点
文章平均质量分 71
SpringBoot所有应用到的技术点,以及一些项目实战的技术讲解
九八年的尾巴
一个愿意分享和倾听的年轻人
展开
-
SpringBoot整合阿里TestMock6.0版本
TestMock简介换种思路写Mock,让单元测试更简单无需初始化,不挑服务框架,甭管要换的是私有方法、静态方法、构造方法还是其他任何类的任何方法,也甭管要还的对象是怎么创建的。写好Mock定义,加个@MockMethod注解,一切统统搞定好吧,上面这段是作者写的,因工作需要没有使用其他Mock框架而使用阿里的,总的来说很简单,但在一开始使用的过程中有坑,而且网上现在资料很少,作者更新的版本也很快,很难解决问题,在这里我也总结一下遇到的一些问题以及使用,感觉不错的话点赞一下,有问题也希望大家及时指出原创 2021-05-11 17:48:52 · 1431 阅读 · 1 评论 -
SpringBoot:整合数据库连接池durid插件以及优化SQL查看查询效果
什么是Druid?Druid是一个高效的数据查询系统,主要解决的是对于大量的基于时序的数据进行聚合查询。数据可以实时摄入,进入到Druid后立即可查,同时数据是几乎是不可变。通常是基于时序的事实事件,事实发生后进入Druid,外部系统就可以对该事实进行查询。Druid采用的架构:shared-nothing架构与lambda架构Druid设计三个原则:1.快速查询:部分数据聚合(Partial Aggregate) + 内存华(In-Memory) + 索引(Index)2.水平拓展能力:分布式数原创 2021-01-31 20:50:34 · 884 阅读 · 0 评论 -
SpringBoot:使用Logback打点日志
1.日志不仅用于排查问题,查看应用运行情况2.更可以用于统计,虽然统计可以通过数据库进行统计,但存在风险,如果用日志,并且建议一个日志系统用于分析为了日后产品大数据分析以及运营人员分析数据3.写日志,可以加缓存buffer,也可以进行异步下面这段xml文件放在resources目录下<?xml version="1.0" encoding="UTF-8" ?><configuration> <!--日志布局 时间格式 日记级别 方法 线程-->原创 2021-01-28 00:54:07 · 442 阅读 · 0 评论 -
SpringBoot:拦截器开启跨域配置
什么是浏览器跨域和springboot怎么解决跨域:浏览器同源策略 1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同"协议相同 http https域名相同 www.xdclass.net端口相同 80 81一句话:浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域浏览器控制台跨域提示:N原创 2020-12-17 14:27:44 · 621 阅读 · 0 评论 -
SpringBoot-Spring-Mybatis事务控制示例讲解
SpringBoot+Spring+Mybatis项目https://start.spring.io/连接打通数据库配置spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=falsespring.datasour原创 2020-12-15 15:25:54 · 289 阅读 · 0 评论 -
SpringBoot:异步任务EnableAsync实战-Future实战
什么是异步异步任务和使用场景举例:好比请求下单,需要校验用户的余额,以及是不是违法用户。还有用户注册,发送验证码,我们需要发验证码,还需要保存数据库,这是一个串行的,发送耗时600ms,保存还需要100ms,这是一个耗时的操作。假如注册,用异步去发送邮件,好比开一个线程。这样就减少了用户的等待时间,也可以提高性能适用于处理log、发送邮件、短信。。。等下单接口>检查库存 1000余额校验 1500风控用户 1000EnableAsync实战使用Step1:启动类里面使用@EnableA原创 2020-12-09 17:46:34 · 482 阅读 · 1 评论 -
SpringBoot:定时任务schedule讲解-多种定时任务配置实战
什么是定时任务,使用场景比如八月十五,定时任务会轮询,加载到任务区里面,去检测比如电商系统,下单量、访客、交易量,用于数据分析某个时间定时处理某个任务发邮件、短信等消息提醒订单通知统计报表系统…常见定时任务Java自带的java.util.Timer类配置比较麻烦,时间延后问题,有些BUGQuartz框架: 配置更简单,xml或者注解适合分布式或者大型调度作业,功能很强大SpringBoot框架自带,很便捷SpringBoot使用注解方式开启定时任务启动类里面 @Ena原创 2020-12-09 17:45:20 · 608 阅读 · 0 评论 -
SpringBoot:拦截器:配置用户登陆拦截实战
拦截器和和Filter过滤器的区别Filter和Interceptor二者都是AOP编程思想的体现,功能基本都可以实现拦截器功能更强大些,Filter能做的事情它都能做Filter在只在Servlet前后起作用,而Interceptor够深入到方法前后、异常抛出前后等filter依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器所以可以运行在多种环境。在接口调用的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一原创 2020-12-03 15:35:36 · 465 阅读 · 0 评论 -
SpringBoot:拦截器:servlet注解Listener常用监听器
什么是监听器?好比是一个监控,有一个保险柜,小偷来偷东西,只要一开保险柜的门就会报警监听器:应用启动监听器:监听应用是否启动,一启动就会触发一次会话监听器:比如一个用户打开浏览器,调用接口,也会触发对应的监听请求监听器:用户发一次请求就触发对应的监听作用ServletContextListener 应用启动监听:数据初始化等HttpSessionLisener 会话监听:监听当前所在人数ServletRequestListener 请求监听:想监听每一请求常用的监听器 S原创 2020-12-03 15:34:33 · 169 阅读 · 0 评论 -
SpringBoot:过滤器:Servlet的注解原生Servlet实战(3)
javaweb的使用doPost和doGet方法使用Servlet3.0替代更轻量级@WebServlet(name = "userServlet",urlPatterns = "/api/v1/test/customs")//一定要以/开头public class UserServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse r..原创 2020-11-29 23:32:25 · 99 阅读 · 0 评论 -
SpringBoot:过滤器:使用新版Servlet注解开发自定义Filter-用户未登陆json错误码提示实战(2)
使用Servlet3.0的注解进行配置步骤这是现在Springboot使用过滤器最多的方式场景:权限控制、用户登录状态控制,也可以交给拦截器处理等Step1:启动类里面增加 @ServletComponentScan,进行扫描Step2:新建一个Filter类,implements Filter,并实现对应的接口Step3:@WebFilter 标记一个类为filter,被spring进行扫描Step4:urlPatterns:拦截规则,支持正则Step5:控制chain.doFilter原创 2020-11-29 23:20:03 · 494 阅读 · 0 评论 -
SpringBoot:过滤器:过滤器讲解(1)
SpringBoot2.X过滤器讲解什么是过滤器filter简单理解:人—>检票员(filter)—> 景点SpringBoot2.X里面的过滤器ApplicationContextHeaderFilterOrderedCharacterEncodingFilterOrderedFormContentFilterOrderedRequestContextFilter那么多过滤器,哪个优先级高呢?Ordered.HIGHEST_PRECEDENCE Ordere原创 2020-11-29 23:17:19 · 187 阅读 · 0 评论 -
SpringBoot:异常处理:自定义全局异常返回页面处理
为什么要配置全局异常?比如代码中逻辑有问题、空指针、io等异常、页面就不能获取到数据了Step1:先演示一下正常返回异常@RestController@RequestMapping("api/v1/pub/test")public class TestController { @GetMapping("ExTest") //这里的Dto是我自定义的一个返回消息类 大家可以改为void public Dto testExt(){ int i = 1/..原创 2020-11-29 20:23:05 · 1752 阅读 · 0 评论 -
SpringBoot:单元测试:MockMvc案例实战调用Controller层API接口(3)
MockMvc:相当于http客户端、断言、响应等之前讲的是调用controller层或service层方法,但是对外使用时是一个url,以域名加端口路径的方式返回接口的,使用mockMvc也可以模拟路径来进行测试如何测试Controller对外提供的接口增加类注解 @AutoConfigureMockMvc注入一个MockMvc类相关API :perform执行一个RequestBuilder请求andExpect:添加ResultMatcher->MockMvcResultMa原创 2020-11-29 16:18:57 · 966 阅读 · 0 评论 -
SpringBoot:单元测试:实战单元测试调用Controller-service层接口(2)
案例实战Controller层登陆方法测试具体方法看不懂的小伙伴可看之前的get、post请求文章,这里只做具体调用讲解@RunWith(SpringRunner.class)@SpringBootTest(classes={ProjectApplication.class})public class UserTest { //注入controller @Autowired private UserController userController; /**原创 2020-11-29 16:11:56 · 4261 阅读 · 0 评论 -
SpringBoot:单元测试:初步使用(1)
单元测试实战引入依赖<!--springboot程序测试依赖,如果是自动创建项目默认添加--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><depe原创 2020-11-29 16:08:40 · 123 阅读 · 0 评论 -
SpringBoot:配置文件:常见配置文件形式以及注解配置文件映射属性和实体类实战
常见的配置文件格式xml、properties、json、yamlSpringboot里面常用xx.ymlYAML(Yet Another Markup Language)写 YAML 要比写 XML 快得多(无需关注标签或引号) 使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目注意:key后面的冒号,后面一定要跟一个空格,树状结构对象里面的子对象 子对象形式server: port: 8080 //设置启动端口号为8080 h..原创 2020-11-29 15:48:51 · 438 阅读 · 0 评论 -
SpringBoot:热部署介绍:结合dev-tool实现IDEA项目热部署实战
什么是热部署?像之前代码中添加一个注解或改了一小段代码就需要重启一段代码一定不要线上使用热部署,如果黑客攻击很轻易就修改程序了什么是热部署应用正在运行的时候升级功能, 不需要重新启动应用对于Java应用程序来说, 热部署就是在运行时更新Java类文件好处:不需要重新手工启动应用,提高本地开发效率常见实现热部署的方式JrebelSpring Loadedspring-boot-devtools(SpringBoot自带热部署)一:pom文件添加依赖<depende原创 2020-11-22 22:19:05 · 148 阅读 · 0 评论 -
SpingBoot:RequestBody对象数组提交接口开发
简介:讲解JSON对象提交,批量插入接口开发POST请求-RequestBody方式场景:json对象映射,数组对象提交接口开发注解:@PostMapping = @RequestMapping(method = RequestMethod.POST)开发功能:新增视频json对象,章数组提交就是对象类以集合的形式套对象一:章节实体类/** * 章对象 */public class Chapter { private int id; priva..原创 2020-11-22 21:51:11 · 294 阅读 · 0 评论 -
SpringBoot:定制JSON字段(日期格式、字段重命名、空值不返回、字段不显示等)以及反序列化操作
在测试时发现有一些时间返回格式不对,或字段名不规范等,还有就是空值字段显示,我们都可以实现自定义的形式来返回数据常用框架 阿里 fastjson,谷歌gson等JavaBean序列化为Json,性能:Jackson > FastJson > Gson > Json-lib 同个结构Jackson、FastJson、Gson类库各有优点,各有自己的专长空间换时间,时间换空间jackson处理相关自动指定字段不返回:@JsonIgnore比如用户密码是不需要原创 2020-11-22 21:42:36 · 1922 阅读 · 0 评论 -
SpringBoot:HTTP接口:POST请求发送json数据以对象形式接收用户登陆实战
POST请求-form表单场景:表单提交,如果不用细分PUT/DELETE方法,则都可以用POST注解:@PostMapping = @RequestMapping(method = RequestMethod.POST)开发功能:账号密码提交登录接口,form表单形式问题:提交数据参数特别多,难道要在方法上写很多参数么?用一个对象去包装数据一:用户实体类/** * 用户类 */public class User implements Serializable { ..原创 2020-11-22 21:38:19 · 4612 阅读 · 2 评论 -
SpringBoot:HTTP接口:GET请求实战以及统一接口返回状态码
GET请求场景:一般的查询接口就是get请求GET请求参数会出现在浏览器地址上注解:@GetMapping = @RequestMapping(method = RequestMethod.GET)一个顶两的注解@GetMapping = @RequestMapping(method = RequestMethod.GET)@PostMapping = @RequestMapping(method = RequestMethod.POST)@PutMapping = @Reques..原创 2020-11-22 21:23:56 · 1613 阅读 · 0 评论 -
SpringBoot:开发规范:启动类位置常见形式以及启动方式讲解和部署以及jar里目录结构讲解
注意启动的位置,Application启动类位置三种形式 1.当前启动类和controller在同一类中时,在该类上添加注解@Controller即可 2.当启动类和controoler分开时,启动类要放在根目录下,启动类上只需要注解@SpringBootApplicaion; 3.当启动类和controller分开时,如果启动类在非根目录下,需要在启动类中添加注解@ComponentScan,并配置需要扫描的包名,如(basePackages = )@ComponentScan(baseP原创 2020-11-22 19:49:50 · 706 阅读 · 0 评论 -
SpringBoot:开发规范:目录文件结构解读和静态资源访问配置
目录讲解src/main/java:存放代码src/main/resources:资源文件static: 存放静态文件,比如 css、js、image, (访问方式 http://localhost:8080/js/main.js)templates:存放静态页面jsp,html,tplconfig:存放配置文件,application.propertiesresources:同个文件的加载顺序,静态资源文件 Spring Boot 默认会挨个从META/resources &..原创 2020-11-22 19:47:16 · 281 阅读 · 0 评论 -
SpringBoot:常用注解讲解
注解:无非就是反射扫描@Controller 用于标记这个类是一个控制器,返回页面的时候使用;如果要返回JSON则需要在接口上使用@ResponseBody注解才可以@RestControoler 用于标记这个类是一个控制器,返回JSON数据的时候使用,如果使用这个注解,则接口返回数据会被序列化为JSON所以RestControoler=@Controller+@ResponseBody@ResquestMapping 不显示请求方式 post或get 路由映射,用于类上做一级路径原创 2020-11-22 19:37:59 · 167 阅读 · 0 评论 -
SpringBoot开发第一个JSON接口及使用注意事项
创建启动类模拟接口数据测试Controller控制层PostMan工具可去百度下载,非常好用的接口测试工具 作用:模拟浏览器请求,以get方式请求浏览器还好,但如果想用post请求呢?可以拼装参数和格式化json响应结果博主工具使用心得不要一上来就测试接口,你测试的路径多了之后就发现以前测试的路径找不到了,很乱,我这里用创建项目的方式,可以保存测试接口路径,关闭后打开还是原来的路径创建目录创建项目后点击Add requests 创建接口就可以了,也是可以输入中文名称参数详解原创 2020-11-22 19:35:59 · 347 阅读 · 0 评论 -
SpringBoot和SpringCloud微服务的关系及SpringBoot介绍和环境依赖以及Maven项目创建
一:两者是相辅相成的,SpringCloud是基于SpringBoot将服务注册在注册中心,服务之间调用,无非就是多了几个注解,配置有些不一样,别的也没什么大话微服务单体应用初期应用功能少,随着时间推移功能增加版本迭代,代码增加开发速度慢启动时间长依赖庞大微服务随着功能的增加按照模块拆分 比如-订单服务-商品服务-文件服务等等。每个服务的职责明显,某一个服务挂了不影响其它服务。易开发,理解和维护独立的部署和启动问题:分布式系统》分布式事务问题。需要管理多个服务》服务治理二:原创 2020-11-22 19:36:06 · 452 阅读 · 0 评论