
Spring
文章平均质量分 93
尘光掠影
摒弃洋洋洒洒、长篇大论的博客,用最简洁的代码,讲清楚最复杂的道理~
展开
-
spring-security个性化认证流程,自定义登录页面
1. 定义自己的登录页面我们需要根据自己的业务系统构建自己的登录页面以及登录成功、失败处理在spring security提供给我的登录页面中,只有用户名、密码框,而自带的登录成功页面是空白页面(可以重定向之前请求的路径中),而登录失败时也只是提示用户被锁定、过期等信息。在实际的开发中,则需要更精细力度的登录控制,记录错误的日志(错误的次数等)2. 自定义登录页面 配置登录页面的路径 在BrowserSecurityConfig类中配置登录页面的...转载 2021-11-10 14:43:51 · 848 阅读 · 0 评论 -
Spring Cloud Stream微服务消息框架
简介随着近些年微服务在国内的盛行,消息驱动被提到的越来越多。主要原因是系统被拆分成多个模块后,一个业务往往需要在多个服务间相互调用,不管是采用HTTP还是RPC都是同步的,不可避免快等慢的情况发生,系统性能上很容易遇到瓶颈。在这样的背景下,将业务中实时性要求不是特别高且非主干的部分放到消息队列中是很好的选择,达到了异步解耦的效果。目前消息队列有很多优秀的中间件,目前使用较多的主要有 RabbitMQ,Kafka,RocketMQ 等,这些中间件各有优势,有的对 A...转载 2021-11-03 18:07:49 · 614 阅读 · 0 评论 -
Spring Security Oauth2认证源码解析
本文开始从源码的层面,讲解一些Spring Security Oauth2的认证流程。本文较长,适合在空余时间段观看。且涉及了较多的源码,非关键性代码以…代替。准备工作首先开启debug信息:logging: level: org.springframework: DEBUG可以完整的看到内部的运转流程。client模式稍微简单一些,使用client模式获取tokenhttp://localhost:808...转载 2021-08-17 13:44:51 · 2709 阅读 · 0 评论 -
玩转SpringBoot之定时任务详解
目录序言一、静态:基于注解二、动态:基于接口三、多线程定时任务阅读正文:序言使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:一、基于注解(@Scheduled) 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。 三、基于注解设定多线程定时任务一、静态:基于注解基于注解@Scheduled默认为单线程,开启多转载 2020-06-19 15:42:06 · 404 阅读 · 0 评论 -
ApplicationEventPublisher的publishEvent实现异步快速
ApplicationEventPublisher的publishEvent实现异步快速。 首先来一个小demo感受一下spring的自定义异步事件。使用ApplicationEventPublisher的publishEvent来发布事件。如下代码,这里的事件指useridea工具可以识别是事件,我们可以在idea编辑器中看到前面的标示。点一下即可跳转到监听事件中。@Servicepublic class UserEventRegister { @Autowired...转载 2020-06-18 19:11:57 · 5752 阅读 · 0 评论 -
SpringBoot 2.x 封装集成QQ邮箱、网易系邮箱、Gmail邮箱发送邮件
在Spring中提供了非常好用的 JavaMailSender接口实现邮件发送,在SpringBoot的Starter模块中也为此提供了自动化配置。项目源码已托管在:Gitee-SpringBoot_Guide几个名词解释什么是POP3、SMTP和IMAP?详细介绍-请移步至网易帮助文档IMAP和POP3有什么区别?详细介绍-请移步至网易帮助文档什么是免费邮箱客户端授权...转载 2019-10-29 14:25:58 · 1220 阅读 · 0 评论 -
springboot指定访问url接口后缀:*.do或*.action
简介springboot接口url匹配后缀,例如url访问/test,匹配后缀之后,访问/test.*同样可以;项目实践package com.springboot.sixmonth.common.filter;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.sprin...原创 2019-03-21 20:08:58 · 21705 阅读 · 5 评论 -
SpringBoot整合logback日志框架,输出指定日志文件夹
简介log4j和logback都是对日志接口slf4j的实现版本,但logback性能更优,日志处理更迅速,定位更准; SpringBoot已默认整合logback日志框架,适用于大多数场景;实践maven添加依赖(由于springboot已经集成logback日志框架,所以可以直接使用):<!--logback日志框架已经嵌套在springboot框架依赖里面,包含logb...原创 2019-06-28 16:22:48 · 5477 阅读 · 0 评论 -
SpringBoot多数据源配置(hive/mysql)
简介在项目实践中,同一个项目可能需要整合多种数据源,把分散到各个数据库、数据表的数据都查询统计出来; SpringBoot有默认的数据源配置,本篇博客将整合SpringBoot多数据源配置,包括mysql、hive等,通过jdbctemplate或mybatis进行使用; 版本配置(版本可自行选择,这里是博主的测试版本):jdk1.8,springboot1.5.9,hive2.1.1,h...原创 2019-05-20 11:00:42 · 9769 阅读 · 14 评论 -
linux服务器springboot或tomcat项目启动,进行jvm参数调优设置
简介在实验环境或生产环境中,往往一台linux服务器需要添加启动n个项目,但是项目启动占用的jvm内存默认值基本上都是很大的,800m到2G都有,这样很容易将服务器的内存吃垮,从而导致系统强制oom(内存泄露),不留任何情面; 所以,我们在部署项目的时候需要进行jvm参数的调优设置,保证内存使用的稳定性;实践1.首先执行命令:free -h,查询当前的内存占用情况,从下图可看出,内存...原创 2019-05-09 16:50:02 · 8413 阅读 · 0 评论 -
JWT加密以及解密工具类(简洁版)
简介JWT,JSON WEB TOKEN,是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范;该工具类可快速实现jwt秘钥的加密和解密,适用于初学者快速入手;项目实践package com.sixmonth.micro.serv.page.common.jwt;import java.util.Date;import javax.crypto.Secret...原创 2019-03-22 10:31:43 · 15637 阅读 · 2 评论 -
springboot解决跨域问题(CorsConfig )
简介在开发接口的过程中,最令人头疼一件事就是接口项目有跨域问题,导致前端ajax等访问受限,所以在搭建一个接口项目之前首先要解决接口的可能跨域问题;springboot作为常用的接口框架,在解决跨域方面也是非常的方便;项目实践package com.springboot.sixmonth.common.filter;import org.springframework.co...原创 2019-03-21 18:21:10 · 10413 阅读 · 0 评论 -
java项目中如何防止sql注入?
简介SQL注入就是客户端在向服务器发送请求的时候,sql命令通过表单提交或者url字符串拼接传递到后台持久层,最终达到欺骗服务器执行恶意的SQL命令;实践项目中如何防止sql注入呢,有以下三点:前端表单进行参数格式控制; 后台进行参数格式化,过滤所有涉及sql的非法字符;//参考:https://freeman983.iteye.com/blog/1153989//过滤 '...原创 2019-03-07 17:35:38 · 23391 阅读 · 4 评论 -
spring的JdbcTemplate模板类的常用操作
简介Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,主要提供以下五类方法:execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句(即数据定义语言,创建和修改数据表结构、类型、视图、索引等); update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方...原创 2019-03-06 18:51:05 · 895 阅读 · 0 评论 -
SpringCloud Bus消息总线,整合RabbitMQ
在http://blog.youkuaiyun.com/a60782885/article/details/69415527的最后,我们提到了配置的刷新,但是这显然是麻烦的,如果多个服务使用了这个配置,当我们修改配置信息的时候,如果我们希望服务的配置也跟着修改,我们就不得不一个一个服务的发送POST请求,或者关闭服务重新打开。这是一件多麻烦的事情。所以我们在这里使用消息中间件来完成配置的更新问题。目标...转载 2018-12-20 19:30:27 · 852 阅读 · 0 评论 -
spring、springMvc、springBoot和springCloud的联系与区别
spring和springMvc:1. spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;2. springMvc是spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中WE...原创 2018-06-11 19:27:04 · 72947 阅读 · 9 评论 -
Spring Boot+Spring Security+JWT 实现 RESTful Api 权限控制
jwt介绍: JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。jwt认证流程介绍: 1. 用户使用账号和面发出post请求; 2. 服务器使用私钥创建一个jwt; 3. 服务器返回这个jwt给浏览器; 4. 浏览器将该jwt串在请求...转载 2018-07-04 21:31:56 · 2766 阅读 · 1 评论 -
Nginx负载均衡,同时实现session共享
前言:在项目实践中,有时我们需要多台服务器进行负载,以扩展服务器的宽带、增加吞吐量和提高网络数据的处理能力,从而提高用户的体验感,保证项目的质量。当一个项目部署在多台服务器上,我们习惯于使用nginx做负载均衡,这样同一个IP访问项目的时候会被自动分配到不同的服务器上;但是,如果多台服务器的session不同步的话,则会导致很多问题,比如我们的登录状态、用户信息、数字字典等都会归零,都需要...原创 2018-08-23 11:55:07 · 10590 阅读 · 2 评论 -
SpringMvc实现一个账号只能在一个地方登陆,其他地方强制下线
一.前言在处理项目登录问题的时候,为了账号的安全性以及信息的同步性,有时我们需要做到同一个账户只允许在一处地方登录,如果一个账户在一个处地方登录之后,之后在另一个地方也使用同一个账户登录,则前一个登录的账户就强制下线; 做到这种效果的方式有很多种,比如使用redis、memcache等缓存机制就能轻松实现分布式状态下,控制账户登录的单一性; 本篇博客主要讲解的是在不用redis等缓存机...原创 2018-08-28 11:44:34 · 12800 阅读 · 13 评论 -
微服务架构、springCloud组件和概念详解
一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩。 微服务架构需要的功能或使用场景 1:我们把整个系统根据业务拆...转载 2018-09-04 16:59:26 · 322 阅读 · 0 评论 -
微服务springCloud架构案例实战,完整操作流程详解
QuickStart基于SpringCloud体系实现,简单购物流程实现,满足基本功能:注册、登录、商品列表展示、商品详情展示、订单创建、详情查看、订单支付、库存更新等等。每个业务服务采用独立的MYSQL数据库,初期考虑用到如下组件:列表内容 服务注册、发现: eureka 配置管理:spring config , spring security 集群容错: hystrix(待实...转载 2018-09-06 11:18:32 · 1480 阅读 · 0 评论 -
SpringCloud之RestTemplate,几种常见的请求方式
https://github.com/lenve/SimpleSpringCloud/tree/master/RestTemplate在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了一个很好用的对象,叫做RestTemplate,当时我们只使用了RestTemplate中最简单的一个功能getForEntity发起了一个get请求去调用服务...转载 2018-09-17 17:16:31 · 3830 阅读 · 0 评论 -
SpringCloud微服务之间的通讯,Feign和RestTemplate概念实例详解
前言:在springcloud微服务的实际项目开发中,多个微服务之间不仅是相对独立的,而且也是相对关联的;也就是说,微服务之间需要相互访问,多个微服务之间的接口可能会被互相多次调用,我们称之为微服务之间的通信; 微服务之间的通信方式有很多,一般使用以下两种方法:一种是RestTemplate,另一种是Feign;概念简介:RestTemplate,是spring中方便使用rest资源的...原创 2018-09-19 16:20:11 · 8897 阅读 · 0 评论 -
spring的Aspect,Filter、Interceptor、ControllerAdvice区别
1、filter,这是java的过滤器,和框架无关的,是所有过滤组件中最外层的,从粒度来说是最大的。配置方式,有直接实现Filter+@component,@Bean+@configuration(第三方的filter)2、interceptor,spring框架的拦截器配置方式,@configuration+继承WebMvcConfigurationSupport类添加过滤器。3...转载 2018-11-23 10:35:17 · 944 阅读 · 0 评论 -
windows下 安装 rabbitMQ 及操作常用命令
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。1.安装Erlang 所以在安装rabbitMQ之前,需要先安装Erlang 。小编使用的是otp_win64_18.1 ,需要其他版本或...转载 2018-12-19 18:14:25 · 160 阅读 · 0 评论 -
SpringCloud Bus消息总线,整合Kafka
好了现在我们接着上一篇的随笔,继续来讲。上一篇我们讲到,我们如果要去更新所有微服务的配置,在不重启的情况下去更新配置,只能依靠spring cloud config了,但是,是我们要一个服务一个服务的发送post请求,我们能受的了吗?这比之前的没配置中心好多了,那么我们如何继续避免挨个挨个的向服务发送Post请求来告知服务,你的配置信息改变了,需要及时修改内存中的配置信息。这时候我们就不要...转载 2018-12-20 19:27:24 · 3891 阅读 · 3 评论 -
分布式、微服务架构Spring Boot入门及实例介绍
spring boot入门 -- 介绍和第一个例子“越来越多的企业选择使用spring boot 开发系统,spring boot牛在什么地方?难不难学?心动不如行动,让我们一起开始学习吧!”使用Spring boot ,可以轻松的创建独立运行的程序,非常容易构建独立的服务组件,是实现分布式架构、微服务架构利器。Spring boot简化了第三方包的引用,通过提供的starter,简化了依赖包的配...转载 2018-06-04 10:48:30 · 1266 阅读 · 0 评论