项目配置
教学视频
简介
目前baskreport总共提供了四个包:
包名 | 说明 |
---|---|
baskreport-core | 核心包 |
baskreport-designer | 报表设计器 |
baskreport-console | 报表控制台 |
baskreport-font | 报表字体库 |
它们之间依赖关系如下:
从使用角度来看,我们可以分不同环境决定需要的包:
- 开发环境: baskreport-designer,baskreport-font
- 正式运行环境(没有管理需求): baskreport-core, baskreport-font
- 正式运行环境(有管理需求): baskreport-console, baskreport-font
下面的配置我们默认以开发环境的需求进行说明。
配置baskreport.home参数
系统初始化需要指定一个home文件夹,首先我们在当前项目下添加一个home目录,本例该目录为:
D:/baskreport-test/home
然后可以选择如下的一种方式指定这个路径:
- 通过VM参数指定
- 通过系统环境变量指定
- 利用bask report-init.properties配置文件指定
配置项目启动VM参数
配置项目启动VM参数:
-Dbaskreport.home=D:/baskreport-test/home
配置操作系统的环境变量
配置系统的环境参数:
BASKREPORT_HOME=D:/baskreport-test/home
配置baskreport-init.properties
项目的resources目录或src目录下添加baskreport-init.properties属性文件,并设置baskreport.home属性,参考:
baskreport.home=D:/baskreport-test/home
配置pom.xml的依赖
如果是Maven项目,则在pom.xml文件中添加baskreport相关的依赖包,配置如下:
<dependency>
<groupId>com.basksoft.report</groupId>
<artifactId>baskreport-font</artifactId>
<version>${baskreport-font.version}</version>
</dependency>
<dependency>
<groupId>com.basksoft.report</groupId>
<artifactId>baskreport-designer</artifactId>
<version>${baskreport-designer.version}</version>
</dependency>
其中baskreport-designer主要包含了报表设计工具,它依赖于baskreport-console这个Jar包,其中包含了报表管理控制台,基础的用户角色权限等功能设计。它们最终都依赖baskreport-core这个jar包,包含了baskreport 规则包的核心执行引擎。baskreport-font包是和报表打印预览的字体设置有关的jar包,也是基础包。 baskreport-font文件比较大,也可以自己下载安装。
在实际的使用过程当中,如果需要用到某个版本的SNAPSHOT,那么就需要在pom.xml当中添加一个repository信息,告诉Maven该到这里去下载SNAPSHOT版本的包,snapshot的仓库配置如下:
<repository>
<id>sonatype</id>
<url>https://s01.oss.sonatype.org/content/groups/public/</url>
</repository>
配置web.xml
如果你的项目是标准的web项目,有web.xml文件,则需要在web.xml中添加如下的filter:
<filter>
<filter-name>baskreport</filter-name>
<filter-class>com.basksoft.report.console.BaskReportFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>baskreport</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
相关的依赖jar,可以通过百度网盘直接下载: 链接: https://pan.baidu.com/s/1Zz-C0hjMA_Y4Sqn9MAx6Gg 提取码: i8em
SpringBoot项目配置
如果是spring-boot项目,则可以在项目中添加一个ReportConfig类,用以注册BaskReportFilter类给web容器,代码如下:
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.basksoft.report.console.BaskReportFilter;
@Configuration
public class ReportConfig implements WebMvcConfigurer {
@Bean
public FilterRegistrationBean<BaskReportFilter> registerReportFilter() {
FilterRegistrationBean<BaskReportFilter> registration = new FilterRegistrationBean<BaskReportFilter>(new BaskReportFilter());
registration.addUrlPatterns("/*");
registration.setName("baskreportFilter");
registration.setOrder(1);
return registration;
}
}
另外baskreport也支持报表的文导入功能,由于SpringBoott的默认文件处理机制,我们需要再添加一个类:
import javax.servlet.http.HttpServletRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@Configuration
public class ReportMultipartResolver extends CommonsMultipartResolver{
@Override
public boolean isMultipart(HttpServletRequest request) {
//如果是baskreport请求则不执行spring默认的MultipartHttpServletRequest转换
if (request.getRequestURI().contains("/baskreport")) {
return false;
}
return super.isMultipart(request);
}
@Override
public MultipartHttpServletRequest resolveMultipart(final HttpServletRequest request){
return super.resolveMultipart(request);
}
}
利用spring配置属性设置baskreport的默认系统属性
在spring-boot环境下,如果不希望通过baskreport_home目录存储默认的配置,而是希望直接读取spring的属性,则可以利用SPI机制配置一个ApplicationConfigLoader的实现类:
package com.basksoft.report.core.config.bootstrap;
import com.basksoft.report.core.config.ApplicationConfig;
public interface ApplicationConfigLoader {
ApplicationConfig load();
}
记得在resources目录下添加META-INF/services/com.basksoft.report.core.config.bootstrap.ApplicationConfigLoader文件,并且配置好ApplicationConfigLoader的实现类。 利用该实现类可以实现jdbc,jndi或自定义connection的数据源配置,参考代码:
package com.basksoft.baskreport.demo.config;
import com.basksoft.baskreport.demo.ToolSpring;
import com.basksoft.report.core.config.ApplicationConfig;
import com.basksoft.report.core.config.ConfigType;
import com.basksoft.report.core.config.bootstrap.ApplicationConfigLoader;
public class BaskConfigLoader implements ApplicationConfigLoader {
@Override
public ApplicationConfig load() {
ApplicationConfig config = new ApplicationConfig();
//可以读取自定义配置,例如spring相关配置信息
config.getProperties().setProperty("baskreport.store.database.platform", "mysql");
//ConfigType.jdbc
config.setConfigType(ConfigType.jdbc.name());
config.getProperties().setProperty("baskreport.store.database.driver", getProperty("baskserver.sampledb.driverClassName"));
config.getProperties().setProperty("baskreport.store.database.url", getProperty("baskserver.sampledb.url"));
config.getProperties().setProperty("baskreport.store.database.username", getProperty("baskserver.sampledb.username"));
config.getProperties().setProperty("baskreport.store.database.password", getProperty("baskserver.sampledb.password"));
config.getProperties().setProperty("baskreport.store.database.initialsize", "0");
config.getProperties().setProperty("baskreport.store.database.maxTotal", "50");
config.getProperties().setProperty("baskreport.store.database.minIdle", "2");
config.getProperties().setProperty("baskreport.store.database.validationQuery", "select 1");
config.getProperties().setProperty("baskreport.store.database.maxIdle", "10");
//ConfigType.jndi
// config.setConfigType(ConfigType.jndi.name());
// config.getProperties().setProperty("baskreport.store.database.jndiname", "java:comp/env/sample");
//ConfigType.connection
// config.setConfigType(ConfigType.connection.name());
// config.getProperties().setProperty("baskreport.store.database.classname", "com.basksoft.baskreport.demo.service.TestConnectionProvider");
return config;
}
private static String getProperty(String key) {
return ToolSpring.getEnvironment().getProperty(key);
}
}
具体实现办法可以参考项目: https://gitee.com/xiaodaodao/baskreport-boot