API开放平台生成sdk后依赖注入失败解决方案
鱼皮使用的是java8,也就是spring2.x
我们使用的可能是java17或者更新的spring3.x
在 Spring Boot 3.0 中,`spring.factories` 文件已经被移除,取而代之的是 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 文件用于注册自动配置。
对于 Spring Boot 2.x 项目中的 `spring.factories` 文件,需要将其迁移到新的 `AutoConfiguration.imports` 文件中。以下是具体的修改步骤:
1. 移除 `spring.factories`
从 `src/main/resources/META-INF/spring.factories` 文件中删除以下内容:
```properties
# springboot starter
org.springframework.boot.autoconfigure.EnableConfiguration=com.yupi.yuapiclientsdk.YuApiClientConfig
```
2. 创建 `AutoConfiguration.imports`
在 `src/main/resources/META-INF` 目录下创建一个新文件 `spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports`。然后在这个文件中添加以下内容:
```plaintext
com.yupi.yuapiclientsdk.YuApiClientConfig
```
最终目录结构
目录结构应类似于以下内容:
```
src/main/resources/
└── META-INF/
├── spring/
│ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
```
确保 `YuApiClientConfig` 类仍然保持正确的配置和注解:
```java
package com.yupi.yuapiclientsdk;
import com.yupi.yuapiclientsdk.client.YuApiClient;
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(prefix = "yuapi.client")
@Data
@ComponentScan()
public class YuApiClientConfig {
private String accessKey;
private String secretKey;
// 返回客户端统一管理
@Bean
public YuApiClient getYuApiClient() {
return new YuApiClient(accessKey, secretKey);
}
}
```
总结
通过将 `spring.factories` 文件中的配置迁移到 `AutoConfiguration.imports` 文件中,项目将能够在 Spring Boot 3.0 中正常运行,并继续支持自动配置功能。
