Spring @Value가 속성 파일의 값으로 확인되지 않습니다.
전에 다른 프로젝트에서 작업한 적이 있는데, 같은 작업을 다시 하고 있을 뿐인데 무슨 이유에서인지 작동이 안 돼요.더 스프링@Value
속성 파일에서 읽는 것이 아니라 문자 그대로 값을 가져갑니다.
AppConfig.java
@Component
public class AppConfig
{
@Value("${key.value1}")
private String value;
public String getValue()
{
return value;
}
}
application Context.xml:
<context:component-scan
base-package="com.test.config" />
<context:annotation-config />
<bean id="appConfigProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:appconfig.properties" />
</bean>
appconfig.properties
key.value1=test value 1
컨트롤러에 다음 기능이 있습니다.
@Autowired
private AppConfig appConfig;
응용 프로그램은 정상적으로 시작되지만, 실행되면
appConfig.getValue()
그것은 되돌아온다
${key.value1}
속성 파일 내의 값으로 해결되지 않습니다.
생각?
나도 이유를 찾았다.@value
동작하지 않았습니다.@value
필요.PropertySourcesPlaceholderConfigurer
대신PropertyPlaceholderConfigurer
같은 변경을 실시해, 효과가 있었습니다만, 봄 4.0.3 릴리스를 사용하고 있습니다.설정 파일의 다음 코드를 사용하여 설정했습니다.
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
이 문제는 application Context.xml과 spring-servlet.xml의 문제로 인해 발생합니다.이것은 콩 사이의 범위 설정 문제입니다.
pedjaradenkovic은 친절하게도 기존 리소스를 가리켜 주었다: @Controller 클래스의 Spring @Value 주석이 내부 속성 파일에 대한 값으로 평가되지 않으며 Spring 3.0.5는 속성에서 @Value 주석을 평가하지 않습니다.
저 같은 경우에는 교정기가 빠져있었어요.나는 가지고 있었다@Value("foo.bar") String value
올바른 형식 대신@Value("${foo.bar}") String value
Sprig-boot 사용자의 경우 PropertyPlaceholderConfigr 및 새로운 PropertySourcesPlaceholderConfigr이 모두 Spring 3.1에 추가되었으므로 속성 파일에 쉽게 액세스할 수 있습니다.그냥 주사하다
주의: 자산이 다음과 같이 되어서는 안 됩니다.Static
@Value("${key.value1}")
private String value;
저는 스프링 부츠를 사용하고 있었습니다만, 제 경우 버전 업그레이드는1.4.0.RELEASE
로.1.5.6.RELEASE
이 문제를 해결했습니다.
@값 해결에 하루에서 반나절이 걸릴 수 있습니다. ; )
제가 한 일은 다음과 같습니다.
속성 또는 YAML 파일에 속성 추가
메인 클래스에 @Enable로 주석이 붙어 있는지 확인합니다.자동 설정 또는 @Spring Boot Application
@Value를 사용할 수 있는 AppConfig 생성
@Value("${PROPERTY}") 개인 문자열 URL;
클래스 레벨에서 @Configuration을 사용하여 이 AppConfig에 주석 달기
- 지금까지 셋업 완료.어디서나 AppConfig 자동 접속으로 원하는 장소에서 셋업 가능
예: SOME SERVICE @Autowired private AppConfig에서는 appConfig.getUrl()을 호출하여 속성 파일에서 속성 URL 값을 가져옵니다.
주의: 서비스 컨스트럭터에서 가치를 얻으려고 하지 마십시오.그것은 무효가 됩니다.
저 같은 경우에는 롬복 @AllArgsConstructor를 먹었는데, 그 물건도 가져갔어요.이 주석을 삭제하면 문제가 해결되었습니다.
pedjaradenkovic의 코멘트를 읽어보세요.
하지 않는 는, 「 」가 「 」입니다.@Value
에 「」가 합니다.PropertySourcesPlaceholderConfigurer
PropertyPlaceholderConfigurer
.
는 잘못 되었다.dependency
했습니다.서서수수 수다다다다다lombok
가 "import org.springframework.beans.factory.annotation.Value;"
되었습니다.
Intelij IDEA에서 자원 폴더가 "자원 루트"로 표시되지 않았기 때문입니다.리소스 디렉토리 -> "디렉토리를 마킹" -> "리소스 루트" 를 오른쪽 클릭합니다.
Property Placeholder Configurer 콩 인스턴스가 2개(대규모 스프링 구성) 설정되어 있었기 때문입니다.그리고 한 번 셋업되면 다른 하나는 전혀 쓸모가 없습니다.그것은 아마도 매우 당연한 일이지만, 나에게는 그렇지 않았다.PropertyPlaceholderConfigr의 두 번째 인스턴스가 생성 시(이미 다른 인스턴스가 있는 경우) 예외를 발생시키지 않는 이유를 이해할 수 없습니다.두 번째 인스턴스를 묵살하는 대신이렇게 의미있는 오류가 발생할 수 있습니다.
그것이 누구에게나 도움이 되기를 바랍니다. :)
프로젝트 루트 폴더를 이동했기 때문입니다.합니다..settings
,.mvn
,target
,.project
이클립스로 프로젝트를 재수입하는 게 제겐 효과가 있었습니다.
저 같은 경우에는 이 값이 어디에 사용되는지 신경 안 썼어요!컨스트럭터에서 사용하는 경우 구성 요소의 로드 순서에 주의하십시오!
언급URL : https://stackoverflow.com/questions/15937592/spring-value-is-not-resolving-to-value-from-property-file
'programing' 카테고리의 다른 글
각도 설정JS가 정말 jQuery가 필요한가요? (0) | 2023.04.02 |
---|---|
woocommerce를 사용하여 사용자 지정 '카트에 추가' 생성 (0) | 2023.04.02 |
자동 시퀀스를 사용하여 쉼표로 구분된 값으로 오라클의 함수를 분할합니다. (0) | 2023.04.02 |
jQuery AJAX/POST가 데이터를 PHP로 전송하지 않음 (0) | 2023.04.02 |
워드프레스(Woocommerce 확장자) - 프로그래밍 방식으로 새 순서 만들기 (0) | 2023.04.02 |