İyi günler, Spring 4.1.1.RELEASE kullanarak bir web uygulaması üzerinde çalışıyorum. Tüm Bahar yapılandırma ek açıklamalar yapılır ve tek bir şey dışında çalışıyor edilir: Ben bu hatları ile projede bir config.properties dosyası var@Value -> 'java.lang.String' türünün değerini 'java.lang.Integer' türüne dönüştüremedi '
-
cases.caseList.filter=test cases.caseList.numberOfCasesPerPage=50
Bir yapılandırma sınıf var
@Configuration @ComponentScan(basePackageClasses={CaseConfig.class}) @PropertySource(value = "classpath:config.properties") public class CasesModuleTestContextConfig { ... }
Ve başka sınıf
@Component public class HttpRequestParamsToPaginationParams extends AbstractConverter<Map<String, String>, PaginationParams> { @Value("${cases.caseList.filter}") private String filter; @Value("${cases.caseList.numberOfCasesPerPage}") private Integer count; ... }
Özellik 'filtresinin değeri, özellik kaynağından başarılı bir şekilde enjekte edilir. Ama tesisin sayacın üzerindeki istisna alıyorum:
13:58:45.274 [main] WARN o.s.c.s.GenericApplicationContext - Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cz.pokus.core.test.config.ConversionServiceTestConfig': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.util.List cz.pokus.core.test.config.ConversionServiceTestConfig.converterList; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'httpRequestParamsToPaginationParams': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.lang.Integer cz.pokus.core.cases.converter.HttpRequestParamsToPaginationParams.count; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "${cases.caseList.numberOfCasesPerPage}"
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.1.1.RELEASE.jar:4.1.1.RELEASE]
...
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "${cases.caseList.numberOfCasesPerPage}"
...
Caused by: java.lang.NumberFormatException: For input string: "${cases.caseList.numberOfCasesPerPage}"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_20]
at java.lang.Integer.parseInt(Integer.java:569) ~[na:1.8.0_20]
at java.lang.Integer.valueOf(Integer.java:766) ~[na:1.8.0_20]
...
Ben dize tesisin sayacın türünü değiştirmek zaman çalışmaya başlamak:
@Value("${cases.caseList.numberOfCasesPerPage}")
private String count;
Spring dize dönüştürmek mümkün olduğuna inanıyoruz Özellik kaynağını @Value kullanarak bir Tamsayı özelliğine enjekte ederken Tamsayı'ya. İnsanların şikayet etmeden kullandıkları örnekleri buldum. Benim için neden çalışmadığına dair bir fikrin var mı?
Çok önceden teşekkürler.
Çalışıyor mu, yoksa hata yapmadan mı başlıyor? Bu durumda değerin kelimenin tam anlamıyla $ $ [cases.caseList.numberOfCasesPerPage} 'olmasını bekliyorum. 'PropertySourcesPlaceHolderConfigurer'' 'public static' bean olarak kaydettiğinizden emin olun. –