spring/springboot/springcloud
文章平均质量分 71
march of Time
程序媛一枚
展开
-
spring的InitializingBean接口、DisposableBean接口
本文介绍spring中与bean有关的一些接口。原创 2023-07-20 15:26:13 · 183 阅读 · 0 评论 -
springboot自定义cookieHttpSessionIdResolver
在上面的代码中,SessionConfig 类定义了一个名为 httpSessionIdResolver 的 Spring Bean,这是我们自定义的 Session ID 解析器。HttpSessionIdResolver 可以获取该会话 ID,并将其用于各种目的,例如在集群环境中跟踪用户会话,处理会话 ID 上的安全性等。这样一来,通过配置我们的 CustomSessionIdResolver,我们已成功实现了 Spring Boot 中自定义 Session ID 的场景。原创 2023-03-14 15:52:24 · 992 阅读 · 1 评论 -
springboot给方法参数加注解判断当前登录用户
自定义注解:LoginUser。原创 2022-10-05 16:59:47 · 651 阅读 · 0 评论 -
spring security自定义ServerWebExchangeMatcher设置无需认证的url
spring security匹配请求路径的功能是由 PathPatterParserServerWebExchangeMatcher 来实现的。它会拦截请求路径,并且提取请求路径的参数。它有一个方法matches用来判断请求是否匹配。原创 2022-09-11 11:30:09 · 1313 阅读 · 0 评论 -
Springboot操作mongodb的两种方法:MongoTemplate和MongoRepository
框架中使用jpa+mongodb,这里记录两种方法操作mongodb,一个是使用mongoTemplate:实体类:使用mongoRepository的方法:如果是一些复杂的情况如聚合,则需要自己写聚合语句:例如:关于聚合:文档进入多阶段管原创 2022-09-03 13:17:55 · 1399 阅读 · 0 评论 -
springboot使用PostConstruct和Scheduler执行定时任务、暂停定时任务、手动运行定时任务
使用schedule执行定时任务、暂停任务、手动触发任务原创 2022-07-17 16:21:30 · 1860 阅读 · 0 评论 -
springcloud项目配置自定义feign请求拦截器
添加自定义的feign请求拦截器原创 2022-07-15 11:22:37 · 1149 阅读 · 0 评论 -
微服务秒杀项目整合网关+feign+redis分离热点商品分别下单示例
思路:对于普通商品进行正常下单(直接减去数据库中的库存然后生成订单,对于热点数据加一层redis缓存层,商品放在redis中,用分布式锁加锁,然后可以放入消息队列中排队下单,下单时先检查Redis中库存量是否足够,成功了才减去数据库库存)在这里还使用了feign用来远程调用服务和网关拦截请求。下面是代码:/配置文件和通用文件@Configurationpublic class RedisConfig { /*** * 模板操作对象序列化设置 * @param red原创 2022-02-22 13:43:22 · 1030 阅读 · 1 评论 -
springsecurity登录后返回token字符串和刷新token代码实例
文章目录1.登录接口(登陆成功则返回token)2.登录方法3.刷新token的接口4.生成token和刷新token的工具类1.登录接口(登陆成功则返回token)yml文件:jwt: tokenHeader: Authorization #JWT存储的请求头 secret: mall-admin-secret #JWT加解密使用的密钥 expiration: 604800 #JWT的超期限时间(60*60*24*7) tokenHead: 'Bearer ' #JWT负载中拿到原创 2022-02-04 18:42:17 · 4121 阅读 · 0 评论 -
asm中的ClassWriter使用、自定义ClassVisitor和cglib的enhancer使用实例
文章目录ClassWriter的使用自定义一个ClassVisitorenhancer的使用ASM是Java中比较流行的用来读写字节码的类库,用来基于字节码层面对代码进行分析和转换。在读写的过程中可以加入自定义的逻辑以增强或修改原来已编译好的字节码,比如CGLIB用它来实现动态代理。ASM被设计用于在运行时对Java类进行生成和转换,当然也包括离线处理。ASM短小精悍、且速度很快,从而避免在运行时动态生成字节码或转换时对程序速度的影响,又因为它体积小巧,可以在很多内存受限的环境中使用。ClassWri原创 2022-01-27 16:05:37 · 1616 阅读 · 0 评论 -
生成二维码工具类和基于spring的转化request请求工具类代码
生成二维码工具类import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.google.zxing.*;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxin原创 2022-01-26 23:38:06 · 173 阅读 · 0 评论 -
springboot使用j2cache框架和aspectj自定义缓存
spring上下文工具类:/** * Spring上下文工具类 */@Primary@Componentpublic class SpringApplicationContextUtils { private static ApplicationContext springContext; @Autowired private ApplicationContext applicationContext; @PostConstruct private vo原创 2021-12-17 14:40:03 · 1368 阅读 · 0 评论 -
Quartz详解和使用CommandLineRunner在项目启动时初始化定时任务
文章目录Quartz介绍自定义CommandLineRunner类:创建、更新定时任务service层自定义QuartzJobBean定时任务实体类:mapper接口:时间触发器的一些写法之前与定时任务相关的一个文章记录:springboot使用@Scheduled作定时任务详细用法Quartz介绍Quartz是一个完全由java编写的功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中,小到独立应用程序,大到大型的电子商务系统。Quartz可以用来创建执行数十,数百乃至数万个作业的简单或原创 2021-12-16 17:42:02 · 2439 阅读 · 5 评论 -
自定义configureMessageConverters和ObjectMapper解决json序列化问题实例
configureMessageConverters:覆盖此方法以添加自定义 HttpMessageConverters 以与 RequestMappingHandlerAdapter 和 ExceptionHandlerExceptionResolver 一起使用。将转换器添加到列表会关闭默认情况下会注册的默认转换器。另请参阅 addDefaultHttpMessageConverters 以添加默认消息转换器。代码:自定义 WebMvcConfigurationSupport:package co原创 2021-12-14 23:40:15 · 1763 阅读 · 0 评论 -
springboot使用TemplateEngine修改邮箱后发送验证码示例
文章目录实体类controller:前端页面(Vue)生成校验验证码service:ftl模板:真正发送邮箱的EmailConfigService实体类验证码pojo@Data@AllArgsConstructor@NoArgsConstructor@TableName("verification_code")public class VerificationCode implements Serializable { @TableId //@GeneratedValue(s原创 2021-12-12 13:23:46 · 1812 阅读 · 1 评论 -
查看动态代理生成的代理类字节码
文章目录动态代理的知识介绍用java proxy实现动态代理查看生成的class代理类字节码创建代理的源码动态代理的知识介绍一、动态代理和Class字节码的关系动态代理有什么作用及应用场景? 1.日志集中打印 2.事务 3.权限管理 4.AOP在Spring Aop当中可以哪些方式实现,及区别? l.java Proxy(动态构建字节码)(动态构建全新字节码bean初始化的时候) 2.cglib(动态构建字节码)(动态构建全新字节码bean初始化的时候) 3.Aspect原创 2021-12-08 21:24:00 · 1788 阅读 · 0 评论 -
spring整合redis消息监听通知使用实例
文章目录问题引入1.1 过期问题描述1.2 常用解决方案分析1.3.整合SpringData Redis开发spring整合redis监听消息1. 配置监听redis消息2 测试消息结合redis的key失效机制和消息完成过期优惠券处理1 模拟过期代金卷案例2 配置redis中key失效的消息监听3 接收失效消息完成过期代金卷处理问题引入在电商系统中,秒杀,抢购,红包优惠卷等操作,一般都会设置时间限制,比如订单15分钟不付款自动关闭,红包有效期24小时等等。那对于这种需求最简单的处理方式就是使用定时任务原创 2021-12-07 01:18:06 · 2717 阅读 · 0 评论 -
springsecurity实现自定义SecurityConfigurerAdapter、accessDeniedHandle.authenticationEntryPoint示例
文章目录spring properties1.TokenUtil自定义 SecurityConfigurerAdapter自定义corsfilter自定义AuthenticationEntryPoint自定义AccessDeniedHandler匿名访问注解springsecurity配置类spring properties@Data@Configuration(proxyBeanMethods = false)@ConfigurationProperties(prefix = "jwt")pub原创 2021-12-06 18:40:11 · 4264 阅读 · 1 评论 -
用拦截器+注解+cookie进行简单限流访问案例
除了用aop实现限流,用拦截器也可以达到同样限流的目的,代码如下:原创 2021-12-04 14:41:45 · 326 阅读 · 0 评论 -
用cn.hutool工具包进行图片上传下载示例
Hutool-http针对JDK的HttpUrlConnection做一层封装,简化了HTTPS请求、文件上传、Cookie记忆等操作,使Http请求变得无比简单。用的是smms图床。依赖: <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <ve原创 2021-12-02 22:51:59 · 7328 阅读 · 0 评论 -
shiro+jwt进行认证和授权的解决方案代码实例
文章目录token类自定义realm自定义的jwtFilter用于访问拦截:shiroconfigcontrollervo对象测试jwt和shiro框架就不多介绍了,直接上实例代码吧。目前测试可正常登录、获得用户角色、访问接口时根据@requireRoles进行拦截。token类import org.apache.shiro.authc.AuthenticationToken;//一般的登陆只需要校验账号和密码两个要素,默认的UsernamePasswordToken就能满足需求//这个就类似U原创 2021-12-01 10:18:58 · 2122 阅读 · 0 评论 -
nacos+openfeign服务提供和服务消费远程调用代码简单实例2
文章目录服务提供方:服务消费者先启动本地的nacos中心代码:服务提供方:server: port: 9001spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址management: endpoints: web: exposure:原创 2021-11-28 18:01:02 · 617 阅读 · 0 评论 -
使用拦截器和redis+token实现防重复提交完整代码
文章目录redis配置:自定义一个注解:自定义类继承HandlerInterceptormvc添加刚刚自定义的拦截器使之生效tokenservicecontrollerredis配置:# redisspring.redis.host=47.101.210.219spring.redis.port=6379spring.redis.timeout=0 <dependency> <groupId>org.springframework.boo原创 2021-11-18 20:10:02 · 1622 阅读 · 0 评论 -
ApplicationContextAware接口的拓展和使用
ApplicationContextAware接口只有一个方法:public interface ApplicationContextAware extends Aware { void setApplicationContext(ApplicationContext applicationContext) throws BeansException;}此接口的介绍:不用类似new ClassPathXmlApplicationContext()的方式,从已有的spring上下文取得已实例原创 2021-11-03 12:22:24 · 374 阅读 · 0 评论 -
shiro的登录 subject.login(token)中执行逻辑和流程
今天登录的时候一直没有记录当前用户信息下来,执行security.getsubject()时结果一直为空,遂看了下源码使用subject.login的登录场景:(controller层) @GetMapping public Result userLogin(@ApiParam(name="userId",value="用户学号",required=true) @RequestParam(value = "userId",requir原创 2021-11-02 17:14:52 · 7452 阅读 · 2 评论 -
案例代码:sprimngboot备份数据库
文章目录工具类:service层:常量:controller:工具类:public class MySqlBackupRestoreUtils { /** * 备份数据库 * @param host host地址,可以是本机也可以是远程 * @param userName 数据库的用户名 * @param password 数据库的密码 * @param savePath 备份的路径 * @param fileName 备份的文件名 * @param databaseN原创 2021-10-31 10:36:55 · 95 阅读 · 0 评论 -
springboot中的过滤器、拦截器、监听器整合使用
文章目录controller层过滤器拦截器拦截器介绍使用拦截器监听器监听器介绍使用监听器修改启动类controller层用于测试@RestControllerpublic class TestController { @GetMapping("/addSession") public String addSession(HttpServletRequest request) { HttpSession session = request.getSession();原创 2021-10-29 11:30:40 · 593 阅读 · 0 评论 -
案例代码:springboot+shiro配置同一用户多设备登录最大会话数
1.自定义登陆过滤器类:/** * 登录帐号控制过滤器 * */public class KickoutSessionFilter extends AccessControlFilter{ private final static ObjectMapper objectMapper = new ObjectMapper(); /** * 同一个用户最大会话数 **/ private int maxSession = -1; /**原创 2021-10-28 11:21:48 · 740 阅读 · 0 评论 -
案例代码:springboot+springsecurity+redis设置新登录后踢出前一个登录用户
文章目录pojo层security configcontroller:service:pojo层@Data@AllArgsConstructor@NoArgsConstructorpublic class OnlineUser { private String userName; private String nickName; private String job; private String browser; private String i原创 2021-10-28 02:15:21 · 1258 阅读 · 0 评论 -
springboot封装统一查询对象进行多条件查询案例(mybatis和mybatis-plus+反射两种版本)
文章目录mybatis版本:通用查询接口封装辅助查询类:通用controller:自定义注解controller service mapper测试mybatis-plus实现版本entity自定义注解controllerservice界面:mybatis版本:通用查询接口功能:1、单条查询 2、分页+搜索 3、查询数量public interface ICommonQuery { /** * 根据id查询明细。 * * @param id 资源id原创 2021-10-27 13:22:44 · 6383 阅读 · 0 评论 -
springboot使用shiro配置多个过滤器和session同步案例
案例代码来自ruoyi管理系统的shiro部分知识点介绍AccessControlFilterAccessControlFilter提供了访问控制的基础功能;比如是否允许访问/当访问拒绝时如何处理等:isAccessAllowed:表示是否允许访问;mappedValue就是[urls]配置中拦截器参数部分,如果允许访问返回true,否则false;onAccessDenied:表示当访问拒绝时是否已经处理了;如果返回true表示需要继续处理;如果返回false表示该拦截器实例已经处理了,将直接返原创 2021-10-24 23:21:48 · 4451 阅读 · 0 评论 -
【学习笔记】springboot的AutoConfigurationImportSelector 、@EnableAutoConfiguraion和@import解析
文章目录@EnableAutoConfiguration介绍AutoConfigurationImportSelector例子:使用importSelector自动装配原理分析总结@EnableAutoConfiguration介绍自动装配在Spring Boot中是通过@EnableAutoConfiguration注解来开启的,这个注解的声明在启动类注解@SpringBootApplication内。 进入@SpringBootApplication注解,可以看到@EnableAutoConfig原创 2021-10-23 01:13:27 · 1129 阅读 · 0 评论 -
springboot中使用lua脚本+aop作限流访问案例代码
1.限流注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Limit { // 资源名称,用于描述接口功能 String name() default ""; // 资源 key String key() default ""; // key 前缀 String prefix() default ""; // 时间,单位秒原创 2021-10-21 16:25:56 · 330 阅读 · 0 评论 -
用spring security设置用户jwt令牌和设置接口访问权限案例
文章目录1.配置Swagger2.spring security配置3.用户校验逻辑注册和登录接口dao层 service层 pojo层4.加密验证逻辑5.生成令牌逻辑身份验证提供者:自定义令牌对象:6.登录认证过滤器:7.JwtToken工具类:security工具类8.权限封装:9.用户模型:10.测试生成令牌11.测试用户权限1.配置Swagger为了方便测试首先在swagger config中配置加入令牌项,配置token作为请求头部参数:@Configuration@EnableSwag原创 2021-10-19 15:33:05 · 1223 阅读 · 0 评论 -
springframework包下的RequestContextHolder类和ServletRequestAttributes类的源码和使用
文章目录RequestContextHolder源码:项目中使用RequestContextHolder在项目中获得完整请求路径关于ServletRequestAttributes源码 :关于 HttpServletRequest和 HttpServletResponse1.通过RequestContextHolder的静态方法可以随时随地取到当前请求的request对象该类可以用于获得客户端请求的上下文RequestContextHolder源码:Holder class to expose th原创 2021-10-16 22:26:13 · 2300 阅读 · 0 评论 -
springboot使用@Scheduled作定时任务详细用法
springboot中quartz可以作定时任务,@Scheduled也可以Spring Boot启动类标注@EnableScheduling,然后再开发一个服务类,:测试简易定时任务:package com.springboot.chapter13.service.impl;/**** imports ****/@Servicepublic class ScheduleServiceImpl { // 计数器 int count1 = 1; int count2 = 1原创 2021-10-14 01:53:36 · 1815 阅读 · 0 评论 -
springboot使用异步线程池执行自定义任务实例
1.介绍在Spring中存在一个AsyncConfigurer接口,它是一个可以配置异步线程池的接口,因此只需要Java配置文件,实现AsyncConfigurer接口,实现getAsyncExecutor方法返回的线程池,这样Spring就会将使用这个线程池作为其异步调用的线程。为了使得异步可用,Spring还提供一个注解@EnableAsync,如果Java配置文件标注它,那么Spring就会开启异步可用,这样就可以使用注解@Async驱动Spring使用异步调用,下节我们会看到这样的实例。 异步原创 2021-10-13 19:01:24 · 313 阅读 · 0 评论 -
解决在非spring上下文的环境中无法获取Spring容器的bean【nullpointer:connot invoke because xxx is null问题】
1.背景:项目在nio监听端口的事件中需要在接收到客户端数据以后把数据封装然后调用service层间接访问数据库插入数据,调试了一天,明明用了autowired但是仍然显示该service对象为空,一下是报错的代码:2.原代码:@Componentpublic class Myselect implements Callable { @Autowired private WashService washService; public void getSelector()原创 2021-10-03 02:06:39 · 2076 阅读 · 0 评论 -
HttpServletRequest和@Requestparam、@RequestBody、直接实体接收请求参数的区别与示例
文章目录概述1.HttpServletRequest2.@RequestParam3.@RequestBody4.直接实体接收HttpServletRequest请求方法详解:概述客户端的网络请求首先会被Http服务器接收(也叫Web服务器、web容器,其需要提供web应用运行所需的环境,接收客户端的Http请求);Web服务器根据请求的路径将请求转交给对应的Servlet容器(也称Servlet引擎,为Servlet的运行提供环境支持,可以理解为tomcat或其他服务器);Servlet容器根据对原创 2021-09-22 20:52:09 · 4833 阅读 · 0 评论 -
mybatis-plus与jpa在操作数据库时写法对比
文章目录pojo层mybatis-plusjpa:service层mybatis-plus:jpa:repository层mybatis-plusjpa:总结总觉得二者在写法上有相似之处,遂今日想总结一下两个项目中的写法对比。拿评论功能举例:pojo层mybatis-plus@Data@Builder//通过@Builder注解,lombok还可以方便的时间建造者模式。@AllArgsConstructor@NoArgsConstructor@TableName("tb_comment"原创 2021-09-18 11:21:51 · 951 阅读 · 0 评论