Java spring boot custom property type

218
12 сентября 2018, 19:40

Я использую Java + Spring Boot, возникла необходимость добавить в файл application.properties поле - экземпляр какого-то своего типа (не String, не Integer, не...) Например как-то так:

@Configuration
@ConfigurationProperties
public class MySuperCustomProperties {
    private SomeClass someProperty;
    // get set...
}

(Где SomeClass это какой-то собственный тип данных.)

Можно ли так сделать и если да, то как? (Нет ли такого интерфейса (например) реализовав который Spring сможет сам кастить строку в SomeClass)

Answer 1

Вы можете для этого случая использовать @Bean.

application.properties:

springboot.field=field

MySuperCustomProperties.class:

@Configuration
public class MySuperCustomProperties {
    @Bean
    public SomeClass someProperty( @Value("${springboot.field}") String field ) {
        SomeClass someClass = new SomeClass();
        someClass.setField(field);
        return someClass;
    }
}

SomeClass.class:

public class SomeClass {
    private String field;
    public String getField() {
        return field;
    }
    public void setField(String field) {
        this.field = field;
    }
}

Application.class:

@SpringBootApplication
public class Application implements CommandLineRunner {
    @Autowired
    private SomeClass someClass;
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
    @Override
    public void run(String... args) throws Exception {
        System.out.println(someClass.getField());
    }
}
READ ALSO
Android Studio post запрос url + port

Android Studio post запрос url + port

Это отлично работает с прямым url без порта на php, если я указываю ссылку без порта 3000

235
java.io.IOException: Указанное сетевое имя более недоступно

java.io.IOException: Указанное сетевое имя более недоступно

Создал простой асинхронный клиент-сервер, при подключении клиент посылает на сервер сообщение, при попытке принять сообщение на стороне...

300
RSA не дешифрует

RSA не дешифрует

Зашифровал строку методом RSA, дешифрую, а там вопросительные знаки и "кракозябра"До этого пробовал все работало

256
JAR не выполняется на других компьютерах

JAR не выполняется на других компьютерах

Первая неделя с JavaНаписал программу шифровальщик

284