私は知っているので、同様のことを尋ねる多くの質問がありますが、それらを使ってこの状況から抜け出すことはできません。Spring Bootとapplication.ymlを使用してMap <String、Double>を挿入する
私はSpringブートアプリケーションを持っています。
@SpringBootApplication
@EnableConfigurationProperties
public class Application implements ApplicationRunner {
public static void main(String[] args) {
SpringApplication.run(Application .class, args);
}
}
次に、次のクラスがあります。
@Component
@ConfigurationProperties(prefix = "somePrefix")
public class AClass {
private final AnotherClass anotherClass;
private final Map<String, Double> aMap;
@Autowired
public AffinityChecks(AnotherClass anotherClass,
Map<String, Double> aMap) {
this.anotherClass = anotherClass;
this.aMap = aMap;
}
// Omissis
最後に、次のapplication.yml
設定ファイルがあります。
somePrefix:
aMap:
key1: 0.6
key2: 0.2
key3: 0.2
私が欲しいのは、構築プロセス中にタイプAClass
のオブジェクトにマップを注入する春です。私が得るエラーは次のとおりです。
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.Map<java.lang.String, java.lang.Double>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
何が起こっていますか?
ありがとうございます。
"Map aMap"をコンストラクタから削除してください。 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-complex-type-merge –
MrKiller21
"aMap"がSpringによってもう初期化されていないため、コンストラクタからマップする) –
マップにゲッターを追加する必要がある – MrKiller21