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 中正常运行,并继续支持自动配置功能。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP