从ApplicationContext.xml到properties的配置方式转变
自从WeIdentity-Java-SDK 1.2.0版本开始,您可能已经关注到,我们的配置文件已经弃用了ApplicationContext.xml。这种做法基于以下考虑:
- 使用ApplicationContext.xml,与使用Spring Boot的调用方式是互斥的。
- ApplicationContext.xml不必要地引入了大量Spring的依赖,同时包括了大量不必要的配置项,较为臃肿。当前,我们使用fisco.properties及weidentity.properties两者组合。其中,fisco.properties记录了与FISCO-BCOS区块链节点相关的配置项,而weidentity.properties包括了WeIdentity SDK特有的功能配置项。实现上,其加载方式也对应由Spring Bean的注入方式转变成了显式读取。
如果您使用的是WeIdentity-Java-SDK 1.1.x,又需要升级到1.2.x及以上的版本,那么需要您对配置文件和调用方式进行一些处理:
配置文件
如果您使用上文的 安装部署工具方式 ,重新部署了智能合约,那么这一部分可以跳过。
如果您不需要重新部署合约,或不准备使用部署工具,则需要执行以下步骤:
- 更新fisco.properties中的对应项
- 将fisco.properties.tpl改名为fisco.properties
- 更新合约地址
- 设置chain.id,默认可设置为1
- 更新完毕之后,将fisco.properties放到/resources/目录中
- 更新weidentity.properties中的对应项
- 将weidentity.properties.tpl改名为weidentity.properties
- 更新节点信息nodes
- 如果您的FISCO-BCOS链为1.3版,格式为:“WeIdentity@节点IP:端口号”
- 如果您的FISCO-BCOS链为2.x版,格式为:“节点IP:端口号”
- 更新blockchain.orgid,为您的机构名,默认可设置为“test”
- 更新完毕之后,将weidentity.properties放到/resources/目录中
- 最后,更新节点的配置文件放到/resources/目录中
- 如果您的FISCO-BCOS链为1.3版,请拷贝ca.crt和client.keystore
- 如果您的FISCO-BCOS链为2.x版,请拷贝ca.crt,node.crt和node.key下面是两个可用的样例:
- # fisco.properties
- # FISCO-BCOS blockchain node related properties
- # Blockchain version. 1.x and 2.x are both allowed.
- bcos.version=1.3
- # WeIdentity Contract addresses, formatted as "0xab0f7a80152ba6d65cb28a164be6094bd1de3fa2".
- weId.contractaddress=0xab0f7a80152ba6d65cb28a164be6094bd1de3fab
- cpt.contractaddress=0xc594245558b7daf8c1e386771eaab8688fa06656
- issuer.contractaddress=0xa33143f3e7dd190f0ca63729a85b224b22729f81
- evidence.contractaddress=0x9bce2c5f1687b7d50a7a36290a467b923d8313ca
- specificissuer.contractaddress=0x329220c0353ed40dfe44d3755d456f767735042c
- # Specified blockchain ID you are targeting to.
- chain.id=101
- # Blockchain connection params. Do NOT change these unless you are troubleshooting!
- web3sdk.timeout=10000
- web3sdk.core-pool-size=100
- web3sdk.max-pool-size=200
- web3sdk.queue-capacity=1000
- web3sdk.keep-alive-seconds=60
- # Fisco-Bcos 2.x params, including Group ID and Encrypt Type.
- group.id=1
- encrypt.type=0
- # Config files locations and params. These should be originated from blockchain nodes.
- v1.ca-crt-path=ca.crt
- v1.client-crt-password=123456
- v1.client-key-store-path=client.keystore
- v1.key-store-password=123456
- v2.ca-crt-path=ca.crt
- v2.node-crt-path=node.crt
- v2.node-key-path=node.key
- # weidentity.properties
- # The organization ID for AMOP communication.
- blockchain.orgid=organizationA
- # Persistence Layer configurations. Do NOT change this if you are not using Persistence Layer features!
- # MySQL connection config
- jdbc.url=jdbc:mysql://0.0.0.0:3306/mysql?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
- jdbc.username=user
- jdbc.password=password
- jdbc.maxActive=50
- jdbc.minIdle=5
- jdbc.maxIdle=5
- jdbc.maxWait=10000
- jdbc.timeBetweenEvictionRunsMillis=600000
- jdbc.numTestsPerEvictionRun=5
- jdbc.minEvictableIdleTimeMillis=1800000
- # Proof salt length for Proof creation.
- salt.length=5
- # AMOP Config
- # Timeout for amop request, default: 5000ms
- amop.request.timeout=5000
- # Blockchain node info.
- nodes=127.0.0.1:8888
调用方式
目前,不再支持使用@Autowire的方式去加载WeIdService等服务。您需要使用以下代码直接创建服务实例:
- WeIdService weIdService = new WeIdServiceImpl();
- AuthorityIssuerService authorityIssuerService = new AuthorityIssuerServiceImpl();
- CptService cptService = new CptServiceImpl();
- CredentialService credentialService = new CredentialServiceImpl();
- EvidenceService evidenceService = new EvidenceServiceImpl();