Я новичок в бэкэнд-разработке, и мне тяжело отследить эту проблему. Другие решения этой проблемы включают синтаксические ошибки в самом файле свойств, но я думаю, что мой в порядке.
Моя команда унаследовала приложение Spring Boot, и при настройке и запуске я единственный, чье приложение не удалось запустить. Может ли быть что-то в моей настройке, что вызывает эту проблему привязки?
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to bind properties under 'abc.def-port' to int:
Property: abc.defport
Value: ###DEF_PORT###
Origin: "abc.defPort" from property source "class path resource [ def.properties]"
Reason: failed to convert java.lang.String to int
Action:
Update your application's configuration
, , THREAD_ID=main, STACK_TRACE=]
Вот мой Application.java файл, который указывает на этот файл конфигурации:
@SpringBootApplication
@PropertySource({ "classpath:application.properties",
"classpath:def.properties" })
@EnableMonitoring
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class
})
@EnableDEF
public class Application extends SpringBootServletInitializer
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder
configure(SpringApplicationBuilder application)
{
return application.sources(Application.class);
}
}
А вот мой def.properties файл:
#abc.defHost=my-content-def-test.company.com
#abc.defPort=443
abc.defHost=###DEF_HOST###
abc.defPort=###DEF_PORT###
Свойства хоста и порта определены в другом файле, например так:
DEF_HOST=my-content-def-test.company.com
DEF_PORT=443
Что здесь не так, что только мое приложение не будет работать локально? Спасибо за любые полезные советы.
********* ============== ОБНОВЛЕНИЕ ========== ************ ********* РАБОТАЕТ НИЖЕ РЕШЕНИЕ ***********************
Профиль сборки в моем pom.xml использует Windows, и я единственный на Mac:
<profile>
<id>dev</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<hostname>${env.COMPUTERNAME}</hostname>
<toggleDevelopmentFiltering>true</toggleDevelopmentFiltering>
</properties>
<build>
<filters>
<filter>${dev-resources.dir}/master_file.DVLP</filter>
<filter>${dev-resources.dir}/secure_file.DVLP</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimiter>###</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Должен ли я просто создать новый профиль, подобный этому:
<profile>
<id>dev-mac</id>
<activation>
<os>
<family>mac</family>
</os>
</activation>
<properties>
<hostname>${env.COMPUTERNAME}</hostname>
<toggleDevelopmentFiltering>true</toggleDevelopmentFiltering>
</properties>
<build>
<filters>
<filter>${dev-resources.dir}/master_file.DVLP</filter>
<filter>${dev-resources.dir}/secure_file.DVLP</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimiter>###</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</build>
</profile>