
SpringBoot
文章平均质量分 59
龙茶清欢
人生如尘土飘逝。追忆似水流年,回忆让人伤感但却又有前行的力量。每天都是一个礼物,让我们在回忆与期待中承受每天的苦楚,时间漫漫,长大后的我却找不到生活的意义。
展开
-
springsecurity开启方法级的授权源码分析
至于 @PreAuthorize 注解的拦截器是如何生效的那就要靠 @EnableMethodSecurity 注解,因为该注解中导入了 @Import({MethodSecuritySelector.class}) 并接入到了IOC容器,因此只需要看 MethodSecuritySelector 类具体是怎么处理方法级的认证的即可。使用了方法权限注解开启了方法级的权限鉴定之后,就可以使用如下注解直接在控制器上使用方法级的权限鉴定了。处理器,其中的这部分源码解释可以看出如何使用表达式的过程。原创 2023-02-28 19:41:11 · 1869 阅读 · 0 评论 -
Sentinel配置Gateway 实现限流
由于sentinel starter依赖默认情况下就会为当前服务的所有的HTTP服务提供限流埋点,所以只要项目引入了sentinel starter 依赖,那么当前项目中的所有可以通过HTTP方式访问到的资源都将被sentinel保护起来。但在 Gateway网关和Sentinel的整合中, Sentinel 网关流控默认的粒度是 route 维度以及自定义 API 分组维度,默认。Sentinel 的数据源配置项是一个Map,由于Key键是String类型,所以数据源的名称是可以随便取的,例如我上面的。原创 2023-02-16 16:23:31 · 1230 阅读 · 0 评论 -
@NestedConfigurationProperty注解的作用
此注释与实际绑定过程无关,但它被spring-boot配置处理器用作一个提示,表明字段未绑定为单个值。指定此选项后,将为字段创建嵌套组,并获取其类型。修饰的对象中,如果有成员属性被@NestedConfigurationProperty修饰,那么这个属性将不再是可以绑定的单个值,而是作为一个属性嵌套组。这个类,如果其中的属性都不加@NestedConfigurationProperty注解,那么只能配置到。而加了该注解,那么配置层级可以映射到 admin 和 executor 中的内部成员属性。原创 2023-02-15 23:18:01 · 2043 阅读 · 0 评论 -
定时任务使用总结
修改外部映射的配置文件application.properties中的数据源地址配置。修改数据库的用户名和密码并同时开启外部访问权限。docker安装xxl-job-admin。默认账号密码:admin、123456。原创 2023-02-15 21:15:33 · 1625 阅读 · 0 评论 -
CompletableFuture多线程异步编排
由于默认情况下多线程执行任务都是异步的,且线程之间任务执行没有先后顺序,都是哪个线程先抢到任务,哪个线程先执行,所以当一个业务请求需要多线程完成(假如需要 A、B、C 三个线程)且线程AB之间存在前后的依赖关系,而C线程和AB线程无关(例如:A线程启动依赖于B线程的执行返回结果,C线程自个玩) ,所以A和B线程就需要线程编排。CompletableFuture异步编排的方式有四种,分别是 runAsync、supplyAsync方法,这两个方法分别有两种入参,常用的是使用自定义线程池的那两种。原创 2023-02-05 00:33:24 · 2412 阅读 · 0 评论 -
短信验证码实践
使用场景及具体过程分析场景:短信登录过程分析:首先我们在登录表单中填写手机号,然后点击获取验证码,发送请求到后端服务,后端服务调用我们自己封装好的发送短信方法,向方法中传入前端传来的手机号和使用随机数工具类生成验证码,该方法会将调用短信厂商的模板方法将验证码发送给指定的手机号码。发送成功后将验证码临时存储在Redis,用户收到验证码并填写后点击登录,该登录过程会发请求去验证Redis是否存在用户输入的验证码,有就登陆成功,反之失败。原创 2023-02-05 00:21:58 · 260 阅读 · 0 评论 -
JSR303数据校验
数据校验是一个我们开发过程中经常用到的功能,不论是前端还是后端,都需要对数据进行校验,所以,我们有必要总结一些常用方式。首先,我们需要引入数据校验所需要的依赖:引入该starter之后,我们就能很轻松的完成数据校验工作,只需要在想要校验的实体类的字段上加上对应的校验注解即可对该字段进行校验规则设置。到这里我们就完成了初步的校验规则设置工作。 此处需要特别注意的是:@URL校验注解只在该字段有值时有效,没值或者为空时无效,所以,如果我们想在该字段没值或者为空时也进行校验则可以另外添加一个 @No原创 2022-08-30 23:58:34 · 1627 阅读 · 0 评论 -
aliyun-oss-spring-boot-starter之服务端签名后直传
当我们进行文件上传时,前端先向后获取上传的防伪签名,然后带着防伪签名和文件到OSS进行文件上传,这个过程阿里云OSS会验证签名是否正确,正确则进行文件上传。为OSS对象存储配置专门的子账户,使用子账户的AccessKey和Security来生成访问签名,开通子账户地址。首先我们需要将aliyun-oss-spring-boot-starter需要的签名数据配置在项目的配置文件里。,开通完子账户之后,我们还需要为该子账户添加特定的权限,比如管理OSS权限等。......原创 2022-08-29 23:33:28 · 902 阅读 · 0 评论 -
Spring Cloud Gateway的使用总结
Spring Cloud Gateway提供了一个构建在 Spring 生态之上的 API Gateway,包括:Spring 5、Spring Boot 2 和 Project Reactor。Spring Cloud Gateway 旨在提供一种简单而有效的方式来路由到 API,并为它们提供横切关注点,例如:安全性、监控/指标和弹性。网关的全局过滤器不同于路由过滤器的是,全局过滤器作用于所有经过网关的请求,而路由过滤器则作用于所归属的路由。两个作用范围不同,此外,路由过滤器比全局过滤器多了两个name。原创 2022-08-28 17:59:17 · 2544 阅读 · 0 评论 -
OpenFeign使用的步骤
2、编写openfeign的client,在该接口上加上注解@FeignClient("被调服务名称")一、在需要调用别人服务的项目引入openfeign依赖。原创 2022-08-27 01:24:03 · 4116 阅读 · 1 评论 -
springboot中全局异常处理使用总结
首先新建一个全局异常处理类GlobleException,名字可以任取,然后在类上添加@ControllerAdvice或者@RestControllerAdvice注解,这两个注解的作用都是统一处理异常,不同的是,@RestControllerAdvice将处理的异常结果以JSON的形式响应,而@ControllerAdvice则没有指定响应数据类型,如果也想以JSON数据形式响应,可以在方法或者类上添加@ResponseBody注解。...原创 2022-08-11 00:20:11 · 358 阅读 · 0 评论 -
springboot中的@Conditional注解
springboot中使用@Configuration注解完成一个配置类的配置,被该注解标注的类会在程序启动时自动的加载到IOC容器,但如果我们想通过一些条件来控制被@Configuraion注解标注的配置类的生效与否,可以使用springboot提供的@Conditional注解来对条件进行控制,通过该注解指定哪些条件下才能自动加载配置,如果不满足条件,则不加载。以下是常见的@Conditional注解的类型:条件是:类路径下,如果存在指定的类,则该配置类生效。类路径即classpath,也就是src路径原创 2022-07-11 00:29:13 · 1230 阅读 · 0 评论 -
Lambda表达式与方法引用
Lambda表达式允许我们将一个匿名函数作为方法的参数,试想一下这样一个场景,一个方法的参数是一个接口的引用,那么如果我们想使用这个方法就必须给这个方法一个该接口的实现的引用,我们一般会先建一个类来实现这个接口,然后将这个实现类的引用传递给该方法,在这个过程中我们可以发现,为了给这个方法一个参数,我们多建了一个类同时过程也变烦琐了很多,那么有没有办法可以不用建这个实现类也能达到同样的效果呢?有,那就是匿名内部类,我们试想一下,如果这个接口参数可以直接new一个实例就好了,但接口不能直接new,所以,如果我们原创 2022-07-03 21:28:21 · 426 阅读 · 0 评论 -
Stream流使用方法总结
流是一种处理数据的高级手段,任何数据都可以转化成流进行处理。对Stream流来说,比较常见数据源有集合、数组、IO等。我们可以把流想象成一条流水线,流水线的源头是数据源,数据源中的每个元素是流的操作对象。数据源中的元素被依次输送到流水线上,然后我们就可以对这些流水线上的元素进行各种操作,一旦元素走到了流水线的尽头,那么该元素也被“消费掉了”,之后在此次流水线上我们便无法再对该元素进行任何操作。平常我们是赢得for循环、增强for等一些遍历操作都是显示的操作数据源,而stream流的遍历过程对我们来说是不可见原创 2022-07-02 00:57:27 · 6876 阅读 · 0 评论 -
springboot学习中的注解了解
Lombok插件注解:@UtilityClass 注解一般用在工具类上,作用是为工具类中的所有成员属性和方法都加上static关键字,使其能直接通过类名调用。并且还会为该工具类生成一个私有的空构造函数。@AllArgsConstructor 为标注的类生成一个全参构造函数,该构造函数会在类初始化时调用并完成属性注入@RequiredArgsConstructor 生成一个带参构造函数,该构造函数包含了所有被final修饰或被@NotNull注解标注的属性。只要属性符合以上两点都会成为该构造函数的参数。原创 2022-07-01 00:41:07 · 1480 阅读 · 0 评论 -
通过ApplicationListener监听多个事件
ApplicationListener接口拥有一个子接口SmartApplicationListener,springboot中有一些重要的定制化监听器都是直接或间接的通过实现SmartApplicationListener接口来实现的,这个接口中拥有一个supportsEventType抽象方法,源码如下:该方法主要通过调用Class类中的isAssignableFrom来判断监听的事件类是否和参数传递的事件类相同或者是参数事件类的子类,如果是则返回true并监听,反之则返回false,不监听。所以原创 2022-06-26 11:59:50 · 1322 阅读 · 2 评论 -
BeanFactoryPostProcessor后置处理器
在springboot出现之前,spring一般都是通过读取我们编写的xml文件来创建Bean的,在标签中我们需要定义Bean的类型以及属性等有关于描述Bean的信息,BeanFactory就是通过这些信息来定义一个Bean的,在Bean初始化的过程中,Bean的属性都会被赋予对应类型的默认值,比如,String类型属性默认值就是null,一般引用类型的默认值都是null。那有没有办法不让Bean的某个属性不去默认值而取我们自定义的值呢?答案是BeanFactoryPostProcessor后置...原创 2022-06-26 11:56:24 · 255 阅读 · 0 评论 -
ApplicationListener监听器
ApplicationListener监听器本身是一个函数式接口,监听对象为ApplicationEvent事件的子类,ApplicationEvent事件本身是一个抽象类,它拥有各式各样的子类,这些子类就是定制化的事件,专门用于特定的场景。ApplicationEvent事件继承EventObject这个事件本体,EventObject事件本体是所有事件的基础,EventObject事件本体拥有一个这样一个Object类型的source属性,用于存放事件。那这个事件数据是如何传递的呢?通过观察源码,我们发原创 2022-06-26 11:53:28 · 2314 阅读 · 0 评论 -
EventPublishingRunListener监听器
EventPublishingRunListener是springboot中唯一一个实现了SpringApplicationRunListener接口的监听器,其主要作用是,根据springboot程序启动过程的不同阶段发布对应的事件,进行对应阶段的相关操作。源码如下:...原创 2022-06-26 11:39:07 · 764 阅读 · 0 评论 -
SpringApplicationRunListener监听器
SpringApplicationRunListener监听器是springboot提供的一个用于监听springboot应用程序启动过程的监听器接口,里面有7个抽象方法,分别代表springboot启动过程中的不同阶段,例如,开始启动、环境准备、容器准备、容器加载、启动完成、持续运行、启动失败源码如下:...原创 2022-06-26 11:36:12 · 288 阅读 · 0 评论 -
ApplicationRunner 和 CommandLineRunner的使用
使用场景:如果我们需要在 SpringApplication 启动后自动运行一些特定的代码,我们可以使用这两个接口,这两个接口都是有且只有一个run方法,通过实现这两个接口,我们可以在run方法中编写一些代码,这个run方法会在SpringApplication应用启动完成之后自动的执行,同时为了确保实现了这两个接口的实现类能够自动生效,我们必须将该类注册成Bean组件,此外,我们也可以继续通过实现Ordered接口或者通过@Order注解来指定run方法的执行顺序,其中Order的值越小越先执行,参考如下原创 2022-06-17 00:01:45 · 841 阅读 · 0 评论 -
自定义springboot启动横幅(Customizing the Banner)
spring boot提供了一个Banner接口用于处理启动横幅,默认情况下启动会打印如下信息其中springboot的版本根据自己的使用情况而定,默认情况下,springboot已经拥有Banner接口的实现,可以适用各种横幅的打印场景,例如,图片、文字等,但需要注意的是,在使用之前我们最好先将他们转换成ASCII字符形式,这样效果更好。此外,除非自己想进行特定的方法处理,否则不建议自己去实现Banner接口。默认情况下,我们只需要在classpath目录下也就是Resource文件夹下放置一个以b原创 2022-06-16 23:01:02 · 503 阅读 · 0 评论 -
从配置文件中根据前缀批量注入属性之@ConfigurationProperties
1、@ConfigurationProperties在我们平时做项目时,肯定遇到过需要从yml或者properties配置文件中获取属性值得情况,一般我们都会用@Value("$(xxx.xxx)")注解来完成,当注入的属性个数不多时,使用@Value注解确实是一个不错的办法,但当注入的属性超过5个时,继续使用@Value就会使类显得臃肿,想象一下,当你看到十几个@Value注入时,是不是觉得不太美观,像改造一下呢?那有什么办法可以解决这一问题呢?答案是:@ConfigurationProperties 注原创 2022-06-05 15:44:42 · 1602 阅读 · 1 评论 -
springboot项目如何将项目外部配置类纳入spring ioc容器
项目外部指的是非SpringBootApplication应用主程序类所在同层级包下的类,当我们启动一个SpringBootApplication应用主程时,应用程序会自动扫描该类同层级包下的所有类,并将带有@Configuation、@Component以及@Component的扩展注解(@Controller、@Service、@Respistory等等)注解的类注册Bean,并纳入Spring Ioc容器,此外配置类中被@Bean标注的方法也会被注册为Bean,并纳入Spring Ioc容器那我们如何原创 2022-06-05 12:26:44 · 1260 阅读 · 0 评论 -
Spring Boot 数据库连接池入门之HikariCP
Spring Boot 数据库连接池入门之HikariCP原创 2022-04-08 00:43:36 · 2012 阅读 · 0 评论 -
spring session搭配redis的简单使用
spring session搭配redis的简单使用原创 2022-04-03 12:45:03 · 2707 阅读 · 0 评论 -
Swagger静态文档的生成
Swagger静态文档的生成原创 2022-03-30 01:28:59 · 702 阅读 · 0 评论 -
Spring Boot中使用腾讯云短信服务
Spring Boot中使用腾讯云短信服务,在腾讯云官方网站开通短信服务原创 2021-12-17 09:04:09 · 931 阅读 · 1 评论