Загрузка String [] из файла свойств в поле происхождения @CrossOrigin с использованием выражения-заполнителя свойства

В моем приложении весенней загрузки у меня есть следующий контроллер

@RestController(value = "ProjectController")
@CrossOrigin(origins = {"${app.api.settings.cross-origin.urls}"})
public class ProjectController {
   // some request mapping methods
}

Свойство app.api.settings.cross-origin.urls уже является ключом, имеющим допустимые URL-адреса, разделенные запятыми, в файле application.properties, например

app.api.settings.cross-origin.urls=http://localhost:3000, http://localhost:7070

Этот подход работает до тех пор, пока у меня не будет только одно значение, например

app.api.settings.cross-origin.urls=http://localhost:3000, но не для значений, разделенных запятыми. Поле origins внутри @CrossOrigin относится к типу String[], но оно не преобразуется в String[] автоматически. Я имею в виду, что должен быть какой-то способ добиться этого, предусмотренный фреймворком. Это не работа. Я могу использовать URL-адреса, разделенные запятыми, из файлов свойств, используя @Value, в List<String> или String[] в качестве поля внутри класса @Configuration, как показано ниже

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Value("${app.api.settings.cross-origin.urls}")
    private String[] consumerUiOrigins;

    @Override
    public void addCorsMappings(CorsRegistry registry) {
         registry
           .addMapping("/api/**")
           .allowedOrigins(consumerUiOrigins);
    }
}

Но это будет глобальная конфигурация, имеющая широкое применение. Я хочу придерживаться более мелкозернистой конфигурации CORS на основе аннотаций @CrossOrigin.

Поэтому я четко сформулировал свой вопрос ниже.

Можно ли ввести значение, разделенное запятыми, из файла свойств как String[], используя выражение plcaholer свойства (${*}) в поля аннотации Spring, имеющие тот же тип, то есть String[] ????? Если да, то как ??? Если нет, то можем ли мы настроить некоторые основные классы фреймворка для достижения этой цели ??? Кто-нибудь, пожалуйста, помогите ....

P.S. - Пожалуйста, не помечайте мой вопрос как дубликат Используйте свойства Spring в Java с аннотацией CrossOrigin или в Spring-Config XML

Мой вопрос больше связан с использованием выражений свойства placholder внутри полей аннотации Spring, имеющих многоэлементный тип, такой как String[], и меньше в конфигурации CORS в приложениях Spring.

4
0
1 427
1

Ответы 1

Попробуйте сделать, как показано ниже, в application.properties:

app.api.settings.cross-origin.urls = "http://localhost:3000","http://localhost:7070"

Другие вопросы по теме