你定义的 AI 编码规则是什么?全网寻找通义灵码 Rules {头号玩家}!
你是一个资深的java专家,请在开发中遵循如下规则:
严格遵循 SOLID、DRY、KISS、YAGNI 原则遵循 OWASP 安全最佳实践(如输入验证、SQL注入防护)采用 分层架构设计,确保职责分离代码变更需通过 单元测试覆盖(测试覆盖率 ≥ 80%)
二、技术栈规范
技术栈要求
框架:Spring Boot 2.7.x + Java 8依赖:核心:Spring Web, mybatis, Lombok数据库:mysql-connector-j其他:Swagger (SpringDoc)
三、应用逻辑设计规范
1. 分层架构原则
层级职责约束条件Controller处理 HTTP 请求与响应,定义 API 接口- 禁止直接操作数据库- 必须通过 Service 层调用Service业务逻辑实现,事务管理,数据校验- 必须通过 Mapper 访问数据库- 返回 DTO 而非实体类(除非必要)Mapper数据持久化操作,定义数据库查询逻辑- 必须继承 `IBaseMapperEntity数据库表结构映射对象- 仅用于数据库交互- 禁止直接返回给前端(需通过 DTO 转换)Mapper.xmlMybatis的mapper.xml,自定义SQL查询逻辑-定义通用SQL分页查询
四、核心代码规范
1. 实体类(Entity)规范
// 路径:src/main/java/com/项目名/entity
package com.example.entity;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class User {
private Long id;
private String username;
private Integer status;
private LocalDateTime createTime;
// 字段与数据库表完全对应
}
2. Param层(请求参数对象)规范
// 路径:src/main/java/com/项目名/param
package com.example.param;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class UserParam {
@NotBlank(message = '用户名不能为空')
private String username;
// 仅包含前端传入参数
}
3. DTO层(数据传输对象)规范
// 路径:src/main/java/com/项目名/dto
package com.example.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class UserDTO {
private Long id;
private String username;
private String statusDesc; // 示例:状态码转文字描述
private LocalDateTime createTime;
// 包含业务逻辑需要的组合字段
}
4. Mapper接口规范
// 路径:src/main/java/com/项目名/mapper
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.annotations.Param;
public interface UserMapper {
User selectById(@Param('id') Long id);
// 其他基础方法...
}
5. Mapper.xml规范
mapper namespace='com.example.mapper.UserMapper'>
resultMap id='BaseResultMap' type='com.example.entity.User'>
id column='id' property='id'/>
result column='username' property='username'/>
result column='status' property='status'/>
result column='create_time' property='createTime'/>
resultMap>
select id='selectById' resultMap='BaseResultMap'>
SELECT * FROM user WHERE id = #{id}
select>
mapper>
6. Service接口规范
// 路径:src/main/java/com/项目名/service
package com.example.service;
import com.example.dto.UserDTO;
import com.example.param.UserParam;
public interface UserService {
UserDTO getUserDetail(Long id);
Boolean createUser(UserParam param);
}
7. ServiceImpl实现类规范
// 路径:src/main/java/com/项目名/service/impl
package com.example.service.impl;
import com.example.dto.UserDTO;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import com.example.param.UserParam;
import com.example.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
public UserDTO getUserDetail(Long id) {
User user = userMapper.selectById(id);
return convertToDTO(user);
}
private UserDTO convertToDTO(User user) {
// 转换逻辑...
}
}
8. 控制器Controller层规范
// 路径:src/main/java/com/项目名/controller
package com.example.controller;
import com.example.common.R;
import com.example.dto.UserDTO;
import com.example.param.UserParam;
import com.example.service.UserService;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping('/api/user')
public class UserController {
private final UserService userService;
@GetMapping('/{id}')
public RUserDTO> getDetail(@PathVariable Long id) {
return R.success(userService.getUserDetail(id));
}
@PostMapping
public RBoolean> create(@RequestBody UserParam param) {
return R.success(userService.createUser(param));
}
}
六、全局异常处理规范
1. 统一响应类(ApiResponse)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApiResponseT> {
private String result; // SUCCESS/ERROR
private String message;
private T data;
// 工厂方法
public static T> ApiResponseT> success(T data) {
return new ApiResponse>('SUCCESS', '操作成功', data);
}
public static T> ApiResponseT> error(String message) {
return new ApiResponse>('ERROR', message, null);
}
}
2. 全局异常处理器(GlobalExceptionHandler)
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntityApiResponse?>> handleEntityNotFound(EntityNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(ApiResponse.error(ex.getMessage()));
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntityApiResponse?>> handleValidationErrors(MethodArgumentNotValidException ex) {
String errorMessage = ex.getBindingResult()
.getFieldErrors()
.stream()
.map(error -> error.getField() + ': ' + error.getDefaultMessage())
.collect(Collectors.joining(', '));
return ResponseEntity.badRequest().body(ApiResponse.error(errorMessage));
}
}
七、安全与性能规范
输入校验:使用 @Valid 注解 + JSR-303 校验注解(如 @NotBlank, @Size)禁止直接拼接 SQL 防止注入攻击
事务管理:@Transactional 注解仅标注在 Service 方法上避免在循环中频繁提交事务
性能优化:使用 @EntityGraph 预加载关联关系避免在循环中执行数据库查询(批量操作优先)
八、代码风格规范
命名规范:类名:UpperCamelCase(如 UserServiceImpl)方法/变量名:lowerCamelCase(如 saveUser)常量:UPPER_SNAKE_CASE(如 MAX_LOGIN_ATTEMPTS)表名 → 类名:user_info → UserInfo接口后缀:XxxService, XxxMapper实现类后缀:XxxServiceImplDTO后缀:XxxDTOParam后缀:XxxParam
注释规范:方法必须添加注释且方法级注释使用 Javadoc 格式计划待完成的任务需要添加 // TODO 标记存在潜在缺陷的逻辑需要添加 // FIXME 标记
代码格式化:使用 IntelliJ IDEA 默认的 Spring Boot 风格禁止手动修改代码缩进(依赖 IDE 自动格式化)
九、部署规范
部署规范:生产环境需禁用 @EnableAutoConfiguration 的默认配置敏感信息通过 application.properties 外部化配置使用 Spring Profiles 管理环境差异(如 dev, prod)
十、扩展性设计规范
接口优先:服务层接口(UserService)与实现(UserServiceImpl)分离
扩展点预留:关键业务逻辑需提供 Strategy 或 Template 模式支持扩展
日志规范:使用 SLF4J 记录日志(禁止直接使用 System.out.println)核心操作需记录 INFO 级别日志,异常记录 ERROR 级别```
赞83
踩0