Spring
文章平均质量分 55
耘田
洞察 思考 实践
格物致知,耕耘心田
展开
-
OpenFeign问题汇总
OpenFeign常见问题:超时配置,Header设置不生效,UndeclaredThrowableException的产生原因,OKhttpClient 连接池的配置原创 2023-03-12 14:23:05 · 350 阅读 · 0 评论 -
OpenFeign调用产生UndeclaredThrowableException
OpenFeign调用综上,UndeclaredThrowableException 是动态代理类 在调用过程中,除了方法签名throws声明的异常类、RuntimeException 和 Error 之外的异常都会包装为 UndeclaredThrowableException 抛出。捕获 UndeclaredThrowableException 后, 获取 getUndeclaredThrowable();方法签名 throws 某个不希望被包装的异常 xxException;原创 2023-03-11 23:39:44 · 598 阅读 · 0 评论 -
Spring文件上传属性配置
Spring 处理文件上传,你是否遇到一下问题?这里一次解决所有问题原创 2023-03-08 15:58:34 · 236 阅读 · 0 评论 -
@PropertySource 使用
PropertySource 可以加载指定的属性文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和@ConfigurationProperties 使用。原创 2022-08-05 12:30:21 · 1116 阅读 · 0 评论 -
Spring Boot 元数据文件的应用与生成
SpringBootjar包含元数据文件,提供所有支持的配置属性的详细信息。这些文件旨在允许IDE开发人员在用户使用application.properties或application.yml文件时提供上下文帮助和“代码完成”。原创 2022-07-15 12:42:24 · 601 阅读 · 0 评论 -
springboot starter的实现方式
配置到 spring.factories 中【推荐】自定义 @Enablexxx 注解【推荐】使用 @Import 注解原创 2022-07-14 10:16:06 · 340 阅读 · 0 评论 -
SpringBoot 拦截顺序 Filter Interceptor
相关类包路径与继承关系package org.apache.catalina.core;public final class ApplicationFilterChain implements FilterChainpackage javax.servlet.http;public abstract class HttpServlet extends GenericServletpackage org.springframework.web.servlet;public abstrac原创 2022-04-24 20:11:00 · 644 阅读 · 0 评论 -
Spring Web API 测试
针对spring web API 做接口测试依赖组件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </de原创 2021-12-29 12:21:58 · 343 阅读 · 0 评论 -
@Mock@Spy@MockBean@SpyBean对比
mockito 注解package org.mockito;mockito 定义的注解主要有三个:@Mock@Spy@InjectMocks// demo@InjectMocksprivate MyService myService;@MockMyMockMapper myMockMapper;@SpyMySpyMapper mySpyMapper;说明@Spy和@Mock生成的对象不受spring管理,也不会替换Spring对应类型的bean@InjectMo原创 2021-12-01 18:10:18 · 3238 阅读 · 0 评论 -
SpringBoot @Value 属性注入
ymlprefix: string: yw array: array1,array2,array3 list: list1,list2,list3 map: "{ 'key1': 'value1', 'key2': 'value2', 'key3': 'value3' }" mapList: "{ key1: 'v11,v12', key2: 'v21,v22',原创 2021-11-23 20:30:38 · 1307 阅读 · 0 评论 -
SpEL小试牛刀
背景SpEL(Spring Expression Language),即Spring表达式语言,语言简洁,功能强大。示例private static final Cache<String, Expression> EXPRESSION_CACHE = CacheBuilder.newBuilder() .maximumSize(8192) .initialCapacity(512) .expireAfterWrite(1L, TimeUnit.HOURS) .build()原创 2021-11-09 15:57:38 · 457 阅读 · 0 评论 -
FeignClient 使用 @SpringQueryMap 注解不解析父类字段
背景spring cloud 项目使用feign的时候都会发现一个问题,就是get方式无法解析对象参数。其实 OpenFeign 提供了 @QueryMap 注解支持Map形式的参数转换。 但不幸的是和 Spring 不适配,因为缺少 value 这个属性,所以推荐使用 @SpringQueryMap 以解决 GET 请求的时候, 传递对象属性的问题。问题但是问题又来了,当使用子对象继承父类的时候会无法传递父类的属性。探究源码查看源码发现,默认使用的 QueryMapEncoder 是原创 2021-11-08 17:46:06 · 2337 阅读 · 0 评论 -
OpenFeign实战
默认Client替换Feign 整体框架非常小巧,在处理请求转换和消息解析的过程中,基本上没什么时间消耗。真正影响性能的,是处理Http请求的环节。由于默认情况下,Feign采用的是JDK的HttpURLConnection,所以整体性能并不高。需要进行性能优化,通常采用ApacheHttpClient或者OKHttp,加入连接池技术。ApacheHttpClient配置类HttpClientFeignLoadBalancedConfiguration依赖<!-- Http Cl原创 2021-09-27 21:38:14 · 1098 阅读 · 0 评论 -
Eureka Server 常用接口
查询实例信息GET/eureka/apps/eureka/apps/{appID}/eureka/apps/{appID}/{instanceID}/eureka/instances/{instanceID}更新实例状态PUT# 下线实例/eureka/apps/{appID}/{instanceID}/status?value=OUT_OF_SERVICE# 上线实例/eureka/apps/{appID}/{instanceID}/status?value=OUT_OF_SE原创 2021-06-17 17:33:46 · 1609 阅读 · 0 评论 -
spring-boot-devtools 热部署配置
步骤如下:1. 项目添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>```xml## 2. 项目插件配置原创 2021-01-23 15:23:29 · 362 阅读 · 0 评论 -
Spring 动态注册 Bean —— ImportBeanDefinitionRegistrar
简介Spring官方通过ImportBeanDefinitionRegistrar实现了 Bean 的动态注入。很多三方框架集成Spring的时候,都会通过该接口,实现扫描指定的类,然后注册到spring容器中。 比如Mybatis中的Mapper接口,springCloud中的FeignClient接口,都是通过该接口实现的自定义注册逻辑。接口public interface ImportBeanDefinitionRegistrar { void registerBeanDefinitio原创 2021-01-19 19:07:30 · 1302 阅读 · 0 评论 -
CommandLineRunner 与 ApplicationRunner
功能在容器启动之后,为了实现部分资源的预热,可以通过SpringBoot的扩展接口(CommandLineRunner 与 ApplicationRunner)来实现。注意:执行时机为容器启动完成的时候使用示例@Componentpublic class WarmUpCommandLineRunner implements CommandLineRunner { @Override public void run(String... var1) throws Excep原创 2021-01-19 14:51:16 · 253 阅读 · 0 评论 -
ConfigurationProperties 使用
@ConfigurationProperties注解的bean将自动被Environment属性配置。 这种风格的配置特别适合与SpringApplication的外部YAML配置进行配合使用。正确使用姿势如下:1. 配合@Component@Data@Component@ConfigurationProperties(prefix = "yun.tian")public class AnnotationProperties { private String name;}2. 配合E.原创 2021-01-19 11:19:00 · 470 阅读 · 0 评论 -
spring-cloud-stream-binder-kafka发消息指定 partitionKey
组件版本<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-kafka</artifactId> <version>2.1.4.RELEASE</version> </dependency原创 2021-01-18 16:14:14 · 1793 阅读 · 0 评论 -
ZuulServlet 是如何加载的?
首先看 ZuulServerAutoConfiguration @Bean public ZuulController zuulController() { return new ZuulController(); }加载 ZuulController public ZuulController() { setServletClass(ZuulServlet.class); setServletName("zuul"); setSupportedMethods((String[原创 2020-09-25 18:15:50 · 312 阅读 · 0 评论 -
Bean Validation
概述JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。(详见Reference[1])JSR-303 constraint,如: @Null/@NotNull/@Min/@Max,位于 package javax.va原创 2020-09-09 16:21:30 · 214 阅读 · 0 评论 -
Spring定时任务的实现方式
一.分类从实现的技术上来分类,目前主要有三种技术(或者说有三种产品):Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来转载 2017-12-18 14:13:09 · 252 阅读 · 0 评论 -
Spring注解ConditionalOnProperty
通过属性值来控制configuration是否生效@Configuration@ConditionalOnProperty(name="config.enabled",havingValue = "true")public class ConfigBean { //...}// 属性设置config.enabled=true单一属性(不设置前缀 prefix )name指定...原创 2018-11-22 14:46:14 · 11814 阅读 · 2 评论 -
注解系列——常用注解
Bean声明@Controller用于标注控制层组件@Service用于标注业务层组件@Repository用于标注数据访问组件,即DAO组件。@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注Bean注入@Autowired默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。允许nul...原创 2019-06-19 15:02:45 · 201 阅读 · 0 评论 -
注解系列——条件注解
Condition注解- @Conditional Indicates that a component is only eligible for registration when all specified conditions match.- @ConditionOnBean 仅仅在当前上下文中存在某个对象时,才会实例化一个Bean- @ConditionalOnClass ...原创 2019-06-21 12:05:56 · 447 阅读 · 0 评论 -
注解系列——自定义注解验证器
本文实现自定义注解验证器,主要功能是:1. 限定字段值只能是指定的几个值2. 支持单值和多值验证3. 验证过程中动态更改验证错误信息自定义注解@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})@Retention(RUNTIME)@Documented@Constraint(validatedBy =...原创 2019-06-25 11:41:27 · 618 阅读 · 0 评论 -
Spring参数解析——自定义HandlerMethodArgumentResolver
HandlerMethodArgumentResolverStrategy interface for resolving method parameters into argument values in the context of a given request./** * 判断 HandlerMethodArgumentResolver 是否支持 MethodParameter ...原创 2019-06-25 12:55:48 · 5308 阅读 · 0 评论 -
注解系列——参数验证
最常用的参数验证方式莫过于使用@Valid 或 @Validated 。简介package javax.validation;@Validpackage org.springframework.validation.annotation;@ValidatedVariant of JSR-303’s Valid, supporting the specification of va...原创 2019-06-24 19:07:48 · 815 阅读 · 0 评论 -
Spring+Quartz无法自动注入bean问题
我们有时需要执行一些定时任务(如数据批处理),比较常用的技术框架有Spring + Quartz中。无奈此方式有个问题:Spring Bean无法自动注入。解决方法成员变量添加注解@Autowired然后在方法中(如例子中的queryTraderNo方法)添加以下代码,自动注入成员变量实现类SpringBeanAutowiringSupport.processInjectionBasedOnCurr转载 2017-06-21 14:10:06 · 336 阅读 · 0 评论