随笔分类 -  Spring Boot

摘要:上一篇中使用的Guava Cache,如果在集群中就不可以用了,需要借助Redis、Zookeeper之类的中间件实现分布式锁。 导入依赖 在pom.xml中需要添加的依赖包:stater-web、starter-aop、starter-data-redis 属性配置 CacheLock注解 Cac 阅读全文
posted @ 2018-06-15 18:05 海盗船长 阅读(686) 评论(0) 推荐(0)
摘要:平时开发中,有时会双击提交表单造成重复提交,或者网速比较慢时还没有响应又点击了按钮,我们在开发中必须防止重复提交 一般在前台进行处理,定义个变量,发送请求前判断变量值为true,然后把变量设置为false,可以防止重复提交问题。如果前台没有做这个控制那就需要后端来处理 Lock 注解 创建一个Loc 阅读全文
posted @ 2018-06-15 16:49 海盗船长 阅读(1498) 评论(0) 推荐(0)
摘要:曾经参数的验证是这样的: 随着参数的增加,格式的变化,校验数据有效性的代码愈发繁琐。 通过Spring boot来完成参数数据校验。 JSR-303注解介绍 这里只列举了javax.validation包下的注解,同理在spring-boot-starter-web包种也存在hibernate-va 阅读全文
posted @ 2018-06-15 15:17 海盗船长 阅读(921) 评论(0) 推荐(0)
摘要:文件上传 上传文件和下载文件是Java Web中常见的一种操作,文件上传主要是将文件通过IO流传输到服务器的某一个文件夹下。 导入依赖 在pom.xml中添加上spring-boot-starter-web和spring-boot-starter-thymeleaf的依赖 配置文件 默认情况下SPr 阅读全文
posted @ 2018-06-15 12:19 海盗船长 阅读(774) 评论(3) 推荐(0)
摘要:使用场景:数据定时增量同步,定时发送邮件,爬虫定时抓取 定时任务概述 定时任务:顾名思义就是在特定/指 定的时间进行工作,比如我们的手机闹钟,他就是一种定时的任务。 实现方式: 1.Timer:JDK自带的java.util.Timer;通过调度java.util.TimerTask的方式 让程序按 阅读全文
posted @ 2018-06-14 17:35 海盗船长 阅读(623) 评论(0) 推荐(0)
摘要:在上一篇中,通过restful api的方式查看信息过于繁琐,也不直观,效率低下。当服务过多的时候看起来就过于麻烦,每个服务都需要调用不同的接口来查看监控信息。 SBA SBA全称spring boot admin 是一个管理和监控spring boot 应用程序的开源项目,分为admin-serv 阅读全文
posted @ 2018-06-14 16:54 海盗船长 阅读(3413) 评论(0) 推荐(0)
摘要:actuaotr是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节。 Endpoints actuator的核心部分,它用来监视应用程序及交互,spring-boot- 阅读全文
posted @ 2018-06-14 16:07 海盗船长 阅读(36840) 评论(0) 推荐(0)
摘要:延迟消息就是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。 延迟队列 订单业务: 在电商/点餐中,都有下单后30分钟内没有付款,就自动取消订单。 短信通知:下单成功后60s之后给用户发送短信通知。 失败重试:业务操作失败后,间隔一定的时间进行失败重 阅读全文
posted @ 2018-06-13 15:08 海盗船长 阅读(676) 评论(0) 推荐(1)
摘要:MQ全程(Message Queue)又名消息队列,是一种异步通讯的中间件。可以理解为邮局,发送者将消息投递到邮局,然后邮局帮我们发送给具体的接收者,具体发送过程和时间与我们无关,常见的MQ又kafka、activemq、zeromq、rabbitmq等等。 RabbitMQ RabbitMQ是一个 阅读全文
posted @ 2018-06-13 12:03 海盗船长 阅读(926) 评论(0) 推荐(0)
摘要:Spring 3.1引入了基于注解(annotation)的缓存(cache)技术,它本质不是一个具体的缓存实现方案,而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的个助攻annotation,就能够达到缓存方法的返回对象的效果。 特点 具备相当好的灵活性,不仅能够使用SpEL来定义缓存的 阅读全文
posted @ 2018-06-08 18:12 海盗船长 阅读(511) 评论(0) 推荐(0)
摘要:Spring Boot除了支持常见的ORM框架外,更是对常用的中间件提供了非常好的封装,随着SpringBoot2.x的到来,支持的组件也越来越丰富,也越来越成熟,其中对Redis的支持不仅仅是它丰富的API,更是替换掉了底层Jedis的依赖,取而代之的是Lettuce。 Redis Redis是一 阅读全文
posted @ 2018-06-08 16:38 海盗船长 阅读(7324) 评论(3) 推荐(1)
摘要:除了使用拦截器、过滤器实现对没有权限访问的页面跳转到登陆页外,还可以通过框架实现:Spring Security。 使用Spring Security 完成登陆验证: 1.pom.xml添加依赖 2.创建spring security的配置类WebSecurityConfig.java 新增登陆请求 阅读全文
posted @ 2018-06-04 18:10 海盗船长 阅读(337) 评论(0) 推荐(0)
摘要:使用swagger可以与spring mvc程序配合组织出强大的restful api文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入现实代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外swagger2也提供了强大的也卖弄测试功能来调试每个r 阅读全文
posted @ 2018-06-01 17:14 海盗船长 阅读(265) 评论(0) 推荐(0)
摘要:动态资源和静态资源 拦截器可以算是aop的一种实现,专门拦截对动态资源的后台请求,也就是拦截对控制层的请求,主要用于判断用户是否有权限请求后台。拦截器不会拦截静态资源,如spring boot默认静态目录resources/static。请求期目录下的html,js,img都不会被拦截。将一些静态资 阅读全文
posted @ 2018-05-31 11:11 海盗船长 阅读(505) 评论(0) 推荐(0)
摘要:servlet、filter、listener,在spring boot中配置方式有两种:一种是以servlet3开始提供的注解方式,另一种是spring的注入方式。 servlet注解方式 servlet3.0以前,servlet、filter、listener需要在web.xml中配置,从ser 阅读全文
posted @ 2018-05-31 10:56 海盗船长 阅读(384) 评论(0) 推荐(0)
摘要:通常我们在某网站发送邮件验证码时,首先会提示验证码已发送,然而此时可能没有收到验证码,过几秒种才真正的收到。如果是同步会先验证发送是否成功然后再通知,如果是异步可以先通知用户已发送,并释放请求,然后再去异步处理。 @Async和@EnableAsync实现异步 控制层 服务层 同步:这是在一个控制层 阅读全文
posted @ 2018-05-31 10:31 海盗船长 阅读(324) 评论(0) 推荐(0)
摘要:添加依赖 在application.yml中设置发送账号 简单发送 发送含附件的 阅读全文
posted @ 2018-05-30 17:19 海盗船长 阅读(216) 评论(0) 推荐(0)
摘要:Spring Boot 内部采用的是Commons Logging进行日志记录,但是在底层为Java Util Logging、Log4J2、Logback等日志框架提供了默认配置。 logback 虽然spring boot有很多可用的日志框架,一般来说,使用spring boot 默认的logb 阅读全文
posted @ 2018-05-30 16:26 海盗船长 阅读(2032) 评论(0) 推荐(0)
摘要:继承spring-boot-parent 要成为一个spring boot项目,首先就必须在pom.xml中继承spring-boot-starter-parent,同时制定其版本 环境参数 在普通的maven项目中,需要在pom.xml中配置插件来修改jdk版本,utf-8编码等环境参数,在spr 阅读全文
posted @ 2018-05-30 15:22 海盗船长 阅读(513) 评论(0) 推荐(0)
摘要:数据源配置源码 这里截取org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration的部分源码,主要介绍Tomcat和Hikari连接池如何自动配置切换,其他数据源配置也是一样的原理 Hikari数据源配置,注解意思同上 默 阅读全文
posted @ 2018-05-30 15:02 海盗船长 阅读(702) 评论(0) 推荐(0)