Проблема с автопроводкой при использовании Springboot PropertiesFactoryBean - PullRequest
0 голосов
/ 15 марта 2019

Я новичок в Springboot PropertiesFactoryBean и хочу внедрить файл из classpath, чтобы я мог заполнить его на карте

Расположение файла свойств в Eclipse: src / main / resources

содержимое файла: simple_property.properties:

key1=value1
key2=value2
key3=value3

Мой ApplicationConfiguration.java выглядит следующим образом:

import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

@Configuration
public class ApplicationConfiguration {

    @Bean(name = "simpleMapping")
    public static PropertiesFactoryBean artifactMapping() {
        PropertiesFactoryBean bean = new PropertiesFactoryBean();
        bean.setLocation(new ClassPathResource("simple_property.properties"));

        return bean;
    }

}

У меня есть интерфейс ApplicationRunner для запуска bean-компонента:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class pCli implements ApplicationRunner {

    @Autowired
    private SomeClass someProgram;

    public static void main(String[] args) {
        SpringApplication.run(pCli.class, args);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        someProgram.run(args.getOptionValues("param1").get(0));
    }
}

Я не могу понять и продолжить, как я могу использовать bean-компонент для чтения всех свойств?Пример, как я могу получить свойства в переменную Map и получить к ним доступ?(Если @Autowired уже загрузил файл свойств из classpath, как я могу получить к нему доступ?)

1 Ответ

0 голосов
/ 15 марта 2019

Допустим, ваша карта в файле свойств выглядит следующим образом:

app.number-map={KEY1:1, KEY2:2, KEY3:3}

Вы можете использовать это значение, введя свойство с помощью аннотации @Value.Ниже приведен пример, в котором значение вводится в метод.Выражение Spring #{${app.number-map}} извлечет значение из файла свойств.

someMethod(@Value("#{${app.number-map}}") 
        Map<String, Integer> numberMap) {
   // ...
}

Используйте application.properties, так как вы все еще учитесь.Это сделает вашу жизнь легкой.Кроме того, хранение отдельного компонента конфигурации действительно поможет вам легко управлять значениями свойств и получать к ним доступ.

...