0
votes

Est-il mauvais de mettre @ service / composant avec @Bean?

Supposons que j'ai ce bean de service: xxx pré>

avec les valeurs étant: p> xxx pré>

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 commentaires

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.


3 Réponses :


0
votes

Vous ne devriez pas faire cela, car cela créera deux haricots du même type.

Dans votre cas, vous n'avez pas mentionné différents noms pour les haricots Donc, il remplacera si printemps.main.allow-haricoter-définition-dérotéral = true Ça échouera.

PS: pour @service Annotation pour créer un haricot, le package de classe doit être configuré dans le @Componentscan ou dans le package de numérisation de base


0 commentaires

0
votes

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;
}


0 commentaires

1
votes

Vous pouvez injecter votre configuration directement dans votre service xxx

et supprimer l'annotation @bean à partir de MyConf Allong avec Myservice Method.


0 commentaires