Ошибка при создании компонента в приложении spring из-за @Value

#spring #spring-boot #spring-annotations

#spring #весенняя загрузка #spring-аннотации

Вопрос:

У меня есть класс, который является компонентом. В этом классе я пытаюсь заполнить свойство из application.properties. Я использую аннотацию @Value для того же. Когда я добавляю аннотацию @value, она выдает приведенную ниже ошибку. @Value в методе setter приводит к тому, что приложение выдает Injection of autowired dependencies failed; исключение.

Ниже приведен класс:

 @Component
public class AgsProbeConstants {

 public static final String COMPONENT_KEY = "component";
 public static final String API_KEY = "api";
 public static final String CALLEE_KEY = "callee";
 public static final String RESPONSE_CODE_KEY = "response_code";
 public static final String ERROR_RESPONSE_CODE_KEY = "error_reason_code";
 public static final String HOST_KEY = "host";
 public static final String METRIC_VALUE = "api.connect.http.count";

 public String pushUrl;

 public String getPushUrl() {
    return pushUrl;
 }

 @Value("${property.push.url}")
 public void setPushUrl(String url) {
    pushUrl = url;
 }
}
  

Это отлично работает и выбирает значение, когда я напрямую запускаю веб-приложение. Но когда я выполняю установку maven, это выдает ошибку. Ниже приведена ошибка:

 Error creating bean with name 'agsProbeConstants': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'property.push.url' in value "${property.push.url}"


Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'property.push.url' in value "${property.push.url}"


java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125) ~[spring-test-5.1.3.RELEASE.jar:5.1.3.RELEASE]
  

Ниже приведен файл Application.properties:

 server.port=8080
logging.level.org.springframework.web.servlet: DEBUG

spring.profiles.active=dev
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1

# = JPA / HIBERNATE
# ===============================
spring.jpa.properties.hibernate.generate_statistics=true
logging.level.org.hibernate.stat=debug
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.type=trace
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# Naming strategy
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
  

Ниже приведен Application-dev.properties

 #DB settings
spring.datasource.url=jdbc:db2://localhost:60020/DB
#spring.datasource.url=jdbc:db2://10.10.10.10:60020/DB        
use this for docker, if facing DNS resolution issue.
spring.datasource.driver-class-name=com.ibm.db2.jcc.DB2Driver
spring.datasource.username=root
spring.datasource.password=password

# Hibernate ddl auto (create, create-drop, update): with "create-drop" the database
# schema will be automatically created afresh for every start of application
spring.jpa.hibernate.ddl-auto=none
#schema setting for JPA
spring.jpa.properties.hibernate.default_schema=schema1
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DB2Dialect
# Show or not log for each sql query
spring.jpa.show-sql=true

# Scheduler properties
#======================
property.map={VROL:'http://localhost:8080/availability/statuszz', VDP:'http://localhost:8080/availability/statuszz'}
property.push.url=http://localhost:4242/write
  

Я не могу понять, в чем проблема. Почему сбой сборки maven.

Приветствуется любая помощь.

Комментарии:

1. Фрагменты, которые вы показываете, слишком малы, чтобы сказать что-то полезное. Загружен ли файл в каком-либо тесте? Как и где вы настраиваете property.push.url ? Причина

2. вы определили конфигурацию property.push.url в своем application.properties файле?

3. При запуске тестов сборки. @SpringBoot Основанный на тестировании создаст все компоненты, и для этого требуется надлежащая настройка. Создайте applicaiton.properties для тестирования, которое содержит всю необходимую конфигурацию.

4. Я добавил файл свойств

5. property.opera.push.url=http против @Value(«${property.push.url}»)