2017-09-24 2 views
0

스프링 부트 환경에서 clamav 바이러스 스캐너를 설정하려고합니다. 따라서 application.properties 파일과 함께 my resources 디렉토리에있는 특성 파일 clamav.properties에 호스트와 포트를 설정하려고합니다.스프링 부트 구성 등록 정보가 설정되지 않음

clamav.host=localhost 
clamav.port=3310 
clamav.timeout=1000 

나는이 수업이 있습니다 : 그것은 다음과 같습니다 그것은 연결 아니에요 및 로그에 나는이 얻을

@ConfigurationProperties("clamav.properties") 
public class ClamAvClient { 

static final Logger logger = LoggerFactory.getLogger(ClamAvClient.class); 

@Value("${clamav.host}") 
private String clamHost; 

@Value("${clamav.port}") 
private int clamPort; 

@Value("${clamav.timeout}") 
private int clamTimeout; 

public boolean ping() throws IOException { 
    logger.debug("Host:"+clamHost+" Port:"+clamPort); 
    blah..... 
} 

private static byte[] asBytes(String s) { 
    return s.getBytes(StandardCharsets.US_ASCII); 
} 

public String getClamHost() { 
    return clamHost; 
} 

public void setClamHost(String clamHost) { 
    this.clamHost = clamHost; 
} 

public int getClamPort() { 
    return clamPort; 
} 

public void setClamPort(int clamPort) { 
    this.clamPort = clamPort; 
} 

public int getClamTimeout() { 
    return clamTimeout; 
} 

public void setClamTimeout(int clamTimeout) { 
    this.clamTimeout = clamTimeout; 
} 

} 

:

2017-09-23 20:39:45.947 DEBUG 28857 --- [http-nio-8080-exec-2] xxx.ClamAvClient : Host:null Port:0 

가 그래서 그 값이 명확하게 설정되지 않습니다 . 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내 이클립스에서 말하는 spring-boot-starter-web의 관리 버전을 사용하고 있습니다. 1.4.3-RELEASE

어떤 아이디어?

+0

그리고 어떻게 핑을 사용하고 있습니까? @ Autowired 버전이나'새로운 ClamAvClient() .ping()'과 같은 것을 사용하고 있습니까? – varren

+0

DOH !!! 새 ClamAvClient()를 사용하고 있습니다. 아마도 문제 일 것입니다. – mmaceachran

+0

예,'applicationContext.getBean();'또는'@ Autowired' 어노테이션으로 autowired 버전을 사용해야합니다. 제공된 코드를 테스트하고 올바르게 작동합니다. – varren

답변

1

구성 프로세서를 사용하여 클래스 그룹에 속성 그룹을 매핑하려면 @ConfigurationProperties을 사용하십시오.

@Value 안에 @ConfigurationProperties을 사용하면 올바르게 보이지 않습니다.

당신이 클래스에 속성을 매핑 할 필요가 모든

은 다음과 같습니다

@Configuration 
@ConfigurationProperties(prefix="clamav") 
public class ClamAvClient { 

static final Logger logger = LoggerFactory.getLogger(ClamAvClient.class); 


private String host; 


private int port; 


private int timeout; 

//getters and setters 

} 

prefix ="clamav"이 속성에 접두사가 파일을 일치합니다.

host,port,timeout은 클래스의 속성과 일치합니다.

+0

clamav.properties의 속성을 application.properties에 추가해야했지만 작동했습니다. – mmaceachran

+0

당신은 여전히 ​​외부 속성을로드하기 위해 @PropertySource를 사용하여 그것을 분리 할 수 ​​있습니다. – Barath

+1

감사의 친구, 지금까지이 문제를 보지 못했지만 값을 읽는 새로운 접근법을 가졌습니다 :) GB –

관련 문제