В моем приложении весенней загрузки у меня есть следующий контроллер
@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.
Попробуйте сделать, как показано ниже, в application.properties:
app.api.settings.cross-origin.urls = "http://localhost:3000","http://localhost:7070"