JimuReport快速集成指南
本文详细介绍了JimuReport报表工具的快速集成方法,包括依赖引入与版本选择、SpringBoot2与SpringBoot3的集成差异、初始化SQL与配置详解以及Docker快速部署方案。帮助开发者快速完成项目集成与部署。
JimuReport的依赖引入与版本选择
JimuReport作为一款功能强大的报表工具,其快速集成依赖于正确的依赖引入和版本选择。以下内容将详细介绍如何在SpringBoot项目中引入JimuReport的相关依赖,并选择合适的版本以满足项目需求。
1. 核心依赖引入
JimuReport的核心功能通过jimureport-spring-boot-starter依赖提供。以下是针对不同SpringBoot版本的依赖配置:
SpringBoot 2.x 版本
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
SpringBoot 3.x 版本
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-spring-boot3-starter-fastjson2</artifactId>
<version>2.1.1</version>
</dependency>
2. 扩展功能依赖
JimuReport支持多种扩展功能,如NoSQL数据源、ECharts图表等。以下是常用的扩展依赖:
NoSQL支持
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-nosql-starter</artifactId>
<version>2.0.0</version>
</dependency>
ECharts图表支持
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-echarts-starter</artifactId>
<version>2.1.1</version>
</dependency>
3. 版本选择建议
在选择版本时,需注意以下几点:
- 兼容性:确保依赖版本与项目的SpringBoot版本兼容。例如,SpringBoot 2.x项目应使用
jimureport-spring-boot-starter,而SpringBoot 3.x项目需使用jimureport-spring-boot3-starter-fastjson2。 - 功能需求:根据项目需求选择扩展依赖。例如,若需使用MongoDB或Redis作为数据源,则需引入
jimureport-nosql-starter。 - 稳定性:建议使用最新稳定版本,以获得最佳性能和功能支持。
4. 依赖冲突解决
在引入JimuReport依赖时,可能会与其他依赖产生冲突。以下是一些常见的解决方法:
- 排除冲突依赖:使用
<exclusions>标签排除冲突的依赖项。 - 版本对齐:确保所有相关依赖的版本一致,避免因版本差异导致的问题。
5. 示例配置
以下是一个完整的pom.xml配置示例,展示了如何引入JimuReport的核心和扩展依赖:
<dependencies>
<!-- JimuReport核心依赖 -->
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<!-- NoSQL支持 -->
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-nosql-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!-- ECharts图表支持 -->
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-echarts-starter</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
## SpringBoot2与SpringBoot3的集成差异
积木报表(JimuReport)作为一款功能强大的免费报表工具,支持与SpringBoot2和SpringBoot3的无缝集成。然而,由于SpringBoot3在依赖管理和配置上存在一些显著变化,开发者在集成时需要注意以下几点差异:
---
### 1. **依赖包差异**
SpringBoot3对部分依赖进行了升级和调整,因此在引入积木报表时,需根据SpringBoot版本选择对应的依赖包。
#### SpringBoot2依赖
```xml
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
SpringBoot3依赖
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-spring-boot3-starter-fastjson2</artifactId>
<version>2.1.1</version>
</dependency>
差异说明
- 包名调整:SpringBoot3版本的依赖包名称中明确标注了
spring-boot3。 - Fastjson2支持:SpringBoot3默认使用Fastjson2作为JSON处理器,因此依赖包名称中包含了
fastjson2标识。
2. 安全配置差异
SpringBoot3在安全配置上引入了新的API,尤其是SecurityFilterChain的配置方式发生了变化。
SpringBoot2示例
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/jmreport/**").permitAll()
.anyRequest().authenticated();
}
}
SpringBoot3示例
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth -> auth
.requestMatchers("/jmreport/**").permitAll()
.anyRequest().authenticated());
return http.build();
}
}
差异说明
- 配置方式:SpringBoot3移除了
WebSecurityConfigurerAdapter,改为通过SecurityFilterChainBean配置。 - API调整:
antMatchers变更为requestMatchers,方法链式调用更符合函数式编程风格。
3. JDK版本兼容性
SpringBoot3要求JDK17及以上版本,而SpringBoot2支持JDK8。积木报表的SpringBoot3版本也遵循了这一要求。
| 特性 | SpringBoot2 | SpringBoot3 |
|---|---|---|
| JDK支持 | JDK8及以上 | JDK17及以上 |
| 积木报表依赖包 | jimureport-spring-boot-starter | jimureport-spring-boot3-starter-fastjson2 |
4. 初始化SQL与配置
尽管SpringBoot2和SpringBoot3在初始化SQL和配置文件上基本一致,但SpringBoot3可能会对一些配置项的默认值进行调整。例如:
- 数据库连接池:SpringBoot3默认使用HikariCP,而SpringBoot2可能兼容多种连接池。
- 缓存配置:SpringBoot3对Redis和MongoDB的自动配置逻辑有所优化。
5. 其他注意事项
- 日志框架:SpringBoot3对Log4j2的支持更完善,建议在集成时使用Log4j2作为日志框架。
- 测试兼容性:如果项目中使用了JUnit4,需升级到JUnit5以适配SpringBoot3。
通过以上对比,开发者可以更清晰地了解SpringBoot2与SpringBoot3在集成积木报表时的差异,从而快速完成项目升级或迁移。
初始化SQL与配置详解
JimuReport的快速集成离不开正确的数据库初始化和相关配置。本节将详细介绍如何通过初始化SQL脚本创建数据库表结构,并解析关键配置项的作用。
1. 数据库初始化
JimuReport使用MySQL 5.7作为默认数据库,初始化脚本位于项目目录的db/jimureport.mysql5.7.create.sql文件中。以下是脚本的核心内容:
CREATE DATABASE IF NOT EXISTS `jimureport` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `jimureport`;
-- 示例表结构:会员年龄分布表
DROP TABLE IF EXISTS `huiyuan_age`;
CREATE TABLE `huiyuan_age` (
`id` varchar(36) NOT NULL,
`name` varchar(50) COMMENT '名称',
`value` varchar(20) COMMENT '值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 示例数据
INSERT INTO `huiyuan_age` VALUES ('1339875613023969282', '25岁以下', '1500');
INSERT INTO `huiyuan_age` VALUES ('1339875692078211073', '26~30岁', '800');
关键点说明:
- 字符集:使用
utf8mb4以支持完整的Unicode字符(如emoji)。 - 表结构:每个表包含
id主键字段,以及业务相关的字段(如name和value)。 - 数据初始化:脚本中预置了示例数据,便于快速测试。
2. 配置详解
JimuReport的配置主要集中在jimureport-example/src/main/java/com/jeecg/modules/jmreport/config目录下。以下是核心配置类的功能说明:
2.1 Spring Security配置
@Configuration
public class SpringSecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/jmreport/**").permitAll()
.anyRequest().authenticated();
return http.build();
}
}
- 作用:配置接口权限,允许
/jmreport/**路径下的请求无需认证。 - 关键注解:
@Configuration标记为配置类,@Bean定义安全过滤器链。
2.2 Redis配置
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
return template;
}
}
- 作用:初始化Redis连接模板,用于缓存报表数据。
- 依赖:需确保Redis服务已启动,并在
application.yml中配置连接信息。
2.3 跨域配置
@Configuration
public class CustomCorsConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST");
}
}
- 作用:允许所有来源的跨域请求,支持GET和POST方法。
3. 初始化流程
- 执行SQL脚本:
mysql -u root -p < db/jimureport.mysql5.7.create.sql - 启动项目:
cd jimureport-example && mvn spring-boot:run - 验证:访问
http://localhost:8085/jmreport/list,若返回报表列表,则初始化成功。
4. 常见问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 数据库连接失败 | MySQL服务未启动 | 启动MySQL服务 |
| 接口返回403 | 权限配置错误 | 检查SpringSecurityConfig |
| 跨域请求被拦截 | 未配置跨域 | 确保CustomCorsConfiguration生效 |
通过以上步骤和配置,您可以快速完成JimuReport的初始化与集成。
Docker快速部署与运行
JimuReport提供了基于Docker的快速部署方案,通过docker-compose可以一键启动项目,无需手动配置数据库和运行环境。以下是详细步骤:
1. 准备工作
确保已安装以下工具:
- Docker(版本18.03+)
- Docker Compose(版本1.25+)
2. 下载项目
克隆项目仓库到本地:
git clone https://gitcode.com/jeecgboot/jimureport.git
3. 构建与启动
进入项目目录并启动服务:
cd jimureport/jimureport-example
docker-compose up -d
服务说明
- jimureport-mysql: MySQL 5.7数据库服务,自动初始化
jimureport数据库。 - jimureport-app: 积木报表应用服务,基于Spring Boot运行。
4. 访问服务
启动完成后,通过以下地址访问:
- 报表工作台:
http://localhost:8085/jmreport/list - 仪表盘工作台:
http://localhost:8085/drag/list
默认账号密码为admin/123456。
5. 配置说明
数据库配置
数据库配置文件位于jimureport-example/db/jimureport.mysql5.7.create.sql,如需修改数据库名称或表结构,可编辑此文件后重新构建镜像。
应用配置
应用配置文件为jimureport-example/src/main/resources/application.yml,支持以下自定义配置:
- 数据库连接参数
- Redis缓存配置
- 文件存储路径
6. 流程图
以下为Docker部署的流程图:
7. 常见问题
端口冲突
若8085端口被占用,可修改docker-compose.yml中的端口映射:
ports:
- "新端口:8085"
数据库初始化失败
检查jimureport-mysql容器日志,确认SQL脚本是否执行成功:
docker logs jimureport-mysql
8. 示例代码
以下为docker-compose.yml的配置示例:
version: '3'
services:
jimureport-mysql:
build: ./db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: jimureport
jimureport-app:
build: .
ports:
- "8085:8085"
depends_on:
- jimureport-mysql
通过以上步骤,您可以快速完成JimuReport的Docker部署与运行。
总结
JimuReport作为一款功能强大的报表工具,通过本文的详细指南,开发者可以快速掌握其集成与部署方法。从依赖引入、版本选择到数据库初始化,再到Docker快速部署,每个步骤都提供了清晰的说明和示例代码。无论是SpringBoot2还是SpringBoot3项目,都能快速完成集成,提升开发效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



