[SPRING] Spring이 자리 표시자를 해결할 수 없음
SPRINGSpring이 자리 표시자를 해결할 수 없음
나는 봄에 상당히 새롭다. 그래서 이것이 바보 같은 질문이라면 나를 용서해 라. 프로그램을 시작하려고하면 다음 오류가 발생합니다. java.lang.IllegalArgumentException : 문자열 값 [$ {appclient}]에서 'appclient'라는 자리 표시자를 확인할 수 없습니다. 다음 코드가 실행될 때 오류가 발생합니다.
package ca.virology.lib2.common.config.spring.properties;
import ca.virology.lib2.config.spring.PropertiesConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
@Configuration
@Import({PropertiesConfig.class})
@PropertySource("${appclient}")
public class AppClientProperties {
private static final Logger log = LoggerFactory.getLogger(AppClientProperties.class);
{
//this initializer block will execute when an instance of this class is created by Spring
log.info("Loading AppClientProperties");
}
@Value("${appclient.port:}")
private int appClientPort;
@Value("${appclient.host:}")
private String appClientHost;
public int getAppClientPort() {
return appClientPort;
}
public String getAppClientHost() {
return appClientHost;
}
}
호스트 및 포트에 대한 정보가있는 자원 폴더에 appclient.properties라는 등록 정보 파일이 있습니다. "$ {appclient}"가 정의 된 곳이 어디인지는 확실하지 않습니다. 어쩌면 그것은 정의되지도 않았고 그것이 문제를 일으키는 것일 수도 있습니다. "$ {appclient}"를 "{classpath : /appclient.properties}"와 같은 것으로 변경해야합니까, 아니면 다른 것을 놓치고 있습니까?
해결법
-
==============================
1.속성 파일을 올바르게 읽지 않습니다. propertySource는 매개 변수를 file : appclient.properties 또는 classpath : appclient.properties로 전달해야합니다. 주석을 다음으로 변경하십시오.
속성 파일을 올바르게 읽지 않습니다. propertySource는 매개 변수를 file : appclient.properties 또는 classpath : appclient.properties로 전달해야합니다. 주석을 다음으로 변경하십시오.
@PropertySource(value={"classpath:appclient.properties"})
그러나 PropertiesConfig 파일에 포함 된 내용을 알지 못합니다. 가져 오기도 마찬가지입니다. 이상적으로 @PropertySource 주석이 거기에 보관되어 있어야합니다.
-
==============================
2.Spring 3.1 이상을 사용한다면, 다음과 같은 것을 사용할 수있다.
Spring 3.1 이상을 사용한다면, 다음과 같은 것을 사용할 수있다.
@Configuration @PropertySource("classpath:foo.properties") public class PropertiesWithJavaConfig { @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } }
당신은 또한 같은 XML 구성으로 갈 수 ...
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <context:property-placeholder location="classpath:foo.properties" /> </beans>
이전 버전.
-
==============================
3.WAR 외부에서 관리해야하는 속성의 경우 :
WAR 외부에서 관리해야하는 속성의 경우 :
<context:property-placeholder location="file:///C:/application.yml"/>
예를 들어, application.yml 내부가 name과 id 인 경우
그럼 당신은 XML 봄 안에 런타임에 콩을 만들 수 있습니다
<bean id="id1" class="my.class.Item"> <property name="name" value="${name}"/> <property name="id" value="${id}"/> </bean>
-
==============================
4.구성 파일이 classpath와 다른 경로에 있으면 구성 파일 경로를 시스템 등록 정보로 추가 할 수 있습니다.
구성 파일이 classpath와 다른 경로에 있으면 구성 파일 경로를 시스템 등록 정보로 추가 할 수 있습니다.
java -Dapp.config.path=path_to_config_file -jar your.jar
from https://stackoverflow.com/questions/28307237/spring-could-not-resolve-placeholder by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Redis - application.properties 파일에서 구성을 읽습니다. (0) | 2019.03.14 |
---|---|
[SPRING] 스프링 보안 : 클라이언트 유형별 (브라우저 / 비 브라우저) CSRF 활성화 / 비활성화 (0) | 2019.03.14 |
[SPRING] Spring Async Uncaught Exception 핸들러 (0) | 2019.03.14 |
[SPRING] 봄에 상호 의존성 빈을 연결하는 방법? (0) | 2019.03.14 |
[SPRING] Spring의 BeanPostProcessor와 init / destroy 메소드의 차이점은 무엇입니까? (0) | 2019.03.13 |