Можно ли получить значение Map из файла application.properties, используя аннотацию springboot @Value - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно получить данные пары статических ключей из файла application.properties. Можно ли это сделать с помощью аннотации SpringBoot @Value.

Предложения будут приветствоваться.

Пример: languageMap={'1'='English','2'='French'}

@Value($("languageMap"))
Map<String,String> languageMap;

Ответы [ 4 ]

0 голосов
/ 24 октября 2018

application.properties:

languageMap[1]= English
languageMap[2]= French

Код, просто используйте @ConfigurationProperties и метод установки (setLanguageMap) является обязательным для поля Map, в противном случае вы не получите значения.

import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController("/myclass")
@ConfigurationProperties
public class TestControllerEx {

  Map<String, String> languageMap;

  @GetMapping
  public ResponseEntity control() {

    System.out.println(getLanguageMap());

    return new ResponseEntity("success", HttpStatus.OK);
  }

  public Map<String, String> getLanguageMap() {
    return languageMap;
  }

  public void setLanguageMap(Map<String, String> languageMap) {
    this.languageMap = languageMap;
  }
}

вывод:

{1=English, 2=French}
0 голосов
/ 24 октября 2018

Используйте @ConfigurableProperties и измените структуру файла свойств:

@Configuration
@PropertySource("<prop-file-path>")
@ConfigurationProperties()
public class ConfigProperties {
    @Value($("languageMap"))
    Map<String,String> languageMap;
}

Файл свойств:

languageMap.1=English
languageMap.2=French
0 голосов
/ 24 октября 2018

Вы можете добавить карту, используя @ ConfigurationProperties Аннотация, как указано в документации.

https://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#boot-features-external-config-loading-yaml]

В зависимости от документов вы можете загрузить свойства:

language.map [0] = 'English'

language.map [1] = 'французский'

@ConfigurationProperties(prefix="language")
public class LanguageMap{

    private List<String> languages= new ArrayList<String>();

    public List<String> getLanguages() {
        return this.languages;
    }
}
0 голосов
/ 24 октября 2018

Да, это возможно, используя @ConfigurableProperties.Вы должны создать класс для доступа к этим свойствам.Взгляните на это .В этом примере посмотрите, как осуществляется доступ к additionalHeaders.Это поможет вам.

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