如何使用Spring Boot整合Fisco Bcos
如何使用Spring Boot整合Fisco Bcos
这篇文章主要介绍“如何使用Spring Boot整合Fisco Bcos”,在日常操作中,相信很多人在如何使用Spring Boot整合Fisco Bcos问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Spring Boot整合Fisco Bcos”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
简介
FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源。
目前,成熟的区块链的平台不少,之所以选择FISCO BCOS,主要是因为文档细致,容易入门。
官方地址入口
本地环境
本篇文章介绍的 Spring Boot 整合 Fisco Bcos的案例,是在阿里云服务器上部署验证的。
我这边共有两台电脑:
电脑1:本地的Mac电脑,没有区块链环境,只是用于SpringBoot工程的开发;
电脑2:阿里云上的CentOS服务器,配置了区块链环境,合约部署、编译、SpringBoot工程的jar包运行都是在该电脑上;
大家可根据自己的电脑环境,对比该案例进行开发即可。
主要流程:
--> 1、Fisco Bcos环境搭建与验证
--> 2、创建SpringBoot工程并配置依赖
--> 3、编写案例代码
--> 4、生成jar包、部署服务器验证
1、Fisco Bcos环境搭建与验证
Fisco Bcos环境搭建参考的是官方的文档:
搭建第一个区块链网络
我这边测试服务器的操作系统是CentOS,如果是其他操作系统,也是参照该文档进行配置,流程是类似的。
详细流程,大家参照文档进行配置就行了,这里主要说下关键的细节:
1.1、搭建单群组4节点联盟链:
我这边使用的是国密版本命令:
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G
主要原因:
我这边使用的Fisco Bcos SDK版本是2.8.0,加载证书时默认会加载国密证书(应该有加载证书类型的选项配置,目前暂未找到相关API)。
如果使用的是非国密版本命令,在/fisco/node/127.0.0.1/sdk/目录下不会生成国密证书,使用该SDK就会报错。
1.2、检查证书
成功启动所有节点后,在/fisco/node/127.0.0.1/sdk/目录下验证所有证书是否存在(gm代表国密),如下图:
1.3、使用证书验证节点正确性
启动节点后,我们可以使用Fisco Bcos提供的本地控制台程序console对节点进行验证。
大家参照文档,先下载、配置控制台程序。
注意:为控制台程序配置节点证书(即:将/fisco/node/127.0.0.1/sdk/下的证书全部复制到控制台程序的 /console/conf/目录下)
启动控制台,测试节点,例如:获取区块链数据高度:getBlockNumber:
如果能正常部署合约,且能获得数据高度,则区块链环境没什么问题,如下图:
2、创建SpringBoot工程并配置依赖
服务端区块链环境已完成验证,接下来,我们创建SpringBoot工程,并集成Fisco Bcos Java版SDK。
Java SDK 文档
2.1、创建SpringBoot工程:
仅勾选Spring Web即可:
2.2、配置pom.xml
注意:SpringBoot版本不宜过高(已与官方技术人员确认),我这边试过2.6.2+,Demo案例调用节点时会异常闪退,当把版本降低为2.4.2就正常了:
配置Fisco Bcos Java版SDK依赖:
pom.xml完整代码:
<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version><relativePath/><!--lookupparentfromrepository--></parent><groupId>com.qxc</groupId><artifactId>demo_bcos</artifactId><version>0.0.1-SNAPSHOT</version><name>demo_bcos</name><description>DemoprojectforSpringBoot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.fisco-bcos.java-sdk</groupId><artifactId>fisco-bcos-java-sdk</artifactId><version>2.8.0</version><!--排除这个slf4j-log4j12--><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3、编写案例代码
3.1、配置Fisco Bcos:
Java SDK » 配置说明
为了简单,本案例将Fisco Bcos的参数通过xml统一配置,并在代码中自动读取。
在/src/main/resources/目录下创建文件fisco-config.xml:
fisco-config.xml完整代码:
<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><beanid="defaultConfigProperty"class="org.fisco.bcos.sdk.config.model.ConfigProperty"><propertyname="cryptoMaterial"><map><entrykey="certPath"value="conf"/></map></property><propertyname="network"><map><entrykey="peers"><list><value>127.0.0.1:20200</value><value>127.0.0.1:20201</value></list></entry></map></property><propertyname="account"><map><entrykey="keyStoreDir"value="account"/><entrykey="accountAddress"value=""/><entrykey="accountFileFormat"value="pem"/><entrykey="password"value=""/><entrykey="accountFilePath"value=""/></map></property><propertyname="threadPool"><map><entrykey="channelProcessorThreadSize"value="16"/><entrykey="receiptProcessorThreadSize"value="16"/><entrykey="maxBlockingQueueSize"value="102400"/></map></property></bean><beanid="defaultConfigOption"class="org.fisco.bcos.sdk.config.ConfigOption"><constructor-argname="configProperty"><refbean="defaultConfigProperty"/></constructor-arg></bean><beanid="bcosSDK"class="org.fisco.bcos.sdk.BcosSDK"><constructor-argname="configOption"><refbean="defaultConfigOption"/></constructor-arg></bean></beans>
3.2、配置节点证书:
把区块链节点下的证书拷贝到/src/main/resources/conf/目录下(conf目录为fisco-config.xml配置的证书路径):
3.3、编写controller
BcosController完整代码:
packagecom.qxc.demo_bcos.controller;importorg.fisco.bcos.sdk.BcosSDK;importorg.fisco.bcos.sdk.client.Client;importorg.fisco.bcos.sdk.client.protocol.response.BlockNumber;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassBcosController{@GetMapping("/test")publicStringtest(){System.out.println("-----test------");return"thisisbcosdemo";}@GetMapping("/block")publicStringgetBlockNumber(){System.out.println("-----getBlockNumbergetBlockNumber------");@SuppressWarnings("resource")ApplicationContextcontext=newClassPathXmlApplicationContext("classpath:fisco-config.xml");System.out.println("-----getBlockNumberClassPathXmlApplicationContextok------");BcosSDKbcosSDK=context.getBean(BcosSDK.class);System.out.println("-----getBlockNumberBcosSDKok------");Clientclient=bcosSDK.getClient(Integer.valueOf(1));System.out.println("-----getBlockNumberclientok------");BlockNumberblockNumber=client.getBlockNumber();return"getBlockNumber:"+blockNumber.getBlockNumber().toString();//return"";}}
3.4、DemoBcosApplication默认不做修改
3.5、application.properties什么也没配置
为了简单,端口我这边直接使用8080,主要是个人比较懒,什么都懒得配置了,O(∩_∩)O~
4、生成jar包、部署服务器验证
4.1、本地先跑一把
SpringBoot的开发是在我本地的Mac电脑上进行的,为了能稳妥的部署到远程CentOS服务器上,
先在本地跑一把,看看工程编译运行是否正常(此时不用测试区块链功能,因为我本地并没有区块链环境):
没问题,完美。
4.2、打包jar
4.3、把jar包发送到远程服务器上,并运行:
案例程序已在服务器端跑起来了,回到本地mac电脑,远程连服务器试一下吧(IP就不展示给大家看了哈):
到此,关于“如何使用Spring Boot整合Fisco Bcos”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
推荐阅读
-
Spring Boot条件注解怎么用
-
Spring Boot怎么配置文件类型的properties格式与yml格式
-
Spring Boot怎么实现请求参数校验
-
Java的SpringBoot多模块怎么开发
-
Spring Boot中如何读取配置
SpringBoot中如何读取配置这篇文章主要为大家展示了“Sp...
-
Java Spring Boot框架面试题有哪些
JavaSpringBoot框架面试题有哪些本篇内容介绍了“J...
-
怎么在Spring boot中使用Junit进行单体测试
这篇文章给大家介绍怎么在Springboot中使用Junit进行单体测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家...
-
怎么在Spring Boot中使用EasyCode插件一键生成代码