From 13ae5016e8d47556521f0ce385703d0199f87b0a Mon Sep 17 00:00:00 2001 From: Timi Date: Tue, 10 Feb 2026 18:55:53 +0800 Subject: [PATCH] v0.0.3 --- pom.xml | 3 ++- src/main/java/com/imyeyu/spring/TimiSpring.java | 16 ++++++++++++++++ .../spring/annotation/RequestSingleParam.java | 2 ++ .../annotation/RequestSingleParamResolver.java | 2 ++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d25c317..da7f5f9 100644 --- a/pom.xml +++ b/pom.xml @@ -13,10 +13,11 @@ com.imyeyu.spring timi-spring - 0.0.2 + 0.0.3 jar + 21 3.4.0 21 21 diff --git a/src/main/java/com/imyeyu/spring/TimiSpring.java b/src/main/java/com/imyeyu/spring/TimiSpring.java index d170fe3..affff29 100644 --- a/src/main/java/com/imyeyu/spring/TimiSpring.java +++ b/src/main/java/com/imyeyu/spring/TimiSpring.java @@ -14,9 +14,12 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanWrapper; +import org.springframework.beans.BeanWrapperImpl; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import java.beans.PropertyDescriptor; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.StandardCharsets; @@ -491,4 +494,17 @@ public class TimiSpring { } return new RequestRange(start, end); } + + public static void copyPropertiesNotNull(Object source, Object target) { + BeanWrapper srcBean = new BeanWrapperImpl(source); + BeanWrapper targetBean = new BeanWrapperImpl(target); + + for (PropertyDescriptor pd : srcBean.getPropertyDescriptors()) { + String propertyName = pd.getName(); + Object srcValue = srcBean.getPropertyValue(propertyName); + if (srcValue != null && targetBean.isWritableProperty(propertyName)) { + targetBean.setPropertyValue(propertyName, srcValue); + } + } + } } diff --git a/src/main/java/com/imyeyu/spring/annotation/RequestSingleParam.java b/src/main/java/com/imyeyu/spring/annotation/RequestSingleParam.java index cc449b2..86364cb 100644 --- a/src/main/java/com/imyeyu/spring/annotation/RequestSingleParam.java +++ b/src/main/java/com/imyeyu/spring/annotation/RequestSingleParam.java @@ -11,10 +11,12 @@ import java.lang.annotation.Target; * * @author 夜雨 * @version 2023-08-09 10:36 + * @deprecated 0.0.3 过时,0.0.5 移除,单参数建议 url 传参 */ @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented +@Deprecated public @interface RequestSingleParam { } diff --git a/src/main/java/com/imyeyu/spring/annotation/RequestSingleParamResolver.java b/src/main/java/com/imyeyu/spring/annotation/RequestSingleParamResolver.java index 9adb719..f254298 100644 --- a/src/main/java/com/imyeyu/spring/annotation/RequestSingleParamResolver.java +++ b/src/main/java/com/imyeyu/spring/annotation/RequestSingleParamResolver.java @@ -20,8 +20,10 @@ import org.springframework.web.method.support.ModelAndViewContainer; * * @author 夜雨 * @since 2025-10-13 16:29 + * @deprecated 0.0.3 过时,0.0.5 移除,单参数建议 url 传参 */ @Component +@Deprecated public class RequestSingleParamResolver implements HandlerMethodArgumentResolver { /**