springboot
文章平均质量分 83
洪宏鸿
一个能文能武的全栈开发 :)
展开
-
Mockito 的 MockMvc:零基础教程
MockMvc 是 Spring Test 模块的一部分,它允许我们对 Spring MVC 控制器进行单元测试,而无需启动完整的 Spring 应用上下文。使用MockMvc,我们可以模拟 HTTP 请求和响应,验证控制器是否按预期处理请求。简而言之,MockMvc 就像是一个虚拟的 SpringMVC,能够让我们快速测试控制器,就像在真实环境中一样。MockMvc 基于 Spring Test 模块,通过创建虚拟的 Spring MVC 环境,模拟 HTTP 请求和响应。原创 2023-04-26 11:54:06 · 3440 阅读 · 0 评论 -
Spring Boot Web项目打包成 exe文件
为了在Windows上运行这个JAR文件,我们需要创建一个批处理(batch)文件。:为了确保exe文件在其他计算机上正常运行,目标计算机上需要安装正确版本的Java运行时环境(JRE)。首先,确保你的Spring Boot项目已经配置了正确的插件,以便生成一个可执行的JAR文件。这样,你就成功将Spring Boot Web项目打包成一个可以在Windows上运行的exe文件了。有多种方法可以将JAR文件和批处理文件打包成一个exe文件。这个批处理文件会启动Java并运行你的Spring Boot应用。原创 2023-04-25 17:23:52 · 1682 阅读 · 1 评论 -
Spring Boot:如何创建安全字符白名单防御 XPath 注入攻击
XPath 注入攻击是一种针对基于 XPath 查询的 XML 数据的攻击手段。攻击者通过构造恶意的 XPath查询语句,篡改原始查询逻辑,以达到未授权访问数据、泄露敏感信息等目的。首先,我们需要定义一个安全字符白名单,只包含允许在 XPath 查询中使用的字符。你可以根据实际需求调整白名单内容。本篇教程向你展示了如何在 Spring Boot 应用中创建一份安全字符白名单,防御 XPath 注入攻击。我们首先介绍了 XPath。原创 2023-04-25 00:00:11 · 481 阅读 · 0 评论 -
Spring Boot 集成 H2:零基础教程
H2 数据库是一款轻量级、开源、纯 Java 实现的关系型数据库,其特点是占用资源少、启动速度快、性能优越。正因如此,H2数据库成为了许多开发者在进行快速原型开发、单元测试、微服务等场景中的首选。在 Spring Boot 中集成 H2 数据库非常简单,只需添加相关依赖并进行简单的配置,即可愉快地使用 H2 数据库了。H2 数据库通过纯 Java 代码实现了 SQL 数据库的功能。在 Spring Boot 项目中, 我们通过添加 H2 数据库的依赖,Spring Boot 会自动检测到。原创 2023-04-24 23:55:07 · 2182 阅读 · 0 评论 -
junit springboot Mockito 如何模拟测试一个web接口
以上示例展示了如何使用JUnit、Spring Boot和Mockito模拟测试一个Web接口。在实际项目中,你可能需要根据自己的需求对这个流程进行调整。掌握使用JUnit、Spring Boot和Mockito进行Web接口测试的方法。下面是一个简单的步骤,以及如何使用这些框架来模拟测试一个Web接口。总之,根据你的具体需求,你可以使用JUnit、Spring Boot和Mockito组合的方式灵活地进行Web接口测试。确保覆盖各种可能的场景。原创 2023-04-20 18:34:58 · 947 阅读 · 0 评论 -
springboot之当我们 mock 一个方法, Mockito 帮我们做了什么
在实际的测试过程中,当 mock 对象的方法被调用时,Mockito 将按照预期的行为返回预定义的答案,从而模拟真实对象的行为,以便进行单元测试和集成测试。获取当前正在进行的 stubbing,该 stubbing 保存了对该 mock 对象进行的最近的 stubbing。通过这个方法,Mockito 可以为 mock 对象设置一些预期的行为,以便在测试中模拟真实的对象行为。这个方法是 Mockito 框架中的一个重要方法,用于设置一个 mock 对象的行为。返回当前正在进行的 stubbing 对象。原创 2023-04-20 17:04:52 · 822 阅读 · 0 评论 -
springboot + junit + mockito真香, 可 springboot 是创建 @MockBean/@SpyBean 代理对象的呢?
期间问了 ChatGPT4.0 一些问题, 说的云里雾里, 最后还是源码靠谱的说。为了搞懂 mockito 底层是如何通过代理对象走到代理的逻辑的, 我可太难了。原创 2023-04-20 12:05:53 · 1102 阅读 · 0 评论 -
Dubbo 与注册中心
在 Dubbo 中,注册中心起到服务注册和发现的作用。服务提供者(被调用端)将其提供的服务注册到注册中心,而服务消费者(调用端)则从注册中心获取服务提供者的信息。总之,注册中心在 Dubbo 中扮演着关键角色,它负责服务注册、发现、负载均衡和故障转移等功能。服务提供者和消费者通过配置与注册中心进行交互,实现服务的自动发现和调用。在 Dubbo 中,服务提供者和服务消费者通过配置来与注册中心进行交互。原创 2023-04-18 16:11:45 · 334 阅读 · 0 评论 -
Dubbo 负载均衡
Spring Cloud Alibaba 的负载均衡组件主要是集成了 Netflix Ribbon 和 Spring Cloud LoadBalancer,它们是基于客户端的负载均衡解决方案,适用于基于 RESTful API 的微服务场景。总之,在 Spring Boot 中,你可以通过配置文件或者注解的方式来设置 Dubbo 的负载均衡策略。在生产环境中,推荐使用 Dubbo 的负载均衡能力,因为它能够根据服务提供者的数量和性能自动分配请求,从而提高整体系统的性能和稳定性。属性来设置负载均衡策略。原创 2023-04-18 16:07:12 · 504 阅读 · 0 评论 -
Dubbo 如何解决粘包拆包问题,以及底层的序列化协议
在 Dubbo 协议中,一条消息由报头和报文两部分组成。报头是固定长度的(16字节),包含了报文的长度、协议版本等信息。报文则是可变长度的,用于存储实际的数据。在发送数据时,Dubbo 会先将报文序列化成字节流,然后计算其长度。接着,Dubbo 会构造一个包含报头和报文的字节流,将报文长度等信息写入报头,最后将整个字节流发送出去。这样,接收端在收到数据后,可以根据报头中的长度信息正确地拆分报文。原创 2023-04-18 16:04:10 · 629 阅读 · 0 评论 -
Dubbo 服务消费者和服务提供者建立通信源码浅析
我们了解了 Dubbo 在服务调用过程中如何处理异常信息,包括服务提供者处理异常、序列化异常信息、消费者反序列化异常信息以及消费者处理异常等。通过以上分析,我们了解了 Dubbo 服务调用过程中的关键组件和流程,包括服务调用信息的反序列化、过滤器处理、Java 反射机制以及结果序列化等。这样,消费者可以像调用本地方法一样调用远程服务,而底层的远程通信和序列化细节都由 Dubbo 框架负责处理。接口的实现类负责实际的远程通信,将封装好的调用信息发送到远程服务提供者。在收到服务提供者的响应后,原创 2023-04-18 15:56:32 · 351 阅读 · 0 评论 -
Dubbo 在服务消费者和服务提供者之间如何建立通信
Dubbo 相较于 Feign 具有更高效的通信协议、序列化方式、传输层框架、连接管理以及负载均衡和容错机制,这些因素都使得 Dubbo 在性能上具有优势。但需要注意的是,这并不意味着 Dubbo 总是比 Feign 更好。实际上,根据不同的应用场景和需求,您可能会选择使用 Feign 或其他 RPC 框架。例如,如果您的应用需要与其他基于 HTTP/REST 的服务进行交互,那么使用 Feign 可能更加适合。原创 2023-04-18 11:10:29 · 1012 阅读 · 0 评论 -
Google 的 Protobuf, 快就完事啦
例如,可以通过将公共字段放在一个单独的消息中,然后将这个消息作为另一个消息的字段来实现类似于类继承的功能。总之,在 Spring Boot 中使用 Protobuf 作为 Redis 的序列化和反序列化工具可以提高应用程序的性能和可扩展性。然而,在实际应用中,您可以通过上述方式在 Protobuf 中表示嵌套类、集合以及类似于类继承和接口实现的概念。在 Spring Boot 中使用 Protobuf 作为 Redis 的序列化和反序列化工具,首先需要添加相关的依赖,然后配置 RedisTemplate。原创 2023-04-17 18:23:44 · 2723 阅读 · 0 评论 -
JdbcTemplate、JPA和MyBatis效率还是易用,你说了算
在执行效率方面,JdbcTemplate通常会有更好的性能,因为它允许直接编写SQL语句并有更多的控制权。MyBatis在性能和便捷性之间取得了平衡,而JPA则以自动化和简化为主要优势,但可能在某些情况下性能较差。原创 2023-04-30 23:12:23 · 1551 阅读 · 0 评论 -
springboot 池化 redis?
可以在Spring Boot应用中使用Redisson连接池来执行Redis操作。请注意,根据您的实际需求,可以使用更多的Redisson API来操作Redis的其他数据结构和功能。通过以上步骤,您可以在Spring Boot中配置Redisson连接池。在Spring Boot中使用Redisson时,可以通过配置文件来设置连接池参数。在Spring Boot中配置了Redisson连接池后,您可以在需要使用Redis的地方注入。在此文件中,您可以配置Redisson的连接池参数。原创 2023-04-17 23:48:23 · 428 阅读 · 0 评论 -
Guava ListenableFuture/springboot CompletableFuture/JavaScript Promise 异步回调
在 Spring Boot 中,可以使用 `CompletableFuture` 类来实现类似 Guava 库的 `ListenableFuture` 的回调功能,而不会导致阻塞。`CompletableFuture` 是 Java 8 中引入的一个功能强大的异步编程工具,它实现了 `Future` 接口,并提供了一系列非阻塞的回调方法。原创 2023-04-14 14:37:39 · 297 阅读 · 0 评论 -
log4j2精华之异步日志MQ篇
如何在Spring Boot中通过RabbitMQ实现日志异步记录的一个简单示例。你可以根据实际需求对其进行扩展和优化。原创 2023-04-13 18:07:00 · 706 阅读 · 0 评论 -
Mockito框架常用注解
Mockito框架常用注解包括:1. @Mock:用于创建被mock的对象实例。2. @Spy:用于创建被spy的对象实例,即保留原对象的行为。3. @InjectMocks:用于创建需要注入被mock对象的类的实例。4. @Captor:用于捕获方法调用的参数,方便进行进一步的断言和校验。5. @MockBean:用于创建Spring Bean的Mock对象,主要用于集成测试。6. @MockitoSettings:用于设置Mockito框架的全局设置。原创 2023-04-12 17:16:52 · 3345 阅读 · 0 评论 -
单元测试之模拟外部依赖-Mockito 框架
Mockito 是一个基于 Java 的单元测试框架,可以模拟对象、行为和结果。Mockito 的主要目的是通过模拟外部依赖来提高单元测试的可靠性和速度。原创 2023-04-12 17:16:37 · 544 阅读 · 0 评论 -
springboot web 接口入参相关注解跟请求报文示例, 煎饼果子来一套, 加蛋
常见的 Spring Boot Web 接口入参相关的注解,可以根据实际需求进行选择。原创 2023-04-12 17:13:48 · 304 阅读 · 0 评论 -
Spring Validation 分组校验什么来的, 了解一下
Spring Validation是Spring Framework提供的一种轻量级、灵活的数据验证框架,用于对Java对象进行校验。它主要解决了数据校验这一常见问题,让开发人员能够方便地对数据进行验证,从而保证数据的有效性和安全性。提供了一套注解,用于对Java对象进行各种校验。支持嵌套校验,可以对一个对象中的属性进行递归校验。支持分组校验,可以根据不同的校验场景,使用不同的校验规则。支持国际化,可以根据不同的语言环境,使用不同的校验提示消息。原创 2023-04-13 10:37:51 · 407 阅读 · 0 评论 -
Spring Validation 常用的注解有哪些?
Spring Validation 这些注解可以让我们更加灵活地进行校验,满足复杂的业务需求。需要根据具体的业务场景来选择合适的校验注解。同时,我们还可以通过自定义注解和校验器来满足更加复杂的校验需求。原创 2023-04-13 10:37:18 · 418 阅读 · 0 评论 -
Hello Spring Validation, 我爱你不问归期
需要注意的是,在实际应用中,我们可能需要对不同的属性添加不同的校验规则,这时需要使用不同的校验注解,并且根据实际情况进行组合。同时,Spring Validation还支持自定义校验注解和校验器,可以满足更加复杂的校验需求。原创 2023-04-13 10:23:53 · 144 阅读 · 0 评论 -
Spring Validation 咦,前端没做校验吗? 前端: 怪我咯, 网络没有绝对的安全, 不知道有中间人攻击呀
Hibernate Validator是比较成熟和稳定的校验框架,提供了一些高级特性和易用的功能,适合大多数校验场景。Apache BVal则更加灵活和定制化,适合一些特定的校验场景和性能要求较高的场景。在选择校验框架时,需要根据具体的需求和项目情况进行选择。原创 2023-04-13 10:22:27 · 131 阅读 · 0 评论 -
Mockito 调用模拟对象全解析
Mockito能够调用到我们通过when注册到InvocationContainer的调用信息,是通过代理对象捕获方法调用信息,并将它们保存到InvocationContainer中实现的。在测试过程中,我们可以使用Mockito提供的各种方法来定义Mock对象的行为和验证方法调用,从而实现单元测试的独立性和可重复性。原创 2023-04-13 10:16:44 · 1687 阅读 · 0 评论 -
java-springboot-单元测试是可以重复执行的,不能受到外界环境的影响
单元测试是可以重复执行的,不能受到外界环境的影响。说明:单元测试通常会被放到持续集成中,每次有代码 check in 时单元测试都会被执行。如果单测对外部环境(网络、服务、中间件等)有依赖,容易导致持续集成机制的不可用。正例:为了不受外界环境影响,要求设计代码时就把 SUT 的依赖改成注入,在测试时用 spring这样的 DI 框架注入一个本地(内存)实现或者 Mock 实现。原创 2023-04-12 17:16:08 · 447 阅读 · 0 评论 -
什么 XO, 喝酒吗? 哦, DO/DTO/BO/AO/VO 啊, 不知道, 我就知道 XO 能帮我们转换他们, 你说我醉了, 我没醉我还能喝
为了实现分层领域模型对象之间的简洁且高效的转换,可以使用 MapStruct。MapStruct 是一个高性能的 Java 代码生成库,可以自动生成对象之间属性映射的代码。与其他对象映射库(如 ModelMapper)相比,MapStruct 在运行时性能更高,因为它是基于编译时生成的代码,而不是运行时的反射。通过使用 MapStruct 结合 Java 泛型,我们创建了一个简洁且高效的转换工具类。这个工具类可以方便地实现分层领域模型对象之间的转换,同时保持了 MapStruct 的编译时代码生成优势.原创 2023-04-12 10:45:13 · 235 阅读 · 0 评论 -
springboot 数据脱敏,想看真实数据,那得加钱
数据脱敏(Data Masking)是一种数据保护技术,用于保护敏感数据的隐私安全。数据脱敏的目的是将敏感数据中的某些字段或部分信息进行隐藏或替换,以避免这些数据被未经授权的人员或者恶意攻击者窃取、篡改、泄漏或滥用原创 2023-04-11 09:46:41 · 518 阅读 · 0 评论 -
如何优化你的springboot API 性能
以上这些建议都是根据实际情况和具体需求来进行选择和优化的。需要综合考虑应用程序的性能瓶颈、业务需求和技术方案,从而制定出合适的优化策略原创 2023-04-11 09:45:43 · 975 阅读 · 1 评论 -
springboot中进行单元测试, 和数据库相关的单元测试,可以设定自动回滚机制, 我要怎么设定自动回滚呢?事务自动提交呢
自动提交事务可能会对数据库产生影响,尤其是在测试方法中对数据库进行修改操作时。建议在进行单元测试时,使用自动回滚机制来保证测试的准确性和稳定性。如果您确实需要使用自动提交事务,请谨慎使用,并注意测试方法中对数据库操作的影响。和数据库相关的单元测试,可以设定自动回滚机制, 我要怎么设定自动回滚呢?原创 2023-04-09 12:12:32 · 1093 阅读 · 0 评论 -
jpa是如何进行批量数据库操作, 还不够, 分阶段提交怎么样?
每次提交事务后,JPA 会将缓存中的数据清空,以便加载新的数据。这样可以防止内存溢出和数据库连接超时的问题。另外,在进行分阶段批量更新操作时,应该根据实际情况来调整阶段大小,以便达到最佳的性能和稳定性原创 2023-04-09 12:00:17 · 901 阅读 · 0 评论 -
Elastic-Job 你好呀, 我是阿珍的阿强
Elastic-Job 是一款基于 ZooKeeper 和 Quartz 实现的分布式任务调度框架,它提供了分片处理和分布式任务调度能力。原创 2023-04-08 17:56:38 · 899 阅读 · 0 评论 -
java-分布式的时间调度, 花落知多少
需要根据具体的需求和场景选择合适的框架。xxl-job 和 Elastic-Job 都是相对轻量级的框架,使用起来比较简单,适用于一些简单的分布式任务调度场景。Quartz 是一个功能强大的任务调度框架,适用于各种复杂的任务调度场景;Spring Cloud Task 和 Apache Airflow 则更加注重任务调度的灵活性和可扩展性;Eureka + Quartz 则更加注重分布式任务调度的可靠性和扩展性原创 2023-04-08 15:30:56 · 591 阅读 · 0 评论 -
关于java时间调度, 简单调度,并发调度,分布式调度, 你知几何
需要根据具体的需求和场景选择合适的框架。xxl-job 和 Elastic-Job 都是相对轻量级的框架,使用起来比较简单,适用于一些简单的分布式任务调度场景。Quartz 是一个功能强大的任务调度框架,适用于各种复杂的任务调度场景;Spring Cloud Task 和 Apache Airflow 则更加注重任务调度的灵活性和可扩展性;Eureka + Quartz 则更加注重分布式任务调度的可靠性和扩展性。原创 2023-04-08 11:59:15 · 554 阅读 · 0 评论 -
铁杵磨成针, springboot 如何优雅重试之Spring Retry
Spring Retry是一个非常有用的库,可以帮助处理一些特定类型的问题。但是,在使用时需要注意它的限制和缺点,并根据实际情况进行适当的配置和使用。原创 2023-04-08 11:07:18 · 255 阅读 · 0 评论 -
Redission 中的 RedLock 原理实现, springboot 你造吗?
为什么需要 redis 分布式锁使用 RedLock, 原来的使用 SetNX 实现分布式锁有什么问题Redlock是Redis官方提供的一种分布式锁算法,它基于Paxos算法和Quorum原理,可以在Redis集群环境下保证互斥性和可用性原创 2023-04-07 23:49:29 · 1741 阅读 · 3 评论 -
jdk8的时间表示, 你真的在乎吗?
java8中, 时间使用上可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar,DateTimeFormatter 代替 SimpleDateFormat,mysql的时间相关字段对应, springboot中, 我要如何考虑时区问题原创 2023-04-07 00:09:56 · 367 阅读 · 0 评论 -
在springboot项目中全局设置都用 UTC+8
虽然可以在springboot项目中全局设置都用 UTC+8, 但是我觉得其实也没必要平时用 UTC 时间作为标准就够用了, 只有需要在更换时区的时候才将时区切换到 UTC+8 就可以了原创 2023-04-07 00:12:17 · 1976 阅读 · 0 评论 -
springboot应用mysql数据库服务器在不同时区会有时区问题吗?
在将时间数据存储到数据库时,所使用的时区取决于MySQL JDBC驱动程序的时区。例如,当`serverTimezone`设置为`UTC+8`时,MySQL JDBC驱动程序将在插入和查询时间数据时使用`UTC+8`时区。请注意,虽然这种配置方式可以确保应用程序与数据库之间的时间数据一致性,但如果有其他应用程序或服务也访问同一数据库,且它们使用不同的时区配置,可能会导致数据不一致。为了避免这种情况,通常建议将所有时间数据统一存储为UTC时间,并在需要时在应用程序中进行时区转换。原创 2023-04-07 00:09:35 · 591 阅读 · 0 评论 -
Jackson之ObjectMapper常用用法
ObjectMapper 是 Jackson 序列化和反序列化 JSON 和 Java 对象的核心类,提供了许多用于定制序列化和反序列化的方法和配置选项原创 2023-04-05 22:43:37 · 7979 阅读 · 0 评论