Spring Boot lire les valeurs de propriétés d'application

abdoe:

Je ne sais pas si je comprends bien, mais de ce que je suis, est que je peux utiliser des @Valueannotations pour lire les valeurs de mon application.properties.

Comme je l' ai pensé à cela ne fonctionne que pour Beans.

Je définissais un haricot comme celui-ci

@Service
public class DBConfigBean {


    @Value("${spring.datasource.username}")
    private String userName;

    @Bean
    public String getName() {
        return this.userName;
    }
}

Lorsque l'application que je commence suis en mesure de récupérer le nom d'utilisateur, mais - comment puis-je accéder à cette valeur lors de l'exécution?

Chaque fois que je fais

DBConfigBean conf = new DBConfigBean() conf.getName();

* ÉDITER *

En raison des commentaires que je suis en mesure d'utiliser cette configuration DBConfigBean - mais mon problème initial reste encore, quand je veux l'utiliser dans une autre classe

@Configurable
public SomeOtherClass {

   @Autowired
   private DBConfigBean dbConfig; // IS NULL

   public void DoStuff() {
       // read the config value from dbConfig
   }
} 

Comment puis-je lire la DBConfig dans une certaine classe d'aide que je peux définir comme un haricot

Merci

Eirini Graonidou:

Vous ne devriez pas instancier votre service avec le nouvel opérateur. Vous devez injecter, par exemple

@Autowired
private DBConfigBean dbConfig;

puis dbConfig.getName();

Aussi , vous n'avez pas besoin @Beandécorateur dans votre getName()méthode

Vous avez juste besoin de dire au printemps où chercher vos haricots annotés. Donc, dans votre configuration, vous pouvez ajouter ce qui suit:

@ComponentScan(basePackages = {"a.package.containing.the.service",
                             "another.package.containing.the.service"})

ÉDITER

Le @Value, @Autowiredetc annotations ne peut fonctionner avec des haricots, que le printemps est au courant.

Déclarez votre SomeOtherClasscomme un haricot et ajoutez le package config dans votre classe @Configuration

@Bean
private SomeOtherClass someOtherClass;

puis

 @Configuration
 @ComponentScan(basePackages = {"a.package.containing.the.service"              
  "some.other.class.package"})
 public class AppConfiguration {

  //By the way you can also define beans like:
   @Bean 
   public AwesomeService service() {
       return new AwesomeService();
   }

 }

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=202225&siteId=1
conseillé
Classement