Как получить доступ к объектам конфигурации в Spring Boot - PullRequest
0 голосов
/ 24 сентября 2019

Spring Boot имеет механизм доступа к содержимому файлов .properties (или YAML), которые можно включить в приложение.В настоящее время у меня есть файл dbase.properties (расположенный в src / main / resources), который содержит следующую информацию:

app.dbase.name=MyDbase
app.dbase.connect=jdbc:postgresql://localhost:5432
app.dbase.user=auser
app.dbase.password=mypassword

Как описано в различных документах и ​​примерах Spring Boot, у меня есть класс конфигурации, который определенниже:

@Configuration
@PropertySource("dbase.properties")
@ConfigurationProperties(prefix = "app.dbase")
public class DbInfo
{
   private String name;
   private String connect;
   private String user;
   private String password;

   // Getters and setters left out for brevity
}

К сожалению, хотя различные документы и примеры дают хорошую информацию о том, как определить класс конфигурации, я не смог найти никакого описания, как его использовать!По-видимому, веб-приложение Spring Boot создает экземпляр класса конфигурации при запуске (и, похоже, оно также инициализирует их значениями из файла свойств), но мои попытки угадать, как получить доступ к его содержимому, когда мне нужно, потерпели неудачу.Способ сделать это, вероятно, прост, но никто, кажется, нигде не хочет описывать этот метод.

Итак: как получить доступ к одному из этих классов конфигурации и использовать его после создания экземпляра?

1 Ответ

0 голосов
/ 25 сентября 2019

Обратите внимание, что @ConfigurationProperties требует, чтобы все свойства в вашем файле имели префикс «app.dbase», как в «app.dbase.username» и «app.dbase.password».Если это так, то класс, который у вас сейчас есть, должен работать.Вы бы назвали это так:

@Component 
public class Component {

   @Autowired DbInfo dbInfo;

   public method() {
      String username = dbInfo.username();
   }
}

Если у вас возникли проблемы, вам может потребоваться добавить это в класс конфигурации:

@Configuration
public class Config {

   @Bean
   public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
       return new PropertySourcesPlaceholderConfigurer();
   }

   ...
}

Возможно, вам также понадобится добавить 'classpath: 'внутри вашей аннотации, как в: @PropertySource("classpath:dbase.properties"), при условии, что ваш файл свойств находится в вашем src / main / resources.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...