diff --git a/src/main/java/com/example/demo/common/typography/BaseServiceImpl.java b/src/main/java/com/example/demo/common/typography/BaseServiceImpl.java index 7f6d455..0927bf0 100644 --- a/src/main/java/com/example/demo/common/typography/BaseServiceImpl.java +++ b/src/main/java/com/example/demo/common/typography/BaseServiceImpl.java @@ -24,6 +24,8 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import java.util.List; import java.util.Map; @@ -192,24 +194,78 @@ public abstract class BaseServiceImpl< */ @SuppressWarnings("all") protected Entity createEntity() { - return (Entity) Entity.builder().build(); + try { + // 使用反射获取具体的实体类并创建实例 + Class entityClass = getEntityClass(); + return (Entity) entityClass.getDeclaredConstructor().newInstance(); + } catch (Exception e) { + throw new RuntimeException("创建实体实例失败", e); + } } /** - * 实例化 entity - * @return 获取新实例化 entity 类 + * 实例化 VO + * @return 获取新实例化 VO 类 */ @SuppressWarnings("all") protected VO createVO() { - return (VO) VO.builder().build(); + try { + // 使用反射获取具体的VO类并创建实例 + Class voClass = getVOClass(); + return (VO) voClass.getDeclaredConstructor().newInstance(); + } catch (Exception e) { + throw new RuntimeException("创建VO实例失败", e); + } } /** - * 实例化 entity - * @return 获取新实例化 entity 类 + * 实例化 DTO + * @return 获取新实例化 DTO 类 */ @SuppressWarnings("all") protected DTO createDTO() { - return (DTO) DTO.builder().build(); + try { + // 使用反射获取具体的DTO类并创建实例 + Class dtoClass = getDTOClass(); + return (DTO) dtoClass.getDeclaredConstructor().newInstance(); + } catch (Exception e) { + throw new RuntimeException("创建DTO实例失败", e); + } + } + + /** + * 获取实体类的Class对象 + * @return 实体类的Class对象 + */ + @SuppressWarnings("unchecked") + private Class getEntityClass() { + // 通过获取泛型参数类型来确定具体的实体类 + Type superClass = getClass().getGenericSuperclass(); + ParameterizedType parameterizedType = (ParameterizedType) superClass; + return (Class) parameterizedType.getActualTypeArguments()[0]; + } + + /** + * 获取VO类的Class对象 + * @return VO类的Class对象 + */ + @SuppressWarnings("unchecked") + private Class getVOClass() { + // 通过获取泛型参数类型来确定具体的VO类 + Type superClass = getClass().getGenericSuperclass(); + ParameterizedType parameterizedType = (ParameterizedType) superClass; + return (Class) parameterizedType.getActualTypeArguments()[1]; + } + + /** + * 获取DTO类的Class对象 + * @return DTO类的Class对象 + */ + @SuppressWarnings("unchecked") + private Class getDTOClass() { + // 通过获取泛型参数类型来确定具体的DTO类 + Type superClass = getClass().getGenericSuperclass(); + ParameterizedType parameterizedType = (ParameterizedType) superClass; + return (Class) parameterizedType.getActualTypeArguments()[2]; } } diff --git a/src/main/resources/application-springdoc.yml b/src/main/resources/application-springdoc.yml index 99e7d40..a331d29 100644 --- a/src/main/resources/application-springdoc.yml +++ b/src/main/resources/application-springdoc.yml @@ -43,7 +43,7 @@ knife4j: cors: false #是否启用登录认证 basic: - enable: true + enable: false username: admin password: 123456 setting: # 前端UI的个性化配置属性