使用jwt、拦截器与threadlocal实现在任意位置获取token中的信息,并结合自定义注解实现对方法的鉴权-编程思维

1. 简介 1.1 JWT JWT,即JSON Web Token,是一种用于在网络上传递声明的开放标准(RFC 7519)。JWT 可以在用户和服务器之间传递安全可靠的信息,通常用于身份验证和信息交换。 声明(Claims): JWT 包含一组称为声明的信息,声明描述了一些数据。有三种类型的声明: 注册声明(Registered Claims):这是一些预定义的声明,包括标准的声明,例如"

一篇文章让你理解:什么是spring???-编程思维

背景 市场上,随便一个Java工程师的招牌要求上,都可以看到SSM、Spring、SpringMVC...类似字样。这玩意到底是个啥? 这是中邮消费招聘的岗位要求,可以看到第3点: 3、熟悉Struts/Spring/SpringMVC/... 对于Java开发这来说,Spring就像是我们吃饭要用的筷子一样,有着很强的实用性。 所以,我们在这先热个身,简单了解一下。 介绍 什么是Spring

解决idea中.properties文件中文变问号(???)的问题(已解决)-编程思维

问题背景 构建SpringBoot项目时,项目结构中有一个application.properties文件。这个项目是Spring Boot一个特有的配置文件。内容如下(我写了一些日志的配置): 写到这刚好到饭点,我打算回来吃个饭继续写,于是关闭了IDEA 当我吃完回来打开电脑,发现刚写的代码变成这样: 玛德,我汉字呢??? 解决办法 于是我立刻百度,于是在众多方法中找到一个简单有效的方法:

rest风格开发-编程思维

Rest简介 REST (Representional State Transfer) 表现形式状态转换(资源描述风格) 传统风格资源描述形式 http://localhost/user/getById?id=1 http://localhost/user/saveUser REST风格描述形式 http://localhost/users/1 http://localhost/u

mybatis-plus学习笔记-编程思维

官方介绍 mybatis-plus可以理解为加强版的mybatis,可以帮我们减少编写mapper中简单的sql语句,你可以理解为IPhone13 和 IPhone13 Plus 官网是这么说的:MyBatis-Plus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 并且还列出了以下特性: 无侵入:只做增强不做改变

解决maven中90%的依赖(导包)问题-编程思维

今天给大家分享一个非常好用的技巧,这个技巧是一个组合技巧 是的,自从我开始接触了以spring为框架的项目学习后,这个maven导包老是出现问题,每次在这个上面花费好多时间,于是乎打算写一个秘籍出来。 你可能会遇到这样的问题 这玩意咋红了,看人怪吓人的 接下来这个我们来看看有什么解决办法,下面办法将会从简到难进行介绍 一.你是不是没有reload? 首先我们得知道,在maven所带的.pom文

【spring】事务实现原理-编程思维

在使用事务的时候需要添加@EnableTransactionManagement注解来开启事务,Spring事务底层是通过AOP来实现的,所以启用事务后,同样会向容器中注入一个代理对象创建器,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,事务使用的是InfrastructureAdvisorAutoProxyCreator。 Advice通知:定

【spring】aop实现原理-编程思维

注册AOP代理创建器 在平时开发过程中,如果想开启AOP,一般会使用@EnableAspectJAutoProxy注解,这样在启动时,它会向Spring容器注册一个代理创建器用于创建代理对象,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,它实现了SmartInstantiationAwareBeanPostProcessor,从名字中可以看出这是一个

spring-ioc中allowbeandefinitionoverriding、allowcircularreferences属性-编程思维

一、属性介绍   allowBeanDefinitionOverriding:设置是否允许具有相同名称的Bean来覆盖之前的Bean   在同一个配置文件中定义两个相同的Bean,编译器就会直接报错,但是我们可以在不同的配置文件中定义两个相同的Bean,这种情况下编译器是允许的,例如 ioc01.xml中定义了一个 id=person的Bean,ioc02中也定义了一个相同的id=person的

spring bean属性 abstract、parent-编程思维

abstract 英文含义是抽象的意思,在 java 中用来修饰类代表的意思是该类为抽象类,不能被实例化,而 Spring 中 bean 标签里的 abstract 的含义也是差不多,该属性的默认值是 false ,表示当前 bean 是一个抽象的 bean 不能被实例化,那么这就有问题了,既然一个 bean 不能被实例化,那么这个 bean 存在的意义是什么? Spring 之所以这么设计,必

spring bean 标签 id 和 name 属性-编程思维

一、前言 在 Spring 容器中每个 bean 对象都有一个唯一的名字 (beanName) 和 0 个或者多个别名 (aliases) 如果我们想从 IOC 容器中获取 bean 对象,那么我们可以通过 beanName 获取,也可以通过别名获取 beanFactory.getBean("beanName or alias"); 下面我们就从源码的角度看一下我们平常在 bean 标签中

spring factorybean 源码分析-编程思维

一、FactoryBean的作用 Spring 中有两种 bean ,一种是普通 bean ,另外一种则是 FactoryBean. 普通 bean 返回的是指定类的一个实例对象,而 FactoryBean 则不同,它返回的对象不是某一个指定类的实例对象,而是该 FactoryBean 的 getObject() 方法所返回的对象,创建出来的对象是单例还是多例,由 FactoryBean 的 i

springioc基于注解创建对象和注入属性-编程思维

一、Spring注解方式创建对象   Spring针对Bean对象的创建提供了以下注解:@Component、@Controller、@Service、@Repository,早期Spring对于创建Bean对象支持的注解只有@Conmpnent,但是这样就会带来一个麻烦,因为你的视图层、业务层、以及持久化层都使用@Component来进行Bean对象的创建,这样程序员很容易搞混乱,不能直接通过

spring aop概述-编程思维

一、什么是AOP   AOP(Aspect Oriented Programming):面向切面编程,简单的来说AOP就是在程序运行过程中将某段代码动态的切入到指定方法的指定位置进行运行,即在不影响原来业务逻辑的基础上扩展新的功能.   二、为什么需要使用AOP   AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性

spring @configurationproperties yaml语法配置list和map:list、list、list>、map、map>、map、map> -编程思维

yaml语法 数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。 例子: 配置类 YmalConfig: import cn.hutool.json.JSONUtil; import lombok.Data; import org.springframework.boot.context.proper

spring boot整合oauth2实现github第三方登录-编程思维

Github OAuth 第三方登录示例 1、第三方登录原理 第三方登录的原理是借助OAuth授权来实现,首先用户先向客户端提供第三方网站的数据证明自己的身份获取授权码,然后客户端拿着授权码与授权服务器建立连接获得一个Access Token,之后客户端就可以通过Access Token来与资源服务器进行交互。 使用OAuth的好处是提供给用户一个特定的密钥,用户持有这个密钥可以访问应用中的任何

【spring】beanpostprocessor后置处理器-编程思维

BeanPostProcessor后置处理器是Spring提供的一个扩展点,可以在Bean初始化前后做一些事情,注意这里是bean的初始化,不是实例化,BeanPostProcessor是一个接口,里面提供了两个方法,分别为postProcessBeforeInitialization(初始化之前)和postProcessAfterInitialization(初始化之后),在方法入参中有两个参

spring事务失效-编程思维

最近在做spring 项目中突然发现事务在遇到异常是没有回滚而是提交了,在查了大量的资料之后,算是有了一点头绪,写下来方便以后查找: 前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务定义,且网上的一种通过BeanPostProcessor的解决方案是存在问题的。因此专门写此篇帖子分析why。 1、预备知识 aop概念请参考【http://www.iteye.com/topic/

spring mvc使用interceptor做用户登录判断-编程思维

在任何一个项目中,我们必须要用到的就是用户登录,那么就少不了用户是否登录的判断,如果我们每一个请求都要去做一次判断,那么就会变得很麻烦,但我们复制粘贴的时候我们就要考虑我们的代码写的是不是有问题,是不是可以重构一下,这里借鉴一下项目中的这种模式: package interceptor; import javax.servlet.http.HttpServletRequest; impor