标签: SpringBoot

Daniel_Wu | 2023-09-27 | JavaSpringBoot

OpenApi文档与spring-doc结合ResponseBodyAdvice下正确显示返回类型

java @Slf4j @Component public class CustomGenericResponseService extends GenericResponseService { / Instantiates a new Generic response builder. @param operationService the operation builder @param returnTypeParsers the return type parsers @param springDocConfigProperties the spring doc config properties @param propertyResolverUtils the property resolver utils / public CustomGenericResponseService(OperationServic

 297 |  0 |  0 JavaSpringBoot

猎隼丶止戈 | 2023-08-18 | Java编译打包SpringBoot

SpringBoot 包进行加密

前言 笔者使用 ProGuard ​ 最后没跑起来,打包后,跑一半碰到一些奇奇怪怪的 Bean 缺失,所以,你们能跑就能跑,不能跑看其他文章吧。 ProGuard 介绍 ProGuard 是一个用于 Java 字节码的代码优化和混淆工具。它能够在将 Java 代码编译成字节码后,对字节码进行优化、压缩和混淆,以减小代码体积、提高执行性能,并增加代码的安全性。 主要提供以下功能: 1. 代码混淆:ProGuard 可以对类、方法、字段等进行重命名,使得反编译后的代码难以理解和逆向工程。这有助于保护你的代码免受恶意用户的逆向分析。 2. 代码压缩:ProGuard 可以删除无用的类、方法、字段和代码块,减小生成的字节码文件大小。这有助于减少应用程序的下载和加载时间。 3. 类优化:ProGuard 可以执行一些优化操作,例如移除无用的类和方法调用、内联短方法、合并常量等,从而提高应用程序的运行性能。 4. 资源压缩:除了优化字节码,ProGuard 还可以处理应用程序的资源文件,如图片、布局文件等,从而减小应用的 APK 大小。 5. 消除未使用的代码:...

 575 |  1 |  1 Java编译打包

青苗 | 2023-08-10 | SpringBoot

Spring Boot AOP 拦截自定义注解

自定义注解 Test java @Documented @Inherited @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD, ElementType.TYPE}) public @interface Test { String value() default ""; } AOP TestAspect java @Aspect @Component public class TestAspect { / 切入点 / @Pointcut("@annotation(com.aizuda.annotation.Test)") public void testPointCut() { } @Before("testPointCut()") public void doBefore(JoinPoint joinPoint) { Test test = this.getT

 209 |  0 |  0 SpringBoot

大叔 | 2023-06-21 | Java微服务SpringBootMysql

shardingsphere 4.x(一)简介及Sharding-JDBC使用

Apache ShardingSphere 由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的基于数据库作为存储节点的增量功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。 关系型数据库当今依然占有巨大市场份额,是企业核心系统的基石,未来也难于撼动,我们更加注重在原有基础上提供增量,而非颠覆。 Sharding-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。 适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC; 支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, HikariCP 等; 支持任意实现 JDBC 规范的数据库,目前支持 MySQL

 540 |  0 |  0 Java微服务

青苗 | 2023-05-16 | SpringBoot

Spring Cloud 基于 Nacos 本地优化负载均衡配置

基于 Nacos 负载均衡本地优先处理策略 下面是处理本地优先负载均衡,未处理 nacos 集群优先,这部分代码主要也是用于本地调试,因此集群优化不在考虑范围采用默认随机策略。 java @Slf4j public class DevNacosLoadBalancer extends NacosLoadBalancer { private ObjectProvider<ServiceInstanceListSupplier serviceInstanceListSupplierProvider; private final String serviceId; public DevNacosLoadBalancer(ObjectProvider<ServiceInstanceListSupplier serviceInstanceListSupplierProvider, String serviceId, NacosDiscoveryProperties nacosDiscoveryProperties) { super(s

 409 |  0 |  0 SpringBoot

青苗 | 2023-05-11 | SpringBoot

Spring boot 重试框架 spring-retry 轻松解决 http 重试

本文介绍是 API 业务重试,如果是 spring Cloud 分布式重试可以使用框架 https://github.com/aizuda/easy-retry 引入依赖 https://search.maven.org/artifact/org.springframework.retry/spring-retry xml <dependency <groupId org.springframework.retry</groupId <artifactId spring-retry</artifactId <version 2.0.1</version </dependency 注解 @EnableRetry 启动 java @EnableRetry @SpringBootApplication public class AzdApplication { ... } @Retryable java @Retryable(value = RestClientException.class

 719 |  0 |  0 SpringBoot

青苗 | 2023-03-21 | SpringBoot

Spring boot ResponseBodyAdvice 统一返回 feign 调用字符串问题解决

Spring boot ResponseBodyAdvice 统一返回 feign 调用字符串问题解决 统一返回类核心处理逻辑 java @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { if (body instanceof RestResult) { return body; } RestResult restResult = RestResult.ok(body); if (returnType.getParameterType().isAssignableFrom(String.class)) {

 336 |  0 |  0 SpringBoot

青苗 | 2023-03-09 | SpringBoot

Spring Boot 注解说明

Spring Boot 注解说明 常用注解 | 注解 | 说明 | | -- | -- | | SpringBootApplication | 替代 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan | | ImportAutoConfiguration | 导入配置类,一般做测试的时候使用,正常优先使用 | | SpringBootConfiguration | 替代@Configuration | | ImportResource | 将资源导入容器 | | PropertySource | 导入properties文件 | | Role | bean角色定义为ROLE_APPLICATION(默认值)、ROLE_SUPPORT(辅助角色)、ROLE_INFRASTRUCTURE(后台角色,用户无感) | | Scope | 指定bean的作用域,默认singleton,其它包括prototype、request、session、globalSession | | Lazy | 使be

 585 |  0 |  0 SpringBoot

青苗 | 2023-02-27 | SpringBoot

idea spring boot test 单元测试 No tests found for given includes

gradle 测试异常 No tests found for given includes 检查以下几个点 可能存在问题 Junit 5 xml test { useJUnitPlatform() } 依赖存在 xml testCompileOnly("org.springframework.boot:spring-boot-starter-test") 指定 idea 编译 ![b59a7e34fb9e434894893605181a225c.png](//img01.aizuda.com/v1/image/preview/1630192311008759808)

 523 |  0 |  0 SpringBoot

Tony | 2023-02-22 | SpringCloud后端开发环境Java微服务SpringBoot

OpenFeign添加认证Token

微服务--》服务间的调用【Token传递】 网上很多的论坛,都会有类似的文章,讲解如何解决服务之间Token传递问题,五花八门!! 简单讲解--》 技术选型:Spring Boot+Spring Security+OpenFeign 解决问题:服务之间调用Token之间传递的问题 上代码--》 @FeignClient 注释里面有一个属性参数: configuration 来配置拦截器 示例: @FeignClient(value = "注册中心服务名称",configuration = {BioTechLeagueFeignInterceptor.class}) BioTechLeagueFeignInterceptor 类中实现 RequestInterceptor 接口,重写 apply(RequestTemplate requestTemplate) 方法,可以在方法内部写自定义逻辑,示例代码简单解决服务之间调用Token之间传递的问题 示例: @Configuration public

 385 |  2 |  0 SpringCloud后端开发环境

青苗 | 2023-02-02 | SpringBoot

spring boot 3 javax.validation.constraints.xxx 找不到

升级 Spring Boot 3.X 相关 javax 包需要调整例如 import javax.validation.constraints.NotBlank; 修改为 import jakarta.validation.constraints.NotBlank; 建议全局替换 import javax. 修改为 import jakarta. 依赖包 dependency("jakarta.servlet:jakarta.servlet-api:6.0.0")

 502 |  0 |  0 SpringBoot

FayeWong | 2023-01-28 | JavaSpringBoot

kooMessage-org-sdk:华为云koomessage工具包

kooMessage-org-sdk 华为云koomessage工具包 [github](https://github.com/fayewon/kooMessage-org-sdk) 简述 &nbsp;&nbsp;&nbsp; 发送富文本短信 配置 java @Configuration public class Config implements CustomKMConfigureService { / 修改和自定义新的请求对象 @param configReplacer @param tokenMessageCopy @param kooMessageUrlCopy @return / @Bean @Override public ConfigureReplacer modifyAndNewRequest(ConfigureReplacer configReplacer, TokenMessageCopy tokenMessageCopy, K

 272 |  1 |  0 JavaSpringBoot

青苗 | 2022-12-09 | SpringBoot

Spring 注入引用类 RuntimeBeanReference

RuntimeBeanReference 用于在运行时去获取 BeanDefinition ,因为在我们创建这个 BeanDefinition 的时候我们只知道他的 beanName ,并不确定是否已经注册了,这个时候就需要用 RuntimeBeanReference 例如 java candidateComponents.forEach(t { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MapperFactoryBean.class); Class<? beanClass = ClassUtils.forName(t.getBeanClassName()); builder.addPropertyValue("mapperInterface", beanClass); builder.addPropertyValue("qcrud", new RuntimeBeanReference(Qcrud.

 436 |  0 |  0 SpringBoot

马铃薯头 | 2022-11-21 | JavaSpringBoot

SpringBoot项目分离打包

1. 为什么要分离打包 SpringBoot项目每次改动,都需要将整个项目重新打包部署,而且打包后的jar包太大,远程部署时很不方便,尤其是网让吃了的时候,整个人能烦死。 所以把lib里面的jar包从项目分离出来,每次部署只需要发布修改过的jar包就行啦。 2. maven分离打包 2.1. 修改pom.xml配置 创建SpringBoot项目后默认的打包配置: xml <build <plugins <plugin <groupId org.springframework.boot</groupId <artifactId spring-boot-maven-plugin</artifactId </plugin </plugins </build 2.1.1. 在properties标签中定义变量 xml <properties <!--依赖输出目录- <lib-path lib</lib-pat

 920 |  1 |  0 JavaSpringBoot