Java 21, Spring Boot 3.5.9, Maven multi-module project with MyBatis-Plus, Redis, RocketMQ, OAuth2.
# Build & Run
mvn clean compile # Compile
mvn clean package # Package JAR
mvn spring-boot:run # Run application
mvn clean install # Install to local repo
# Testing
mvn test # Run all tests
mvn test -Dtest=ClassName # Single test class
mvn test -Dtest=ClassName#methodName # Single test method
# Code Quality
mvn spring-javaformat:apply # Format code (MANDATORY before commits)
mvn validate # Check format during build
# Environment builds
mvn clean package -Pdev # Development (default)
mvn clean package -Ptest # Test environment
mvn clean package -Pprod # Production
| Element | Convention | Examples |
|---|---|---|
| Class/Interface | PascalCase | SysUserController, UserDTO |
| Method/Variable | camelCase | getUserById, saveUser() |
| Constant | UPPER_SNAKE_CASE | DEFAULT_PAGE_SIZE, COMMON_STATUS |
| Package | com.kxs.{module}.biz.{layer} |
com.kxs.admin.biz.controller |
com.kxs.{module}.biz.controller/ # REST endpoints
com.kxs.{module}.biz.service/ # Business logic
com.kxs.{module}.biz.mapper/ # Data access
com.kxs.{module}.biz.model/ # Entities
com.kxs.{module}.biz.domain.dto/ # Input DTOs
com.kxs.{module}.biz.domain.vo/ # Response VOs
@RestController, @AllArgsConstructor, return R<T>IService<Entity>, use @SysLogBaseMapper<Entity>@Data, @Schema, extend Entity when appropriate@Data, @Schema for API responses@TableName("table_name")
@TableId(type = IdType.AUTO)
public class Entity { } // del_flag for logical deletion
// Query with type-safe wrapper
Wrappers.<Entity>query().lambda()
.eq(Entity::getField, value)
.orderByDesc(Entity::getCreateTime);
@DS("datasource_name")@Tag(description = "module", name = "description") // Class
@Operation(summary = "action", description = "details") // Method
@ParameterObject // Query params
@Schema(description = "...") // Fields
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) // Secured APIs
@PreAuthorize("@pms.hasPermission('module_action')") // Permission check
@Inner // Internal API (bypass OAuth2)
SecurityUtils.getUser() // Current user info
module_action (e.g., sys_user_add)return R.ok(data); // Success
return R.failed("error message"); // Error
return R.failed(ErrorEnum); // Error with enum
@Slf4j // Logger
@RestControllerAdvice // Global exception handler
mvn spring-javaformat:apply before commitsR<T> from controllers@PreAuthorize for security@SysLog for business operationskxs-admin/src/main/resources/application.ymlapplication-{dev|test|prod}.yml/v1/admin