开发SDK(Starter)

介绍

在使用SpringBoot项目时,在Maven依赖中我们常常会引入很多Starter,这些Starter可以帮助我们简化配置,我们可以直接在application.yml文件中进行简单配置即可,以knife4j为例

maven 中引入依赖
在这里插入图片描述

application.yml中完成配置
在这里插入图片描述


开发Starter

接下来我将介绍如何开发一个属于自己的Starter

创建一个SpringBoot项目

在选择依赖时,可以添加Spring Configuration Processor(可以在编写配置时进行自动补全),其他依赖可以自行选择添加
在这里插入图片描述

修改pom.xml文件

按照需求修改版本号等
在这里插入图片描述
删除Build (一定要删,不然会影响运行
在这里插入图片描述
删去主类


编写代码

在这里插入图片描述

下面我会以一个简单的例子方便演示,使用前在配置文件中配置accessKey、secretKey

Client类

package com.xiaoc.sdktest.client;
import lombok.Data;
@Data
public class XiaoCClient {
    private String accessKey;
    private String secretKey;

    public XiaoCClient(String accessKey, String secretKey) {
        this.accessKey = accessKey;
        this.secretKey = secretKey;
    }
    
    public String test(){
        return accessKey+"."+secretKey;
    }
    
}

Config类

package com.xiaoc.sdktest;

import com.xiaoc.sdktest.client.XiaoCClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties("xiaoc.client")
@Data
@ComponentScan
public class XiaoCClientConfig {
    private String accessKey;
    private String secretKey;

    @Bean
    public XiaoCClient xiaoCClient(){
        return new XiaoCClient(accessKey,secretKey);
    }
}

编写自动配置信息

创建META-INF,在该目录下创建spring.factories文件(定义Spring Boot的自动配置)

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com/xiaoc/sdktest/config/XiaoCClientConfig

在这里插入图片描述

下载到本地仓库

在maven中使用install(使用前跳过测试,因为以及删去了主类,所以在运行时会报错,也可以把Test文件删去进行下载)
在这里插入图片描述
在这里插入图片描述

在另一个项目中进行测试

  1. 打开一个新项目
  2. 引入依赖(即上面maven中配置的信息)
    在这里插入图片描述
		<dependency>
            <groupId>com.xiaoc</groupId>
            <artifactId>SDK-Test</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
  1. 配置信息
    在这里插入图片描述
  2. 测试
    测试类
package com.xiaoc.sdktest;

import com.xiaoc.sdktest.client.XiaoCClient;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;

@SpringBootTest
public class test {
    @Resource
    XiaoCClient xiaoCClient;

    @Test
    void test(){
        String res = xiaoCClient.test();
        System.out.println(res);
    }
}

运行结果

在这里插入图片描述

注意!!!

如果运行出现无法自动注入等情况,一定要检查自己的版本,我这里使用的Spring Boot 版本是2.7.8 ,java版本是8 ,SpringBoot 3.x兼容性还是有点问题,平时得多注意注意

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fabric Java SDK 是为 Hyperledger Fabric 区块链平台开发Java SDK,它提供了访问 Fabric 网络的所有必要接口,包括身份验证、链码调用、交易提交等。Spring Boot 是一个基于 Spring 框架的快速开发应用程序的工具,它提供了诸多便利的特性,如自动配置、快速开发等。 在使用 Fabric Java SDK 开发 Spring Boot 项目时,我们可以采用以下步骤: 1. 配置 Maven 依赖 在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>org.hyperledger.fabric-sdk-java</groupId> <artifactId>fabric-sdk-java</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 2. 配置 Fabric SDK 在 Spring Boot 项目中,我们可以使用 @Configuration 注解配置 Fabric SDK。在配置中,我们需要指定以下参数: - Fabric 网络的 CA 证书 - Fabric 网络的 MSP 证书 - Fabric 网络的连接配置文件 ```java @Configuration public class FabricConfig { private static final String CONNECTION_PROFILE_PATH = "connection-profile.yaml"; private static final String MSP_PATH = "/msp"; private static final String CA_ORG1_URL = "http://localhost:7054"; private static final String CHANNEL_NAME = "mychannel"; @Bean public NetworkConfig getNetworkConfig() throws Exception { Path connectionProfilePath = Paths.get(CONNECTION_PROFILE_PATH); return NetworkConfig.fromYamlFile(connectionProfilePath.toFile()); } @Bean public User getUser(NetworkConfig networkConfig) throws Exception { UserContext userContext = new UserContext(); userContext.setName("user1"); userContext.setAffiliation("org1"); userContext.setMspId("Org1MSP"); Path mspPath = Paths.get(networkConfig.getOrganizationInfo("Org1").getMspId(), MSP_PATH); userContext.setEnrollment(new Enrollment() { @Override public PrivateKey getKey() { try { return loadPrivateKey(mspPath); } catch (Exception e) { throw new RuntimeException(e); } } @Override public String getCert() { try { return new String(loadCert(mspPath), "UTF-8"); } catch (Exception e) { throw new RuntimeException(e); } } }); return userContext; } @Bean public FabricGateway getGateway(NetworkConfig networkConfig, User user) throws Exception { Gateway.Builder builder = Gateway.createBuilder(); builder.identity(user); builder.networkConfig(networkConfig); return builder.connect().get(); } @Bean public Contract getContract(FabricGateway gateway) throws Exception { return gateway.getNetwork(CHANNEL_NAME).getContract("mychaincode"); } private byte[] loadCert(Path mspPath) throws Exception { Path certPath = mspPath.resolve(Paths.get("signcerts", "cert.pem")); return Files.readAllBytes(certPath); } private PrivateKey loadPrivateKey(Path mspPath) throws Exception { Path keyPath = mspPath.resolve(Paths.get("keystore", "priv.key")); byte[] keyBytes = Files.readAllBytes(keyPath); return getPrivateKeyFromBytes(keyBytes); } private PrivateKey getPrivateKeyFromBytes(byte[] keyBytes) throws Exception { PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory factory = KeyFactory.getInstance("EC"); return factory.generatePrivate(spec); } } ``` 3. 实现接口方法 在接口方法中,我们可以使用 Fabric SDK 提供的 API 实现对链码的调用、交易的提交等操作。 ```java @RestController public class MyController { private static final String CHAINCODE_NAME = "mychaincode"; private static final String FUNCTION_NAME = "invoke"; private static final String KEY = "key1"; private static final String VALUE = "value1"; @Autowired private Contract contract; @PostMapping("/set") public String setValue() throws Exception { contract.submitTransaction(FUNCTION_NAME, KEY, VALUE); return "success"; } @GetMapping("/get") public String getValue() throws Exception { byte[] result = contract.evaluateTransaction(FUNCTION_NAME, KEY); return new String(result, "UTF-8"); } } ``` 以上就是使用 Fabric Java SDK 开发 Spring Boot 项目的流程。通过这种方式,我们可以方便地实现对 Fabric 网络的访问,并快速开发出符合需求的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值