2016-06-16 4 views
2

@PropertySourceEnvironment 변수를 사용하여 @Configuration Java 클래스의 config.proprties 파일 데이터를로드하려고합니다..proprties 파일의 백 슬래시 ()가 Spring의 'Environment'변수에 의해 무시됩니다.

예 : http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/PropertySource.html 문제이고, I는 같은 값을 갖는 속성을 가지고

 String server= env.getProprty("serverName"); 
    System.out.print(server); 

값 "abcxyz"로 인쇄되어, I이 방법을 이용하여이 특성을 읽어

 serverName = abc\xyz 

을 .

는 점에 유의하시기 바랍니다, 나는 같은 이중 백 슬래시를 사용하여

 serverName = abc\\xyz 

을 시도했지만 여전히 단순히 값 문자열에서 \를 무시한다. 또한 백 슬래시 대신 슬래시를 사용할 수 없습니다.

문제를 해결할 수 있습니까? 미리 감사드립니다 !!

+0

Windows는 종종 POSIX 호환 가능하므로'/'- 보통 슬래시가 사용합니다. –

+1

등록 정보 파일에서 \를 이스케이프해야합니다 (\ https://docs.oracle.com/cd/E23095_01/Platform.93/ATGProgGuide/html/s0204propertiesfileformat01.html 참조). 인쇄되지 않는다는 사실은 거기에 없다는 것을 의미 할 필요는 없다. 인쇄를 통해 다시 이스케이프 문자로 해석 될 수있다. 그리고'\ x'는 아무것도 아닙니다 (afaik) 그것은 그것을 제거 할 것입니다. –

+0

더 이상 d 값을 처리하는 동안 예외가 발생하므로 \을 확실히 읽지 않습니다 – Sanjeev

답변

0

이것은 실제 못생긴 해킹이지만 "\ u005c"인 기호 "\"에 대해 유니 코드 이스케이프 시퀀스를 사용해 볼 수 있으므로 문자열 값 "abc \ xyz"대신 "abc \ u005cxyz"를 사용하십시오. 그런 다음 다시 "abc \ xyz"로 변환 한 다음 "\"를 이스케이프 기호의 시작으로 간주합니다. 따라서 처음 작동하지 않으면 "abc \\ xyz"를 "abc \ u005c \ u005cxyz"로 바꿀 수 있습니다. 첫 번째 또는 두 번째 옵션이 효과가 있는지 확인하십시오. 그러나 사실, 나는 단순한 도피 "\\"가 당신의 문제를 해결하지 못함에 놀랐다. 또한 모두 실패하면 "abc \\\\ xyz"를 시도하십시오 - 이것은 이중 이스 케이 핑입니다.

+0

그들 중 누구도 일하지 않았습니다 :( – Sanjeev

0

스프링 3.1.4-RELEASE를 사용했으며 속성 파일의 값에 '\\'가 포함되어 있으면 작동했습니다. 마찬가지로 serverName = abc \\ xyz

package com.test; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration;  
import org.springframework.context.annotation.PropertySource; 
import org.springframework.core.env.Environment;  

@Configuration 
@PropertySource("app.properties") 
public class AppConfig {  

    @Autowired 
    Environment env; 

    @Bean 
    public String myBean() {  
     System.out.println(env.getProperty("serverName")); 
     return new String(env.getProperty("serverName")); 
    } 
}