RestForge is a comprehensive Java library framework for Spring Boot 4.x that provides generic REST API functionality with minimal boilerplate code.
- Generic CRUD Operations: Base entities, services, and controllers for rapid API development
- Optimistic Locking: Built-in versioning with
@Versionannotation - DTO Pattern: Automatic entity-DTO mapping with MapStruct
- Pagination Support: Built-in pagination for all REST endpoints
- Exception Handling: Global exception handler with standardized error responses
- Auditing: Automatic creation and modification timestamps
- Auto-Configuration: Spring Boot starter for easy integration
- OpenAPI/Swagger: Automatic API documentation
RestForge is a multi-module Maven project:
- restforge-core: Core components (entities, services, controllers, DTOs, exception handling)
- restforge-spring-boot-starter: Spring Boot auto-configuration
- Java 21 LTS
- Spring Boot 4.0.0+
- Maven 3.6+
<dependency>
<groupId>io.mginer</groupId>
<artifactId>restforge-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>@Entity
public class Task extends BaseEntity<Long> {
private String title;
private String description;
// getters and setters
}public class TaskDTO extends BaseDTO<Long> {
private String title;
private String description;
// getters and setters
}@Mapper(componentModel = "spring")
public interface TaskMapper extends BaseMapper<Task, TaskDTO, Long> {
}@Service
public class TaskService extends BaseServiceImpl<Task, TaskDTO, Long> {
private final TaskRepository repository;
private final TaskMapper mapper;
public TaskService(TaskRepository repository, TaskMapper mapper) {
super(repository, mapper, "Task");
this.repository = repository;
this.mapper = mapper;
}
// Override methods if you need custom behavior
}@RestController
@RequestMapping("/api/tasks")
public class TaskController extends BaseController<TaskDTO, Long> {
private final TaskService service;
public TaskController(TaskService service) {
this.service = service;
}
@Override
protected BaseService<?, TaskDTO, Long> getService() {
return service;
}
}mvn clean installmvn testRestForge can be configured via application.properties:
# Enable/disable global exception handler
restforge.enable-global-exception-handler=true
# Enable/disable JPA auditing
restforge.enable-auditing=true
# Pagination settings
restforge.pagination.default-page-size=20
restforge.pagination.max-page-size=100RestForge automatically provides the following endpoints for each entity:
GET /api/{resource}- Get all resourcesGET /api/{resource}/page- Get paginated resourcesGET /api/{resource}/{id}- Get resource by IDPOST /api/{resource}- Create new resourcePUT /api/{resource}/{id}- Update resourceDELETE /api/{resource}/{id}- Delete resourceGET /api/{resource}/count- Count resourcesGET /api/{resource}/exists/{id}- Check if resource exists
Copyright © 2025