目录
(1)新建项目,引入Spring Configuration Processor依赖。
(2)主类、test测试目录用不到删除,pom中删除引入maven的插件的相关配置
(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调用接口,爽歪歪。