SpringBoot项目集成FineReport9.0实践
一、背景 因工作需要,部署了一套帆软报表系统,但是在实际应用过程中存在多套系统并存,对于用户来说无疑是一种负担,但是用帆软做报表系统开发报表方便便捷,且springboot配置及应用极为简单,二者结合,如虎添翼。 经过查阅相关资料,大多数整合方案都是将springboot打成war包方式整合,难以体现出springboot的优势所在,因此有了尝试打包成jar的想法,现将具体操作步骤奉上,欢迎大家吐槽。二、准备工作1、下载安装帆软报表DEMO 点击帆软报表V9.0版本下载并安装,安装成功后将用于报表系统集成及报表设计。三、集成步骤1、创建SpringBoot项目 创建SpringBoot项目并测试web应用可正常访问。2、引入帆软报表相关jar 在SpringBoot项目根目录创建lib目录并将如下jar包导入到lib目录
http://upload-images.jianshu.io/upload_images/11890587-1cbf5507bcaf12c6.png
131437
在pom文件中引入对应依赖 其中除了systemPath配置告诉maven引入的本地jar包的位置 com.fr fr-chart 9.0 system ${project.basedir}/libs/fr-chart-9.0.jar com.fr fr-core 9.0 system ${project.basedir}/libs/fr-core-9.0.jar com.fr fr-datasource 9.0 system ${project.basedir}/libs/fr-datasource-9.0.jar com.fr fr-performance 9.0 system ${project.basedir}/libs/fr-performance-9.0.jar com.fr fr-platform 9.0 system ${project.basedir}/libs/fr-platform-9.0.jar com.fr fr-report 9.0 system ${project.basedir}/libs/fr-report-9.0.jar com.fr fr-third 9.0 system ${project.basedir}/libs/fr-third-9.0.jar com.oracle ojdbc14 10.2.0.3.0 system ${project.basedir}/libs/ojdbc14.jar
mysql mysql-connector-java 5.1.6 com.ibm.informix jdbc 4.10.6.20151104
org.clojars.gzeureka javapns 2.2
net.sourceforge.jtds jtds 1.2.2
org.xerial sqlite-jdbc 3.8.11.2
com.microsoft.sqlserver sqljdbc4 4.0
net.sf.squirrel-sql.plugins sybase 3.2.2 划重点!!!敲黑板!!!下面的一步配置也是最重要的一步,网上很多的教程缺了这样一步之后就会导致虽然本地可以运行,但是只要使用maven打包就不行,因为maven没有将本地的jar也打到生成的包中,在pom中给spring boot的打包插件设置一下includeSystemScope参数即可。
org.springframework.boot
spring-boot-maven-plugin
true
3、获取WebReport绝对路径 将WebReport目录拷贝到服务器的指定目录,如:
http://upload-images.jianshu.io/upload_images/11890587-e77b49613c662351.png
131445
获取WebReport的绝对路径:D:\FineReport_9.0\WebReport4、在Controller中添加Servlet的映射及设置内置Tomcat运行项目目录@SpringBootApplication@RestControllerpublic class FinereportApplication {
public static void main(String args) { SpringApplication.run(FinereportApplication.class, args); }
/** * 验证web服务是否正常 * @return */ @GetMapping("/hello") public String hello(){ return "Hello World!"; }
/** * 添加Servlet的映射 * @return */ @Bean public ServletRegistrationBean servletRegistrationBean(){ return new ServletRegistrationBean(new ReportServlet(),"/ReportServer"); }
/** * 设置内置Tomcat运行项目目录 * @return */ @Bean public WebServerFactoryCustomizer webServerFactoryCustomizer(){ // 设置帆软报表根目录(第三步中获取的绝对路径) String documentRoot = "D:\FineReport_9.0\WebReport";
return new WebServerFactoryCustomizer() { @Override public void customize(ConfigurableWebServerFactory factory) { if (factory instanceof TomcatServletWebServerFactory) { TomcatServletWebServerFactory tomcat = (TomcatServletWebServerFactory) factory; if (!StringUtils.isEmpty(documentRoot)) { File root = null; try { root = ResourceUtils.getFile(documentRoot); } catch (FileNotFoundException e) { e.printStackTrace(); } tomcat.setDocumentRoot(root); } } } }; }}至此Springboot与帆软报表系统通过jar方式集成方案已经完成,附上项目目录:
http://upload-images.jianshu.io/upload_images/11890587-f98812c2cf9f082e.png
131440
四、访问报表集成报表系统启动打包完成后执行:java -jar finereportdemo-0.0.1-SNAPSHOT.jar访问集成报表系统http://localhost:8080/ReportServer
http://upload-images.jianshu.io/upload_images/11890587-6c3e49835bb71485.png
131441访问集成报表系统报表:http://localhost:8080/ReportServer?reportlet=demo/analytics/financial2/财务综合指标.cpt&op=write
http://upload-images.jianshu.io/upload_images/11890587-cd0a62fa52f39f59.png
131442 编辑于 2019-12-21 16:41