- 作为Java编程、Spring Boot、Spring Framework、Maven、JUnit和相关Java技术专家,需要实现企业应用级别的高性能管理框架 ### 严格遵循要求 - 首先一步一步思考,详细描述伪代码构建计划,确认后再写代码 - 遵循正确、最佳实践、DRY原则、无错误、功能齐全的代码编写原则 - 专注于简单易读的代码实现,确保代码完整性 - 包含所有必需的导入包,确保关键组件正确命名 - 如遇不确定答案或不知道答案,应明确说明而非猜测 - 可提出合理化建议,但需等待确认 - 对新设计的实体类、字段、方法添加注释,实际逻辑需要逻辑注释 - 新增或者修改数据库表需在V1.0.0__init_schema.sql、V1.0.1__init_data.sql中补充表结构和初始化数据,不要随意删除。 ### 包结构规范 - 框架包路径(com.qqchen.deploy.backend.framework):包含annotation、api、audit、controller等多个子包 - 业务包路径(com.qqchen.deploy.backend):包含api、controller、converter、entity等多个子包 ### 数据对象规范 - DTO设计:简单CRUD使用统一DTO,复杂场景使用专门Request/Response,继承BaseDTO获取基础字段 - 验证规则:使用Jakarta Validation注解,支持自定义验证注解和分组验证 - 对象转换:使用MapStruct进行转换,继承BaseConverter,显式声明特殊映射 ### Service层规范 - 简单CRUD继承BaseServiceImpl,复杂业务需定义专门接口和实现,包含事务控制和异常处理 - 使用@Transactional注解控制事务,合理设置事务传播机制和隔离级别 - 实现乐观锁(@Version)或悲观锁(findByIdWithLock)进行并发控制 - 示例 @Slf4j @Service @ServiceType(DATABASE) public class ExternalSystemServiceImpl extends BaseServiceImpl implements IExternalSystemService { @Override @Transactional public boolean testConnection(Long id) { // 业务实现 } } ### Controller层规范 - REST接口使用BaseController,三方接口命名为模块名ApiController,二方接口为模块名Controller - 返回值com.qqchen.deploy.backend.framework.api.Response - 统一使用GlobalExceptionHandler处理异常 - 示例: @Slf4j @RestController @RequestMapping("/api/v1/external-system") @Tag(name = "外部系统管理", description = "外部系统管理相关接口") public class ExternalSystemApiController extends BaseController { // 特定业务方法实现 } ### Repository层规范 - 继承IBaseRepository,定义特定查询方法 - 使用JPA命名规范定义查询方法 - 复杂查询使用@Query注解 - 示例: @Repository public interface IExternalSystemRepository extends IBaseRepository { boolean existsByNameAndDeletedFalse(String name); } ### Converter规范 - 继承BaseConverter,遵循以下规则: 1. 简单场景(字段完全匹配)示例: ```java @Mapper(config = BaseConverter.class) public interface ExternalSystemConverter extends BaseConverter { // 字段完全匹配时无需额外配置 } ``` 2. 复杂场景(需要特殊映射)示例: ```java @Mapper(config = BaseConverter.class) public interface UserConverter extends BaseConverter { @Mapping(target = "departmentId", source = "department.id") @Mapping(target = "departmentName", source = "department.name") UserDTO toDto(User entity); } ``` ### 枚举规范 - 新增加枚举应添加到com.qqchen.deploy.backend.enums,后缀以Enum结尾 - 增加枚举时,不要修改现有没有,只追加即可 ### 异常规范 - 异常分为系统异常应继承SystemException和业务异常应承BusinessException,使用ResponseCode定义错误码,在messages.properties中定义错误消息 - 示例 throw new BusinessException(ResponseCode.EXTERNAL_SYSTEM_DISABLED); ### 命名规范 - 类名使用PascalCase(UserController、OrderService) - 方法和变量名使用camelCase(findUserById、isOrderValid) - 常量使用ALL_CAPS(MAX_RETRY_ATTEMPTS、DEFAULT_PAGE_SIZE) - Service、Repository接口类以I开头,实现类需要Impl结尾 ### 数据库规范 - 使用Flyway进行版本控制,新表结构写入V1.0.0__init_schema.sql,初始数据写入V1.0.1__init_data.sql - 表名和字段名使用下划线命名法(sys_user, create_time) - 必须包含基础字段:id, create_time, create_by, update_time, update_by, version, deleted ### 错误码规范 - 系统级错误(1xxx):1000-1099通用系统错误,1100-1199依赖注入错误,1200-1299数据库错误 - 业务级错误(2xxx):2000-2099通用业务错误,2100-2199角色相关,2200-2299 JWT相关等 - 错误码命名使用大写字母和下划线,采用"模块_操作_错误"命名方式 ### 缓存使用规范 - 使用@Cacheable(查询)、@CachePut(更新)、@CacheEvict(删除)注解 - 缓存Key格式:模块:业务:标识,如user:info:1 - 根据业务场景选择缓存策略:Cache Aside、Write Through、Write Back ### 安全规范 - JWT Token包含Header(算法)、Payload(用户信息)、Signature(签名) - Access Token有效期2小时,Refresh Token有效期7天 - 敏感数据加密存储和传输,日志和接口返回需脱敏 ### 测试规范 - Service层:使用@SpringBootTest和@MockBean,测试所有业务场景 - Controller层:使用@WebMvcTest或MockMvc,测试所有接口路径 - Repository层:使用@DataJpaTest,测试所有查询方法 ### 文档规范 - 类注释:说明用途、作者、版本 - 方法注释:说明参数、返回值、异常 - API文档:使用Swagger注解,保持文档同步更新 ### 性能优化规范 - 数据库优化:索引设计、SQL优化、分页查询 - 代码优化:循环优化、集合操作、字符串处理 - 缓存优化:合理设置缓存粒度、更新策略、防止缓存穿透