2016-10-02 2 views
2

스프링 부트로 코딩하고 있습니다. 나는 성공없이 다른 패키지에서 properties.properties의 가치를 얻으려고했다. 클라쎄 ClassUtils.java 예를 들어, testValue의 값이 내 프로젝트스프링 부트 응용 프로그램에서 속성 값을 얻을 수 없습니다.

enter image description here

입니다

항상 널이 내 코드입니다 : 이것은 내 두 번째 클래스는

package com.plugins.controller; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.RestController; 

import com.plugins.domain.ClassUtils; 

@RestController 
public class SearchContactController { 
    @Value("${environnement.test}") 
    String testValue; 

    @Value("${environnement.url}") 
    String urlValue; 

    @RequestMapping(value = "/test") 
    public String pingRequest() { 
     System.out.println("value ===> " + testValue + " /// " + urlValue); 

     return "test !" + ClassUtils.getTestValue(); 
    } 

} 

입니다

, 어디에 testValue 변수의 값을 얻을 수 없다 :

package com.plugins.domain; 

import org.springframework.beans.factory.annotation.Value; 
import org.springframework.stereotype.Component; 

@Component 
public class ClassUtils { 

    @Value("${environnement.test}") 
    static String testValue; 


    public static String getTestValue(){ 
     return "The return "+testValue;  
    } 
} 

이 내 springApp.java입니다

package com.plugins; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class SpringBootVideApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(SpringBootVideApplication.class, args); 
    } 
} 
+0

어느 클래스 다른 클래스의 메소드를 사용하여 클래스에 @Autowired 추가 기능에 의해이 문제를'ConfigurationProperties' @, 그래서 둘 다 얻을 것입니다 해결 아마 당신이 찾고있는 "느슨한 바인딩". 별도의'@ConfigurationProperties' 클래스를 생성하여 정보를 저장하고 삽입하십시오. – chrylis

+0

BTW, 당신은 반복적으로 속성 이름에'environment'를 잘못 입력했습니다. 기술적 문제는 아니지만 그것을 원인으로 간주하기 위해 지적하고 싶습니다. – Bloodysock

답변

1

응용 프로그램에서, ({ "com.plugins"}) @ComponentScan 사용

application.properties

myapp.url="xxxxxx" 
에 정의 된 속성에 액세스하려면

클래스 내

@Value("${myapp.url}") 
private String testValue; 

하지만 정적 변수 일 수는 없습니다. 정적 변수 인 경우 setter 메서드를 정의하여 이와 같은 해킹을 수행합니다.

private static String testValue;

@Value("${myapp.url}") 
public void testValue(String value) { 
      testValue = value; 
} 
+0

나는 성공하지 않고 당신의 솔루션을 시험해 본다. 나는 다른 클래스에서 null 값을 얻는다. 'ClassUtils.java' –

0

나는이 코드 조각

// Class: SearchContactController.java 
@Autowired 
    ClassUtils cd; 

    @RequestMapping(value = "/ping") 
    public String pingRequest() { 
     return "Ping OK !" + cd.getTestValue(); 
    } 
관련 문제