为什么需要Starter?
理想情况:开发者只需关心调用哪些接口,传递哪些参数就跟调用自己写的代码一样简单。
开发starter的好处:开发者引入之后,可以直接在application.yml中写配置,自动创建客户端。
starter开发流程
首先我们先创建一个新项目
创建一个springBoo项目
为项目添加依赖
完成创建后修改maven配置把他配置
修改依赖
修改版本号为0.0.1
删除
创建完这个项目后,会默认生成一个Springboot启动类,但我们并不打算运行一个web项目,而是提供一个现成的客户端对象给用户使用。
现在我们的目标是为用户生成一个可用的客户端对象,刚才我们是如何生成的呢?我们手动创建了一个新的对象实例,而现在,我们希望用户能通过引入starter的方式直接使用客户端,不需要手动创建所以我们需要编写一个配置类。
删除启动类,创建配置类AynuClientConfig.java
编写配置类
@ConfigurationProperties
是一个非常有用的注解,它允许你绑定前缀为特定值的属性到一个配置类上。
@Configuration
//能够读取application.yml的配置,读取到配置后,把读到的配置设置到我们这里的属性中,
//这里给所以的配置加上前缀“aynu.client”
@ConfigurationProperties("aynu.client")
@Data
//自动扫描,使Spring能够自动注册相应的Bean
@ComponentScan
public class AynuClientConfig {private String accessKey;private String secretKey;@Beanpublic AynuClient aynuClient(){return new AynuClient(accessKey,secretKey);}
}
这个Bean(AynuClient)具体怎么实现,需要自己根据需求设计。
在resources下创建文件夹META-INF
并在META-INF目录下创建spring.factories
spring.factories:定义了 Spring Boot 的自动配置。它是一个标准的Java Properties 文件,用于指定要自动配置的类。这个文件中的每一行都是一个配置项,包含两个部分:配置项的全限定类名和对应的自动配置类。它们之间使用等号(=)进行分隔。在 Spring Boot 应用启动时,它会加载这个 spring.factories 文件并根据其中的配置项自动进行相应的配置。
在spring.factories文件内编写配置项为自动引入配置的类。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.aynu.aynuclientsdk.AynuClientConfig
上述配置项指定了要自动配置的类 com.yupi.yuapiclientsdk.YuApiclientConfig,它是我们刚刚编写的配置类通过在 spring.factories 文件中配置我们的配置类,Spring Boot 将会在应用启动时自动加载和实例化YuApiClientConfig,并将其应用于我们的应用程序中。这样,我们就可以使用自动配置生成的 yuApiclient 对象,而无需手动创建和配置。
最后把这个包使用maven安装到本地仓库(记着删除test下的启动类)
所需依赖:
<groupId>com.aynu</groupId>
<artifactId>aynu-client-sdk</artifactId>
<version>0.0.1</version>
这样这个sdk就算制作好了
在其中项目中引用后,在yml中也会有配置提示
我们在sdk中配置的bean,使用
@Autowired AynuClient aynuClient;
注入即可