分分钟开发一个能用Spring快速启动的SDK

目录

什么是SDK

如何开发

(1)新建项目,引入Spring Configuration Processor依赖。

(2)主类、test测试目录用不到删除,pom中删除引入maven的插件的相关配置

(3)主要内容是生成bean的配置类

(4)在 resources 目录下新建 META-INF 目录,并创建 spring.factories 文件,并指定配置类所在的目录

(5)用maven的install,在使用时,在pom直接引入我们的包


什么是SDK

SDK例如下载的mybatis包,引入starter 依赖,在pom中配置,就可以轻松使用。 比如API调用平台项目每次调用接口都需要自己写客户端,并且写签名认证算法、传递签名参数、生成随机数、时间戳等一系列东西非常麻烦。开发者在实际使用时只关心要提供的参数(密钥等)和APP的配置与使用,对于随机数、时间戳并不关心。

有了SDK就只需要引入starter 依赖,在pom中配置,就可以直接创建一个客户端,轻松使用。

如何开发

(1)新建项目,引入Spring Configuration Processor依赖。

解释一下这个包的作用:并不是大多数cv博主所说的用来加载传统的xml或者properties配置。没有springboot的时候照样有方法加载。

根据官网的说明这个包的作用是生成配置元数据,表现为在配置文件中为自定义的配置生成提示。比如你平常在yml文件里面配置。

server:
	port: 8080
	#你在idea里面可以点击port,进到这个字段里面,还可以看到配置的提示信息
aaa:
	bbb: haha
	#自己自定义的就不能点击

这是因为在你的资源文件里面有一个spring-configuration-metadata.json文件,这是spring配置的元数据,是json形式

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency

spring-boot-configuration-processor其实是一个注解处理器,在编译阶段干活的,一般在maven的声明都是,optional 为true

(2)主类、test测试目录用不到删除,pom中删除引入maven的插件的相关配置

(如build,这个是maven构建项目的方式,我们现在是要构建依赖包,而不是直接运行jar包的项目。)

(3)主要内容是生成bean的配置类

需要@enableComponentScan @Configuration @ConfiguraionProperties

解释一下@ConfiguraionProperties注解的作用:是springboot提供读取配置文件的一个注解在bean被实例化后,会调用后置处理,递归的查找属性,通过反射注入值,对大多数属性而言强制需提供其setter和getter方法。 但是属性名称不要求一定相同,只需保证“set”字符串拼接配置文件的属性和setter方法名相同即可。

主要作用:在实体类上与@Component配合使用配置组件时,自动注入配置文件中配置的属性值,如

// 如有这样一个类
@Component
// 表示使用配置文件中前缀为user1的属性的值初始化该bean定义产生的的bean实例的同名属性
// 在使用时这个定义产生的bean时,其属性name会是Tom
@ConfigurationProperties(prefix = "user1")
public class User {
	private String name;
	// 省略getter/setter方法
}

这个组件实例化后属性name会被填充为配置文件下user1前缀下的name,即为Tom

user1.name=Tom

配置类中与@bean配合使用配置组件时,自动注入属性,如

@Configuration
public class DataSourceConfig {

	@Primary
	@Bean(name = "primaryDataSource")
	@ConfigurationProperties(prefix="spring.datasource.primary")
	public DataSource primaryDataSource() {
		return DataSourceBuilder.create().build();
	}
}// 会把配置文件中关于primary的所有配置填充到组件对应的属性上pan>

区分与@value注解的区别

@Value支持spel表达式,能从配置文件中读取到这个配置的值,然后再自己赋值给属性。如

@Value("${port}")
private String port;
(4)在 resources 目录下新建 META-INF 目录,并创建 spring.factories 文件,并指定配置类所在的目录
org.springframework.boot.autoconfigure.EnableAutoConfiguration = 

解释一下 META-INF 目录的作用:在Java EE中,META-INF目录主要用来存放一些项目的配置信息和描述文件,以便容器和其他组件能够正确地识别和处理项目。在META-INF目录下可能会包含多个文件,常见的包括MANIFEST.MF,context.xml,persistence.xm等。其中,MANIFEST.MF文件指定了JAR包的相关信息,context.xml文件用来配置Web应用程序的上下文参数,persistence.xml文件用于配置JPA实体管理器。

解释一下 spring.factories 文件的作用:它是一个标准的Java Properties文件,用于指定要自动配置的类。在Spring Boot启动时,它会扫描classpath下所有的spring.factories文件,这个文件中的每一行都是一个配置项,Spring会逐个加载其中的自动配置类,并将它们注入到Spring ApplicationContext中,使得项目能够自动运行。该文件的格式为键值对,键是自动配置类的全限定名,值是该自动配置类所对应的配置类的全限定名。 对于在maven中引用的其他外部包加入容器的过程,需要用到spring.factories。

在这里要引入这个文件主要是现在去掉了主类,原先主类@SpringApplication是一个组合注解,能够自动识别主类路径下的配置类,现在我们需要手动告诉Spring要引入创建组件的配置类的所在位置。

上述配置项指定了要自动配置的类com.yupi.yuapiclientsdk.PapiClientConfig,它是我们刚刚编写的配置类。通过在spring.factories文件中配置我们的配置类,Spring Boot将会在应用启动时自动加载和实例化PapiClientConfig,并将其应用于我们的应用程序中。这样,我们就可以使用自动配置生成的PapiClient对象,而无需手动创建和配置。

(5)用maven的install,在使用时,在pom直接引入我们的包

在yml中配置参数

直接注入papiClient调用接口,爽歪歪。

  • 36
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值