Supposons que j'ai ce bean de service: avec les valeurs étant: p> Je souhaite peut-être le créer à l'intérieur d'un CONFIGURATION: P> @Configuration
@ConfigurationProperties(prefix="com.foo")
public class MyConf{
private Map<String, String> values;
@Bean
public MyService myService(){
return new MyService(values);
}
}
3 Réponses :
Vous ne devriez pas faire cela, car cela créera deux haricots du même type. P>
Dans votre cas, vous n'avez pas mentionné différents noms pour les haricots
Donc, il remplacera si PS: pour printemps.main.allow-haricoter-définition-dérotéral = true code> Ça échouera. P>
@service code> Annotation pour créer un haricot, le package de classe doit être configuré dans le @Componentscan code> ou dans le package de numérisation de base p>
Si vous souhaitez utiliser vos valeurs de propriétés dans votre classe de service (ou ailleurs ailleurs), vous devez simplement l'injecter:
@Service
public class MyService{
@Autowired
private MyConf myConf;
}
Vous pouvez injecter votre configuration directement dans votre service et supprimer l'annotation @bean à partir de MyConf Allong avec Myservice Method. P> P>
Pourquoi voudriez-vous créer le bean myservice vous-même et ne pas laisser le démarrage de printemps le scanner et le gérer pour vous?
Parce que je ne sais pas comment injecter cette carte des valeurs à l'intérieur de la fève-service sans avoir à créer une classe spécifique :(
Utilisez l'annotation de service avec des composants et au lieu d'utiliser ConfigurationProperties, utilisez l'annotation de valeur pour injecter les propriétés de l'environnement.