![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
文章平均质量分 57
LC超人在良家
记录一下平时的工作
展开
-
使用RestTemplate在服务之间进行MultipartFile格式文件的传递
MultipartFile是Spring框架中提供的一种用于文件处理的接口,一般用于前端进行文件的上传,后端使用MultipartFile类型来进行文件的接收;当使用RestTemplate的post方法进行来传递接收到的MultipartFile类型文件时,由于RestTemplate中并没有对应的转化器(Converter),无法将文件对象打包进body中,所以会抛出异常。办法:先将MultipartFile类型的对象转化为File类型,一下为转换的方法。原创 2023-03-23 17:41:40 · 1756 阅读 · 0 评论 -
NIO&AIO
一、NIO(同步非阻塞)NIO都是同步的:不管是客户端还是服务端,都一直在轮询,主动获取对方消息,只要不连通,就一直轮询,直到客户端和服务端之间连接上。二、AIO(异步非阻塞)异步:指的是,不管是客户端还是服务端,不用轮询,先干别的事儿,什么时候通知我连接交相,我再什么时候交互2.1 AIO服务端创建AIO的服务器端: 1.相关的类: java.nio.channels.AsynchronousServerSocketChannel:用于面向流的侦听套接字的异步通道。原创 2022-10-26 09:38:38 · 246 阅读 · 0 评论 -
springboot使用上下文ApplicationContext
有四种方式获得spring上下文。原创 2022-10-26 09:36:48 · 1508 阅读 · 0 评论 -
对Spring的后置处理器BeanPostProcessor的使用
BeanPostProcessor官方定义为工厂钩子,我们也俗称后置处理器。它允许自定义修改新的bean实例,例如检查标记接口或用代理包装它们。应用程序上下文可以在其bean定义中自动检测BeanPostProcessor bean,并将它们应用于随后创建的任何bean。原创 2022-10-11 17:02:47 · 2411 阅读 · 0 评论 -
Spring 的初始化和销毁注解 @PostConstruct 和 @PreDestroy 注解
PostConstruct 和 @PreDestroy 注解,主要实现Bean在初始化之后、销毁之前执行自定义业务。Spring负责管理Bean的初始化和销毁,但同时也提供方式让我们在bean初始化之后、销毁之前执行特定业务。之前一般需要实现相应接口实现,InitializingBean接口并实现 afterPropertiesSet() 方法, DisposableBean接口的destroy()方法。前者用于初始化bean业务,后者通常用于清理资源逻辑。原创 2022-09-21 15:15:05 · 899 阅读 · 0 评论 -
Springboot注解@EnableConfigurationProperties、@ConfigurationProperties、@ConfigurationPropertiesScan区别
在SpringBoot工程中,我们常常需要将一些特定前缀的配置项绑定到一个配置类上。这时候我们就可以使用@EnableConfigurationProperties、@ConfigurationProperties注解来实现。在SpringBoot2.2.0中还添加@ConfigurationPropertiesScan注解来帮助我们简化将配置类注册成一个Bean。下面主要讲解这三个注解的使用和源码实现。现在我有如下的propertoes(yml)文件,里面添加了一些配置信息。原创 2022-09-20 13:55:10 · 892 阅读 · 0 评论 -
springboot结合aop和pagehelper实现分页筛选排序功能
/***统一封装onComplete,简化调用方代码*@return*/}/***分页返回**@return*/>list){}/***统一封装onError,简化调用方代码*@return*/}}/***当前记录起始索引*//***每页显示记录数*//***排序列*//***排序的方向"desc"或者"asc".*//***分页参数合理化*//*****分页数据。.........原创 2022-07-27 14:35:13 · 1554 阅读 · 0 评论 -
Spring Security+JWT实现权限管理
SpringSecurity是spring全家桶中的一个安全管理框架,类似于shiro,但是比shiro功能更加的丰富。主要核心功能是 认证 和 授权 :认证:验证当前访问系统的是不是本系统的用户,并且要确定具体是哪个用户授权:经过认证后判断当前用户是否有权限进行某个操作一、快速入门1.1初探引入Spring Security的依赖 <!-- springsecurity--> <dependency> <groupId&g原创 2022-03-14 14:26:55 · 5433 阅读 · 2 评论 -
springboot+mybatis+druid的配置(sql监控平台)
文章目录1.依赖2.配置yml3.druid配置类4.验证5. 配合springsecurity的情况1.依赖<!-- mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>原创 2022-04-20 17:10:18 · 2258 阅读 · 2 评论 -
SpringCloud Alibaba的使用
什么是SpringCloudAlibaba? ------------ 阿里巴巴结合自身微服务实践,开源的微服务全家桶Spring Cloud Alibaba真实应用场景 ------------大型复杂的系统(大型电商系统); 高并发系统(大型门户,秒杀系统); 需求不明确(初创公司业务系统)Spring Cloud Alibaba与Spring Cloud的区别SpringCloud Alibaba是SpringCloud的子项目,它是SpringCloud第二代的实现Sp..原创 2022-03-30 10:32:55 · 4962 阅读 · 0 评论 -
SpringBoot集成Elasticseach
文章目录一、Elasticseach介绍1. 简单介绍一、Elasticseach介绍1. 简单介绍官网:https://www.elastic.co/cn/原创 2022-03-25 14:54:52 · 4290 阅读 · 0 评论 -
springboot使用Thymeleaf(控制器Model model进行页面你的渲染)
首先,我们需要知道Thymeleaf的作用是什么?一、Thymeleaf概述Thymeleaf是用来开发Web和独立环境项目的现代服务器端Java模板引擎。Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - HTML。可以在直接浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作。借助Spring Framework的模块,可以根据自己的喜好进行自由选择,可插拔功能组件,Thymeleaf是现代HTML5 JVM Web开发的理想选择 - 尽管它可以做的更多。原创 2022-03-11 11:33:42 · 3289 阅读 · 0 评论 -
springboot使用Mybatis-Generator自动生成Dao、Model、Mapping
Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。官网:http://mybatis.org/generator/1.导入依赖 <!--mybatis逆向工程核心包--> <dependency> <groupId>org.mybatis.generator</grou原创 2022-02-15 13:44:04 · 1065 阅读 · 0 评论 -
SpringBoot+Druid+Mybatis如何去配置多数据源
pom.xml配置的依赖如下:<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <grou原创 2022-02-14 14:22:49 · 630 阅读 · 0 评论 -
springboot项目如何一启动就执行某些操作
可以让启动类实现两个接口中的任意一个都可以,第一个:ApplicationRunner第二个:CommandLineRunner源码分析我么进入SprongApplication.run方法里面查看原创 2022-01-26 11:59:37 · 508 阅读 · 0 评论 -
怎么将第三方jar包转成maven的jar包
在cmd中输入:mvn install:install-file -Dfile=C:\Users\Administrator\Desktop\QRCode.jar -DgroupId=QRCode -DartifactId=QRCode -Dversion=3.0 -Dpackaging=jar -DgeneratePom=true-Dfile的后面输入的为你下载的第三方jar包的本地文件路径。-DgroupId的后面输入的为你转maven jar包后groupId的标签内容QRCode。-Dart原创 2022-01-18 09:37:26 · 431 阅读 · 0 评论 -
Bootstrap.yml 和 application.yml
bootstrap.yml文件也是Spring Boot的默认配置文件,而且其加载的时间相比于application.yml更早。application.yml和bootstrap.yml虽然都是Spring Boot的默认配置文件,但是定位却不相同。bootstrap.yml可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。application.yml可以用来定义应用级别的参数,如果搭配 spring cloud config 使用,application.yml里面定义的文件可以实现动原创 2022-01-13 11:04:27 · 11232 阅读 · 0 评论 -
父子工程的结构
父工程作用:统一管理所以的子工程,以及相关版本统一管理和依赖,可以统一编译。父工程的注意事项父工程的注意事项:1、删除src目录2、把pom.xml中的的packaging修改成pom<packaging>pom</packaging>3.把springboot交给父工程来管理子工程1.在父工程上右键创建module模块2.将子工程交给父工程管理。2.1在要父工程的pom.xml去建设子工程管理,也就所谓的:模块注册2.2在子工程中的pom.xml中,它的原创 2022-01-13 09:05:55 · 936 阅读 · 0 评论 -
是否开启全局返回处理(控制器结果拦截增强处理机制)
采用springboot提供的ResponseBodyAdvicel处理即可。**ResponseBodyAdvice的作用是:拦截Controller方法的返回值,统一处理返回值到响应体中,一般来做response的统一格式,加密,签名等。在使用的时候在controller的包上增加basePackages=”com.kuangstudy” 这个是我们的项目路径,因为如果不加的话,可能给整个系统的产生冲突影响比如:如果你使用了swagger时会出现空白异常。@ControllerAdvice(bas原创 2022-01-13 09:05:22 · 156 阅读 · 0 评论 -
全局异常处理器(结束后仍然要经过全局返回处理)
全局异常处理器(结束后仍然要经过全局返回处理)可能刚刚开始接触项目构造的时候会对着一部分有疑惑,比如说我,其实是这样的重写ErrorController,不在跳转原生错误页面,而是抛出我们的自定义异常全局异常处理就是指把整个系统的异常统一自动处理,程序员可以做到不用些try/catch就能进行处理项目中出现的异常。为什么需要全局异常处理呢?第一个原因:不用强制写try/catch,异常交由统一异常的处理机制进行捕获。第二个原因:自定义异常:只能用全局异常来捕获。第三个原因:JSR原创 2022-01-13 09:04:42 · 2478 阅读 · 0 评论 -
Httpclient和RestTemplate的使用
RestTemplate是spring特有的,在spring项目中直接注入使用即可,HttpClient是 Apache Jakarta Common的。Http Client第一步:添加依赖<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId></dependency>第二步:原创 2022-01-13 09:03:21 · 1480 阅读 · 0 评论 -
@Autowired和@Resource的区别
源头@Autowired 来自spring框架@Resource 来自javax.annotation注入方式:@Resource 默认 按byName 自动注入@Autowired 默认 按byType 自动注入@Autowired@Autowired注解的required参数默认是true,表示开启自动装配,有些时候我们不想使用自动装配功能,可以将该参数设置成false。@Autowired(required=true):当使用@Autowired注解的时候,其实默认就是@Autowir原创 2022-01-12 13:53:33 · 75 阅读 · 0 评论 -
Springboot中的异步处理框架@Async
在SpringBoot的日常开发中,一般都是同步调用的,但经常有特殊业务需要做异步来处理。比如:注册用户、需要送积分、发短信和邮件、或者下单成功、发送消息等等。第一个原因:容错问题,如果送积分出现异常,不能因为送积分而导致用户注册失败。第二个原因:提升性能,比如注册用户花了30毫秒,送积分划分50毫秒,如果同步的话一共耗时:70毫秒,用异步的话,无需等待积分,故耗时是:30毫秒就完成了业务。异步,同步的区别同步:按顺序执行,前面结束了,后面才开始,是一个串行调用异步:按顺序执行,但是后面拿到开原创 2022-01-11 11:22:57 · 3943 阅读 · 0 评论 -
@Lazy的使用 懒加载
Spring IoC (ApplicationContext) 容器一般都会在启动的时候实例化(初始化)所有单实例 bean 。如果我们想要 Spring 在启动的时候延迟加载 bean,即在调用某个 bean 的时候再去初始化,那么就可以使用 @Lazy 注解。@Lazy有一个value属性,默认为true, true 表示使用 延迟加载false纯属多余,不启动懒加载就不适用这个注解@Lazy注解注解的作用主要是减少springIOC容器启动的加载时间当出现循环依赖时,也可以添加@Lazy原创 2022-01-11 11:18:28 · 627 阅读 · 0 评论 -
Application.yml的环境隔离
在实际开发中,我们会定义单个application.yml+多个application-xxx.yml;就是用application.yml的环境隔离来决定不同的环境使用不同的application-xxx.yml的配置。环境隔离的使用第一步:定义各种配置文件application.yml 主配置文件application-dev.yml 环境隔离文件—dev 开发环境的配置application-test.yml 环境隔离文件—dev 开发环境的配置application-prod.y原创 2022-01-11 09:40:57 · 216 阅读 · 0 评论 -
Springboot定时任务、Quartz表达式
第一步:在启动类上加注解@EnableScheduling注解来开启定时任务。第二步:编写定时方法我们了解到在主入口类,添加 @EnableScheduling 注解后, Component注解过的类的方法上,使用 @Scheduled 方法就可以实现定时任务@Component@Slf4jpublic class MyTask { //@Scheduled(fixedDelay = )每个任务结束,等待指定时间再次执行 //@Scheduled注解,注解的参数可以配置原创 2022-01-10 11:30:56 · 286 阅读 · 0 评论 -
Validator框架-springboot的参数校验器
Validator框架,,它的出现就是为了解决开发人员在开发的时候减少代码的,提升开发效率。它专门用来做接口的参数校验,比如:密码长度、是否为空等等。在默认情况下:SpringBoot会引入hibernate validation机制来支持JSR-303验证规范。SpringBoot的validator校验框架支持如下特征:JSR303特征:JSR303是一项标准,只提供规范不提供实现。规定一些校验规范即校验注解。比如:@Null、@NotNull、@Pattern。这些类都位于:javax.va原创 2022-01-10 11:26:47 · 351 阅读 · 0 评论 -
记录一个@Postmapping和@RequestParam的坑
我们在开发中经常会用到 @PostMapping、@GetMapping、@RequestParam、@RequestBody、@PathVariable;但是我们得注意使用情况:@GetMapping 配合 @RequestParam、@RequestBody、@PathVariable;@PostMapping 配合 @RequestBody (使用@RequestParam很有可能debug失效或者获取不到参数数据)@RequestParam:对包装类,基本类型,String等通过属性va原创 2022-01-10 11:25:44 · 7392 阅读 · 1 评论 -
最终版本的JWT的使用
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>io.jsonwebtoken&原创 2022-01-08 23:02:39 · 1214 阅读 · 0 评论 -
RestTemplateUtil
都可以的请求方式:HttpHeaders headers = new HttpHeaders();headers.add("Authorization", "Bearer");HttpEntity entity = new HttpEntity(body.toString() , headers);ResponseEntity<Object> responseEntity = restTemplate.postForEntity("http://a1/users/{username}/p原创 2022-01-08 23:02:07 · 374 阅读 · 0 评论 -
Jar包打成maven依赖
目标位置:D:\maven\repository\com\oracle\ojdbc6\11.2.0.3要安装jar包位置:F:\ojdbc6-11.2.0.3.jar命令:mvn install:install-file -Dfile=F:\ojdbc6-11.2.0.3.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar原创 2022-01-08 23:00:56 · 158 阅读 · 0 评论 -
Aop的使用(通知,日志存储等)
AOP是面向切面的横向的编程,在不影响原来业务的基础上,实现动态的增强。通知顺序:先环绕放行前,前置,环绕放行后,后置@After,最终@AfterReturning(对方法的结果做处理)一、实现AOP方式:1.使用原生的spring API接口。2.自定义类,把这个类作为切面,其中的方法在切点前或后执行。二、具体操作1.首先,要使用AOP需要导入包<dependency> <groupId>org.aspectj</groupId> &原创 2022-01-08 23:00:22 · 5271 阅读 · 0 评论 -
Spring-springmvc-springboot-springcloud之间的关联
大家都知道spring-springmvc-springboot-springcloud等spring技术,但是,知道为何会有这么多sping的技术呢?其实这也是我一直的疑问,然后通过自己的工作和查找资料,有了一些浅薄的看法。错了请指正哈!spring首先,我门要知道spring是一个生态体系或者说是一个技术体系。spring的核心是IOC(inverse of control 控制反转)和AOP(aspect oriend program面向切面编程)。IOC是一种思想,不是一种技术,且不仅.原创 2022-01-07 09:02:44 · 337 阅读 · 0 评论 -
springboot整合mybatis
<!-- mybatis--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.m原创 2022-01-07 09:00:04 · 63 阅读 · 0 评论 -
一个完整的springboot案例
官网https://huanzi-qch.gitee.io/spring-boot简介SpringBoot系列Demo代码SpringBoot用的是2.1.0.RELEASE,Demo代码主要参照官方文档,以及百度、google写的,每一个子工程就是一个小案例,简单明了这里的测试例子基本上跟博客的一样,没什么修改,大家看博客就好了还是有很多人觉得这个项目太乱了,分不清子项目、父项目的关系,以及子项目直接的关系,我在这里简单描述一下父项目是一个maven项目,继承spring-boot-star原创 2022-01-06 09:05:45 · 3356 阅读 · 0 评论 -
可以使用在方法参数上的注解
我们在开发中,是不是要把前端的参数绑定到我们控制器的方法上,哪到底有哪些注解可以用呢?大部分人可能都只会用@RequestParam 、@PathVariable,其实还有其他的注解可以使用@Value、@RequestParam 、@PathVariable、@RequestHeader、@CookieValue、@SessionAttributes、@ModelAttribute前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开.原创 2022-01-04 09:24:33 · 717 阅读 · 0 评论 -
起别名,Spring里面的注解@AliasFor
作用:通常是用在注解的属性上的,表示这两个互为别名,也就是说这两个属性其实同一个含义,此时这两个属性的值一定得一样,否者报错。属性,value,attribute,annotation,前面两个是一样的意思,最后一个是定义属性的注解类型使用:第一步:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Inheritedpublic @interface MyAnnotation { @Alia原创 2022-01-04 09:24:23 · 745 阅读 · 0 评论 -
RestTemplate的Restful风格使用
我们在开发过程中,经常会有需要调用外部的接口,spring框架给我们封装好了一个了那就是RestTemplate!!以前使用的是[HttpClient]HttpClient;使用这个是要区分情况的使用者类交给了IOC管理,那直接注入使用@Componentpublic class HuanxinUtils { @Autowired private restTemplate = new RestTemplate();}使用者类没有交给IOC管理,就得原创 2021-12-31 14:57:39 · 345 阅读 · 0 评论 -
分布式ID
我们就拿订单来说订单数据非常庞大,将来一定会做分库分表。那么这种情况下, 要保证id的唯一,就不能靠数据库自增,而是自己来实现算法,生成唯一id。雪花算法用雪花算法生成唯一id:雪花算法会生成一个64位的二进制数据,为一个Long型。(转换成字符串后长度最多19) ,其基本结构:第一部分:备用第二部分:41位为毫秒级时间(41位的长度可以使用69年)第三部分:5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点)第四部分:最后12位是毫秒内的计数(12原创 2021-12-31 09:20:19 · 181 阅读 · 0 评论 -
事务,本地事务,分布式事务
先理解三个概念事务数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务拥有以下四个特性,习惯上被称为ACID特性:原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态是指数据库中的数据应满足完整性约束。除此之外,一致性还有另外一层语义,就是事务的中间状态不能被观察到(这层原创 2021-12-31 09:20:07 · 232 阅读 · 0 评论