【发布时间】:2021-07-30 18:16:31
【问题描述】:
我想提供一个特定的Bean,让这个Bean覆盖Spring Cloud中的BeanAutoConfiguration 类。
第一次尝试
因此我创建了一个 Configuration 类:
@Configuration
public class MyLocalConfig {
@Bean
public ApiClient apiClient() throws IOException {
return ClientBuilder.standard(false).build();
}
}
使用@Primary 或@Order 注释来确定优先级并没有帮助。
第二次尝试(编辑)
我也尝试使用 AutoConfiguration。但即使是@AutoConfigureBefore 注解也会被忽略。
@Configuration
@AutoConfigureBefore(KubernetesClientAutoConfiguration.class)
public class LocalKubeAutoConfiguration {
@Bean
public ApiClient apiClient() throws IOException {
return ClientBuilder.standard(false).build();
}
}
我的 Configuration 类 Beans 总是在 KubernetesClientAutoConfiguration 中的 Beans 之后实例化班级。 因此 AutoConfiguration 类不使用我的 Bean。
问题:
- 我的错误是什么?
- 如何确定配置的优先级?
这是我的其他代码:
主类
@SpringBootApplication
public class SpringBootAdminApp {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApp.class, args);
}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>testme</artifactId>
<version>1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-client-all</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
</project>
【问题讨论】:
-
你的配置是什么包,你@SpringBootApplication注解类的包是什么?
-
你可以尝试在
@SpringBootApplication类中使用@Import配置 -
@VladimirShefer SpringBootApplication 类的包和配置是一样的。导入也无济于事。
标签: spring-boot spring-cloud spring-cloud-config