J'ai un composant EmbeddedRedis
qui dépend d'un objet de configuration RedisConfig
analysé à partir du fichier de propriétés de l'application. Il existe différents fichiers de propriétés, correspondant aux profils d'application possibles pouvant être exécutés. Ainsi, lorsqu'il est exécuté dans le profil master
, le composant EmbeddedRedis
sera approvisionné conformément au profil master
.Spring Boot - Composant Autowire utilisant différents profils
Dans une classe de test, supposée mettre en place un cluster Redis local, il faut également Redis
objets provisionnés en fonction de tous les autres profils. J'ai esquissé mon idée ci-dessous en utilisant l'annotation @Qualifier
, qui n'apporte pas le résultat souhaité.
@Autowired @Qualifier("dev-cluster-master")
private Redis embeddedRedisMaster;
@Autowired @Qualifier("dev-cluster-slave-001")
private Redis embeddedRedisSlave1;
@Autowired @Qualifier("dev-cluster-slave-002")
private Redis embeddedRedisSlave2;
Comment puis-je archiver le résultat souhaité dans Spring Boot? Si cela ne fonctionne pas directement, cela suffira-t-il également pour obtenir les objets de configuration mentionnés ci-dessus analysés à partir des différents fichiers de propriétés.
@Component
@ConfigurationProperties(prefix = "spring.redis")
public class RedisConfig {
....
}
Merci d'avance!
Salut Afridi, merci pour votre réponse mais je ne comprends pas très bien. L'extrait de code ne compile même pas, car l'annotation @Profile n'est pas applicable aux champs. – twiechert
Oh désolé, l'annotation @Profile ("master") ne peut être utilisée qu'avec la méthode pas avec des champs. Donc, cette annotation devrait être ajoutée sur la méthode de votre définition de bean pour Redis. Alors pouvez-vous poster vos définitions de bean pour chacune des configurations de Redis? après que le printemps va initialiser le haricot spécifique sur la base du profil actif – Afridi
Vérifier ma réponse mise à jour – Afridi