Build a Full‑Stack Java Admin System Without Front‑End Code Using Erupt
This guide introduces Erupt, a low‑code full‑stack Java framework that lets you create enterprise‑level backend management systems without writing any front‑end code, covering installation, SpringBoot integration, CRUD generation, extended modules like scheduling, code generation, monitoring, NoSQL support, and online API development.
A management system usually requires both backend and frontend. Simple CRUD pages can be generated with a code generator. This article recommends the full‑stack framework Erupt for building Java‑only admin systems.
Erupt Overview
Erupt is a low‑code full‑stack framework that uses Java annotations to dynamically generate pages, CRUD operations, permission control, and other backend features. It requires zero front‑end code, automatic table creation, and only a single class file with concise annotation configuration to rapidly develop enterprise‑level backend management systems.
Basic Usage
We start with a practical example of product brand management to get familiar with Erupt combined with SpringBoot.
SpringBoot Integration
Erupt natively supports SpringBoot, making integration very convenient.
Add the Erupt version property to pom.xml:
<properties>
<erupt.version>1.6.13</erupt.version>
</properties>Add the following dependencies to pom.xml:
<dependencies>
<!-- User permission management -->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-upms</artifactId>
<version>${erupt.version}</version>
</dependency>
<!-- Interface data security -->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-security</artifactId>
<version>${erupt.version}</version>
</dependency>
<!-- Backend web UI -->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-web</artifactId>
<version>${erupt.version}</version>
</dependency>
<!-- MySQL driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
</dependencies>Configure data source and JPA in application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/erupt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: root
jpa:
show-sql: true
generate-ddl: true
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
database: mysqlCreate the required configuration files under resources (image omitted).
Add the Java configuration class EruptConfig in the same package as the main class MallTinyApplication to set the scan paths:
@Configuration
@ComponentScan({"xyz.erupt","com.macro.mall.tiny"})
@EntityScan({"xyz.erupt","com.macro.mall.tiny"})
@EruptScan({"xyz.erupt","com.macro.mall.tiny"})
public class EruptConfig {
}Create the MySQL database erupt. When the project starts, the required tables are automatically created.
After successful startup, access the login page (default credentials erupt:erupt) at http://localhost:8080/. The system provides complete permission and dictionary management without any front‑end code.
Implement Single‑Table CRUD
Use the core annotations @Erupt and @EruptField to define an entity class and quickly achieve CRUD operations.
Create the entity class PmsBrand (no Controller, Service, or DAO needed):
@Erupt(name = "商品品牌")
@Table(name = "pms_brand")
@Entity
public class PmsBrand {
@Id
@GeneratedValue(generator = "generator")
@GenericGenerator(name = "generator", strategy = "native")
@Column(name = "id")
@EruptField
private Long id;
@EruptField(
views = @View(title = "品牌名称"),
edit = @Edit(title = "品牌名称", notNull = true, search = @Search(vague = true))
)
private String name;
@EruptField(
views = @View(title = "品牌首字母"),
edit = @Edit(title = "品牌首字母", notNull = true)
)
private String firstLetter;
@EruptField(
views = @View(title = "品牌LOGO"),
edit = @Edit(title = "品牌LOGO", type = EditType.ATTACHMENT,
attachmentType = @AttachmentType(type = AttachmentType.Type.IMAGE))
)
private String logo;
// other fields omitted for brevity
}After creating the entity, restart the project and add a top‑level menu "商品" and a sub‑menu "品牌管理" (type set to the entity class name PmsBrand) via the menu maintenance UI.
Refresh the page; the full brand management interface appears. Adding a new brand works out of the box, and the list view shows fields rendered according to the @Edit annotation (text boxes, image upload, switches, etc.).
Core Annotation Explanation
Refer to the PmsBrand code to learn the following core annotations.
@Erupt
name : Function name
desc : Function description
@EruptField
views : Table display configuration
edit : Edit field configuration
sort : Front‑end display order (smaller numbers appear first)
@View
title : Column name
desc : Column description
type : Data display type (default AUTO)
show : Visibility flag
@Edit
title : Column name
desc : Column description
type : Edit type (default AUTO)
show : Visibility flag
notNull : Required field flag
search : Search support; @Search(vague = true) enables fuzzy search.
Extended Modules
Erupt also provides many useful system functions such as scheduled tasks, code generators, system monitoring, and NoSQL support.
Scheduled Tasks (erupt‑job)
Add the erupt-job dependency to pom.xml:
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-job</artifactId>
<version>${erupt.version}</version>
</dependency>Configure mail settings in application.yml to avoid startup errors.
spring:
mail:
username: [email protected]
password: 123456
host: smtp.exmail.qq.com
port: 465
properties:
mail.smtp.ssl.auth: true
mail.smtp.ssl.enable: true
mail.smtp.ssl.required: trueCreate a job handler class:
@Service
@Slf4j
public class JobHandlerImpl implements EruptJobHandler {
@Override
public String exec(String code, String param) throws Exception {
log.info("Scheduled task executed, code:{}, param:{}", code, param);
return "success";
}
}After restarting, add a task via the "任务维护" UI to run every 5 seconds, then view execution logs.
Code Generator (erupt‑generator)
Add the erupt-generator dependency to pom.xml:
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-generator</artifactId>
<version>${erupt.version}</version>
</dependency>In the "代码生成" menu you can add tables and fields like in Navicat, then generate entity class code with a click.
System Monitoring (erupt‑monitor)
Add the erupt-monitor dependency to pom.xml:
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-monitor</artifactId>
<version>${erupt.version}</version>
</dependency>Configure Redis in application.yml and enable Redis session storage.
spring:
redis:
host: localhost
database: 1
port: 6379
password: 123456
timeout: 3000ms
erupt:
redisSession: trueUse the "服务监控", "缓存监控", and "在线用户" menus to view server metrics, Redis statistics, and active sessions.
NoSQL Data Source (erupt‑mongodb)
Add the erupt-mongodb dependency to pom.xml:
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-mongodb</artifactId>
<version>${erupt.version}</version>
</dependency>Configure MongoDB in application.yml:
spring:
data:
mongodb:
host: localhost
port: 27017
database: eruptDefine an entity class using @EruptDataProcessor and @Document to store data in MongoDB:
@EruptDataProcessor(EruptMongodbImpl.MONGODB_PROCESS)
@Document(collection = "product")
@Erupt(name = "商品管理", orderBy = "sort")
public class PmsProduct {
@Id
@EruptField
private String id;
@EruptField(
views = @View(title = "商品名称", sortable = true),
edit = @Edit(title = "商品名称", search = @Search(vague = true))
)
private String name;
// other fields omitted for brevity
}Add a "商品管理" menu via the UI; the feature becomes available after a refresh.
Online API Development (erupt‑magic‑api)
Add the erupt-magic-api dependency to pom.xml:
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-magic-api</artifactId>
<version>${erupt.version}</version>
</dependency>Configure the magic‑api path in application.yml:
erupt:
jacksonHttpMessageConvertersPackages:
- org.ssssssss
magic-api:
web: /magic/web
resource.location: D:/erupt/magic-scriptCreate a script to query all brands:
var sql = "select * from pms_brand";
return db.select(sql);Add the script via the "接口配置" menu; the endpoint is generated automatically and can be accessed directly in a browser.
Conclusion
If you need a simple backend management system, Erupt is an excellent choice that eliminates front‑end development. For complex UI requirements or intricate business logic, a custom front‑end implementation may still be necessary.
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.
