
SpringBoot
文章平均质量分 82
SpringBoot相关
330553352
这个作者很懒,什么都没留下…
展开
-
异步任务处理类CompletableFuture使用详解
环境:Java8。原创 2024-08-14 23:35:06 · 760 阅读 · 0 评论 -
jackson 轻松搞定接口数据脱敏
实际的业务开发过程中,我们经常需要对用户的隐私数据进行脱敏处理,所谓脱敏处理其实就是将数据进行混淆隐藏,例如下图,将用户的手机号、地址等数据信息,采用进行隐藏,以免泄露个人隐私信息。如果需要脱敏的数据范围很小很小,甚至就是指定的字段,一般的处理方式也很简单,就是写一个隐藏方法即可实现数据脱敏。如果是需求很少的情况下,采用这种方式实现没太大问题,好维护!但如果是类似上面那种很多位置的数据,需要分门别类的进行脱敏处理,通过这种简单粗暴的处理,代码似乎就显得不太优雅了。原创 2024-08-14 23:27:10 · 723 阅读 · 0 评论 -
Sharding Sphere:轻松搞定数据加解密,支持字段级!
在实际的软件系统开发过程中,由于业务的需求,在代码层面实现数据的脱敏还是远远不够的,往往还需要在数据库层面针对某些关键性的敏感信息,例如:身份证号、银行卡号、手机号、工资等信息进行加密存储,实现真正意义的数据混淆脱敏,以满足信息安全的需要。字段,根据常规,很容易想到使用数字类型,但是却不是,要知道加密之后的数据都是一串乱码,数字类型肯定是无法存储字符串的,因此在定义的时候,这个要留心一下。废话不多说了,直接撸代码!采用配置方式,最大的好处就是直接通过配置脱敏列就可以完成对某些数据表字段的脱敏,非常方便。原创 2024-08-14 23:22:35 · 890 阅读 · 0 评论 -
validator 实现全注解式的数据校验
默认的情况下,依赖包已经给我们提供了非常多的校验注解,如下!JSR 提供的校验注解!Hibernate Validator 提供的校验注解但是某些情况,例如性别这个参数,可能需要我们自己去手动验证。其实,我们也可以自定义一个注解来完成参数的校验,也便于进一步了解注解验证的原理。自定义注解验证,实现方式如下!首先,创建一个Sex注解。String message() default "性别值不在可选范围内";Class<?Class<?然后,创建一个类,实现自接口@Override。原创 2024-08-14 23:15:50 · 1436 阅读 · 0 评论 -
Spring Boot 3太强:全新Controller接口定义方式
注意:这里的RestClient必须使用Spring6.1以上版本,如果你不是那你可以换成RestTemplate.以上是在Spring MVC中定义API接口的几种方式(纯Servlet就算了)。接下来我将介绍另外一种定义Controller接口的方式。该注解将一个类或具体方法声明为HTTP 接口。接口的细节通过注解的属性以及方法参数定义。还是使用上面的PersonService接口定义,通过该接口生成代理类。的主要目的是使用生成的代理抽象HTTP客户端代码。在接口中声明一个默认的方法。原创 2024-08-10 12:56:12 · 485 阅读 · 0 评论 -
Spring6.2震撼来袭,多线程实例化Bean应用启动速度飙升!
在最新的Spring6.2.0-SNAPSHOT版本中,一项引人注目的新功能被引入——Parallel Bean Initialization during Startup,即启动过程中的并行Bean初始化。在传统的Spring应用程序中,Bean的初始化通常是按照特定的顺序进行的,这在一定程度上限制了启动过程的并行性,影响了启动速度。然而,在Spring6.2.0-SNAPSHOT版本中,通过引入并行Bean初始化功能,Spring框架能够同时初始化多个Bean,从而显著减少启动时间。原创 2024-08-10 12:24:04 · 447 阅读 · 0 评论 -
警惕!SpringBoot错误发布事件,造成死锁Deadlock
不要在构造函数中发布事件,而是应该在所有的单例对象都创建完后再执行,也就是实现SmartInitializingSingleton接口,该接口对应的回调方法会在所有的单例bean都创建完以后执行,这样就不会再出现deadlock问题。升级Spring版本到Spring6.2(目前并没有正式发布),你仍然可以使用6.2.0-SNAPSHOT版本,该版本通过多线程方式初始化Bean对象,这样就不会出现deadlock问题。该Bean在构造函数中新启一个线程发布事件,同时通过join方法等待线程执行完成。原创 2024-08-10 12:22:28 · 545 阅读 · 0 评论 -
SpringBoot高级开发技巧
通过监听ServletRequestHandledEvent事件,可以有效的获取客户端地址,请求的URL等完整的信息,其中ProcessingTimeMillis属性反应的就是这个请求耗时情况。虽然达到了目的,但是这将所有web分组的日志都进行输出了,日志信息非常多,我们所期望的仅仅是输出Controller相关的信息。通过上面的设置,此时日志信息只输出了Controller接口,其它的都按照默认的输出。以上是默认的路径,我们可以在这自定义自己的今天资源路径。通过监听该事件,你可以在这里实现你自己的逻辑。原创 2024-08-10 12:19:20 · 425 阅读 · 0 评论 -
通过编程式事务提高系统性能
编程式事务允许开发者在代码中明确控制事务的边界、启动、提交和回滚等操作,从而确保数据的一致性和完整性。这里http接口调用的操作不应该放到一个事务中操作它和数据库就没有关系,但是它的耗时越长就会对当前的数据库连接占有更长的时间对系统的整体性能是有影响的。接下来将对编程式事务的应用进行详细的介绍。参数,该接口是一个函数式接口,我们只需将需要在事务上下文中执行的代码放入方法中即可。该类是基于响应式编程中应用的编程式事务,这里就不做介绍了。接下来分别通过不同的方式对编程式事务进行详解的讲解。原创 2024-08-10 11:52:14 · 794 阅读 · 0 评论 -
整合RSocket实时数据通信
服务器可能会拒绝 SETUP 帧,但一般情况下,在发送(客户端)和接收(服务器)SETUP 帧后,双方都可以开始发出请求,除非 SETUP 表示使用租用语义来限制请求数量,在这种情况下,双方都必须等待另一端发出 LEASE 帧才能允许发出请求。虽然所有报文都可以包含元数据,但路由等元数据通常是按请求提供的,因此只包含在请求的第一条报文中,即 REQUEST_RESPONSE、REQUEST_STREAM、REQUEST_CHANNEL 或 REQUEST_FNF 框架之一。数据和元数据可以有不同的格式。转载 2024-08-10 11:55:05 · 1476 阅读 · 0 评论 -
Spring一个强大便捷的代理工厂类
但如果你需要一种更加灵活和可配置性,那么Spring还提供了一个非常方便强大的ProxyFactoryBean类,该类特别适合那些需要更多自定义和控制的场景,例如当你需要为特定的Bean创建代理,或者需要在不修改原始代码的情况下为现有类添加额外的功能时。在Spring框架中,AOP(面向切面编程)是一种强大的编程范式,它允许开发者在不修改原有代码的情况下,为程序添加额外的功能,如日志记录、事务管理、安全控制等。在上面配置拦截器时,我们都是指定的具体拦截器,其实我们还可以使用通配符,指定拦截器。原创 2024-08-10 12:04:22 · 396 阅读 · 0 评论 -
Spring获得DataSource
一、从JNDI获得DataSource1.1、Spring JNDI数据源配置信息<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jc...原创 2019-11-30 10:31:39 · 616 阅读 · 0 评论 -
RocketMQ——初识
RocketMQ——初识一、介绍RocketMQ 是阿里开源的消息中间件,前不久捐献给了 Apache 。正如官网介绍如下:它是一个开源的分布式消息传递和流式数据平台。特点如下:二、产品发展历史大约经历了三个主要版本迭代2.1、Metaq(Metamorphosis)1.x由开源社区killme2008维护,开源社区非常活跃。2.2、Metaq 2.x于2012年10月份上线...原创 2019-10-19 21:24:00 · 214 阅读 · 0 评论 -
SpringBoot——监控器
监控器(Listener)@WebListener声明为listen类@ServletComponentScan开启需要扫描的listener类文件,相当于listener启动类implements ServletContextListener 接口,重写contextInitialized(初始化时启动),contextDestroyed(销毁时启动)。@WebListener@S...原创 2019-10-04 13:36:39 · 283 阅读 · 0 评论 -
SpringBoot——过滤器
过滤器@WebFilter配置过滤器名和url策略implement filter接口,并重写方法init(初始化),doFilter(调用时),destory(销毁时)。//过滤的请求不会经过controller层@WebFilter(filterName="MyFilter",urlPatterns="/getAll/*")public class MyFilter implem...原创 2019-10-04 13:05:38 · 220 阅读 · 0 评论 -
SpringBoot——自定义 JSON 解析
自定义 JSON 解析Spring Boot 中 RestController 返回的字符串默认使用 Jackson 引擎,它也提供了工厂类,我们可以自定义 JSON 引擎,本节实例我们将 JSON 引擎替换为 fastJSON,首先需要引入 fastJSON:<dependency> <groupId>com.alibaba</groupId> ...原创 2019-10-03 20:32:55 · 513 阅读 · 0 评论 -
SpringBoot——接口版本控制
接口版本控制一、接口为什么需要版本控制一个系统上线后会不断迭代更新,需求也会不断变化,有可能接口的参数也会发生变化,如果在原有的参数上直接修改,可能会影响线上系统的正常运行,这时我们就需要设置不同的版本,这样即使参数发生变化,由于老版本没有变化,因此不会影响上线系统的运行。一般我们可以在地址上带上版本号,也可以在参数上带上版本号,还可以再 header 里带上版本号,这里我们在地址上带上版本...原创 2019-10-03 20:28:52 · 1838 阅读 · 2 评论 -
SpringBoot——优雅的输入合法性校验
优雅的输入合法性校验一、为什么需要校验为了接口的健壮性,我们通常除了客户端进行输入合法性校验外,在 Controller 的方法里,我们也需要对参数进行合法性校验,传统的做法是每个方法的参数都做一遍判断,这种方式和上一节讲的异常处理一个道理,不太优雅,也不易维护。二、使用示例@GetMapping("authorize")public void authorize(@Valid Auth...原创 2019-10-03 20:23:50 · 1641 阅读 · 0 评论 -
SpringBoot——统一异常处理
统一异常处理一、为什么需要统一异常处理我们在 Controller 里提供接口,通常需要捕捉异常,并进行友好提示,否则一旦出错,界面上就会显示报错信息,给用户一种不好的体验。最简单的做法就是每个方法都使用 try catch 进行捕捉,报错后,则在 catch 里面设置友好的报错提示。如果方法很多,每个都需要 try catch,代码会显得臃肿,写起来也比较麻烦。二、实现原理使用 Spri...原创 2019-10-03 20:17:51 · 117 阅读 · 0 评论 -
SpringBoot——拦截器
拦截器一、为什么需要使用拦截器我们在提供 API 的时候,经常需要对 API 进行统一的拦截,比如进行接口的安全性校验。二、如何进行拦截器设置2.1、创建一个拦截器类:ApiInterceptorpublic class ApiInterceptor implements HandlerInterceptor { //请求之前 @Override public b...原创 2019-10-03 20:11:38 · 402 阅读 · 0 评论 -
SpringBoot2.X——常用注解
SpringBoot2.X-常用注解1、javaConfig配置@Configurationpublic class MoonBookConfiguration { // 如果一个bean依赖另一个bean,则直接调用对应JavaConfig类中依赖bean的创建方法即可 // 这里直接调用dependencyService() @Bean public Bo...原创 2019-10-03 13:27:35 · 377 阅读 · 0 评论 -
数据库连接池——Druid
Druid数据库连接池一、SpringBoot整合Druid1.1、在pom.xml中添加依赖<!-- Druid Pool --><dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1...原创 2019-10-03 16:22:12 · 153 阅读 · 0 评论 -
使用Swagger2构建强大的API文档
Swagger2一、整合Swagger21.1、在pom.xml中添加依赖<!-- swagger2 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>...原创 2019-10-03 13:46:22 · 123 阅读 · 0 评论 -
SpringBoot——打war包
打war包1.1、在 pom.xml 加入如下配置<packaging>war</packaging><build> <finalName>api</finalName> <resources> <resource> <directory>s...原创 2019-10-03 19:54:52 · 110 阅读 · 0 评论 -
SpringBoot——多环境打包
多环境打包一、整合多环境打包功能1.1、修改pom.xml文件<profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <acti...原创 2019-10-03 14:00:17 · 188 阅读 · 0 评论 -
SpringBoot1.X——配置文件详解
一、自定义属性1.1、自定义属性与加载com.didispace.blog.name=程序猿DDcom.didispace.blog.title=Spring Boot教程@Componentpublic class BlogProperties { @Value("${com.didispace.blog.name}") private String name; ...原创 2019-11-11 22:22:01 · 297 阅读 · 0 评论 -
SpringBoot1.X——常用注解
SpringBoot常用注解1.1、@SpringBootApplication查看下 SpringBootApplication 的源码在这个注解类上有 3 个注解,如下:@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = Fil...原创 2019-10-03 20:06:10 · 171 阅读 · 0 评论 -
SpringBoot1.X——MockMvc单元测试
@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = MockServletContext.class) @WebAppConfiguration public class ApplicationTests { private MockMvc mvc; @Before...原创 2019-11-11 22:44:18 · 159 阅读 · 0 评论