Build a Full‑Featured Backend Admin System in Minutes with Erupt
This article walks you through setting up the Erupt Java annotation‑based framework, configuring Maven dependencies and datasource, launching a ready‑made admin UI, customizing pages with @Erupt annotations, and extending functionality via data proxies, all without writing front‑end code.
I recently encountered a new project that uses the Erupt framework, which fulfills my early‑career dream of rapid backend development, so I’m sharing the experience.
Erupt is a generic backend‑admin framework that boasts ultra‑low code, zero front‑end code, zero CRUD operations, no table creation, and pure Java annotation development, claiming you can build a complete admin system in about three minutes.
To get started, ensure you have Java 1.8+ and Spring Boot 2.0+. Add the following dependencies to your pom.xml:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- User permission management -->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-upms</artifactId>
<version>1.6.7</version>
</dependency>
<!-- Security -->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-security</artifactId>
<version>1.6.7</version>
</dependency>
<!-- Web UI -->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-web</artifactId>
<version>1.6.7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>Create an application.yml file with a simple datasource configuration (prepare a MySQL database beforehand):
spring:
datasource:
url: jdbc:mysql://47.93.6.5:3306/erupt2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
jpa:
show-sql: true
generate-ddl: true
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
database: mysql
profiles:
active: dev
mail:
username: [email protected]
password: xxxxxxx
host: smtp.qq.com
properties:
mail.smtp.ssl.auth: true
mail.smtp.ssl.enable: true
mail.smtp.ssl.required: true
server:
port: 8888When you start the application, Erupt uses JPA to automatically create system tables and insert initial data. The pre‑created tables are generated only on the first launch; to recreate them, delete the hidden .Erupt file in the project workspace (its location can be obtained via System.getProperty("user.dir")).
Among the 16 system tables, e_upms_user stores the default admin user with username and password both set to erupt. Access the login page at http://127.0.0.1:8888/ and log in with these credentials to see a fully functional backend UI.
To add custom pages, define an entity class annotated with @Erupt and @EruptField. The core annotations include: @Erupt – marks a class as a page definition. @EruptField – marks a field to be displayed on the page. @Power – controls button permissions (add, delete, edit, import, export, etc.). @Search – marks a field as searchable. @Table – specifies the underlying database table (optional).
Example Student entity:
@Getter
@Setter
@Erupt(name = "学生表", power = @Power(importable = true, export = true))
@Entity
public class Student extends BaseModel {
@EruptField(
views = @View(title = "学生姓名"),
edit = @Edit(title = "学生姓名", notNull = true, search = @Search(vague = true))
)
private String studentName;
@EruptField(
views = @View(title = "所属班级"),
edit = @Edit(title = "所属班级", notNull = true)
)
private String studentClass;
@EruptField(
views = @View(title = "学生年龄"),
edit = @Edit(title = "学生年龄", notNull = true)
)
private String studentAge;
@Lob
@EruptField(
views = @View(title = "学生性别"),
edit = @Edit(title = "学生性别", notNull = true)
)
private String studentSex;
@EruptField(
views = @View(title = "考核状态"),
edit = @Edit(title = "考核状态", notNull = true, boolType = @BoolType(trueText = "通过", falseText = "挂科"), search = @Search)
)
private Boolean status;
}After defining the class, create a menu entry in the Erupt menu management, setting the type value to the class name ( Student) so the page appears in the UI.
Adding a student record automatically creates a corresponding row in the Student table, with all persistence handled by the framework.
Erupt also supports data proxies for custom business logic. For example, to prevent adding a student named “张三”:
@Getter
@Setter
@Erupt(name = "学生表", dataProxy = {StudentDataProxy.class}, power = @Power(importable = true, export = true))
@Entity
public class Student extends BaseModel {}
public class StudentDataProxy implements DataProxy<Student> {
@Override
public void beforeAdd(Student student) {
if ("张三".equals(student.getStudentName())) {
throw new EruptApiErrorTip("名称禁止为张三!");
}
}
@Override public void afterAdd(Student student) {}
@Override public void afterUpdate(Student student) {}
@Override public void afterDelete(Student student) {}
}Erupt provides a code generator that can produce Java classes and fields based on your specifications, allowing you to copy the generated code directly.
Beyond basic CRUD, Erupt offers many built‑in features such as task scheduling, multi‑table joins, front‑end‑back‑end separation deployment, API permission control, operation logging, multiple data sources, email system, and blacklist/whitelist management, all accessible via simple API calls.
In summary, Erupt is a fast, efficient, and beginner‑friendly low‑code backend solution. While it may not suit highly complex, heavily customized enterprise systems and its community is relatively small, it works well for configuration‑driven data management tasks.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
macrozheng
Dedicated to Java tech sharing and dissecting top open-source projects. Topics include Spring Boot, Spring Cloud, Docker, Kubernetes and more. Author’s GitHub project “mall” has 50K+ stars.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
