Поэтому мой application.properties выглядел так:
spring.profiles.active=EN, cat
custom.username=user
custom.password=pass
Я удалил его и вместо этого создал application.yml. IntelliJ даже отмечает это маленьким зеленым значком кнопки «Пуск». application.yml выглядит следующим образом:
spring:
profiles:
active: EN, cat
custom:
username: user
password: pass
Но когда я это делаю, пользовательские свойства больше не распознаются. IDE помечает их красным и показывает эту ошибку: «Здесь не ожидается ключ «custom»».
Я не был уверен, правильно ли это, поэтому попробовал то, что предлагала IDE при использовании автозаполнения для записи Spring.profiles.active, который записывал элементы списка следующим образом:
spring:
profiles:
active:
- EN
- cat
custom:
username: user
password: pass
Но это тоже не помогло.
Я не знаю, куда идти дальше. Я пытался изучить эту проблему, однако единственные результаты, которые я получаю, которые приближаются друг к другу, просто упоминают, что можно использовать yml вместо свойств, а некоторые даже используют пользовательские свойства, как я показал выше.
Возможно, это проблема с версией? Мой помпон выглядит так:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.2.RELEASE
myID
myArtifact
0.0.1-SNAPSHOT
myName
myDescription
11
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-maven-plugin
Обновление
Чтобы ответить на вопрос, который Марк Б задал в комментариях. Это сообщение об ошибке:
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-01-05T08:58:07.711+01:00 ERROR 5026 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in my.package.controllers.I18nController required a bean of type 'my.package.services.GreetingService' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Qualifier("i18nService")
The following candidates were found but could not be injected:
- User-defined bean
- User-defined bean
- User-defined bean method 'primaryGreetingService' in 'GreetingServiceConfig'
- User-defined bean method 'propertyInjectedGreetingService' in 'GreetingServiceConfig'
- User-defined bean method 'setterInjectedGreetingService' in 'GreetingServiceConfig'
- User-defined bean
Action:
Consider revisiting the entries above or defining a bean of type 'my.package.services.GreetingService' in your configuration.
Process finished with exit code 1
На первый взгляд кажется, что я что-то напутал в определении или конфигурации своих bean-компонентов. Однако когда я возвращаю свой репозиторий обратно в состояние, в котором я использовал файл application.properties, как описано выше, все работает так, как ожидалось.
Я повторил шаги, чтобы максимально изолировать проблему.
Все, что я сделал, это:
- удалить application.properties
- создать application.yml
git status (переведено и упрощено):
On Branch master
Your Branch is in the same state as 'origin/master'.
Staged changes:
deleted: src/main/resources/application.properties
new file: src/main/resources/application.yml
Unstaged changes::
changed: src/main/resources/application.yml
src/main/resources/application.yml создается как новый файл, а затем имеет неиндексированные изменения, поскольку IDE подготовила новый файл при создании. Просто чтобы устранить любую путаницу. Хотя это не должно повлиять на результат.
Обновление 2
Как предложено в комментариях, я попытался добавить @ConfigurationProperties(prefix = "custom"), но все, что было сделано, это немного изменило ошибку:
Error creating bean with name 'i18nController' defined in file
[/path/target/classes/my/package/controllers/I18nController.class]:
Unsatisfied dependency expressed through constructor parameter 0:
No qualifying bean of type 'my.package.services.GreetingService' available:
expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations:
{@org.springframework.beans.factory.annotation.Qualifier("i18nService")}
Подробнее здесь: https://stackoverflow.com/questions/750 ... cation-yml
Мобильная версия