SpringBoot 에서 yml 파일 설정 을 읽 고 value 를 가 져 오지 못 하 는 경우

4069 단어 SpringBoot
SpringBoot 는 yml 파일 의 값 을 읽 습 니 다. 가장 간단 한 사용 방법:
#yml  
system:
    url:127.0.0.1:8090
    //         ,            
    @Value("${system.url}")
    private String url;

    void a(){
    String b = url+"/img";
}

value 가 가 져 올 수 없 는 상황 이 발생 하면 pom 프로젝트 가 의존 하 는 지 확인 하 십시오.
http://blog.51cto.com/jtech/2114686
1. spring 구성 요소 재 작성 구조 방법 은 구조 방법 에서 @ value 를 null 로 참조 합 니 다.
스프링 실례 화 순 서 는 먼저 구조 방법 을 집행 하고 구성원 변 수 를 주입 하기 때문에 순 서 는 먼저 구조 방법 을 집행 한 다음 에 구성원 변 수 를 주입 한다. 따라서 ing 실례 화 순 취 값 은 null 해결 방법 은 다음 과 같다. 상수 류 를 하나 더 쓰 고 상수 류 에서 @ value 를 인용 한 다음 에 구조 방법 에서 상수 류 의 변 수 를 인용 하면 된다.
둘째, spring 구성 요 소 를 호출 할 때 @ Autowired 가 아 닌 new 대상 을 사용 합 니 다.
3. final 또는 static 로 구성원 변 수 를 수식 합 니 다.
4. spring mvc 에서 @ value 를 null 로 참조 합 니 다.
spring mvc 는 spring 의 하위 용기 입 니 다. 두 프로필 에서 모두 프로필 을 가 져 와 야 합 니 다.
 
아래https://blog.csdn.net/ClementAD/article/details/51970962
 
spring boot 에서 설정 파일 (application. yml) 의 다양한 유형의 속성 값 을 간단하게 읽 습 니 다. 1. 도입 의존:
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        

 
2. 프로필 (application. yml) 에서 각 속성의 값 을 설정 합 니 다.
myProps: #        

  simpleProp: simplePropValue

  arrayProps: 1,2,3,4,5

  listProp1:

    - name: abc

      value: abcValue

    - name: efg

      value: efgValue

  listProp2:

    - config2Value1

    - config2Vavlue2

  mapProps:

    key1: value1

    key2: value2

3. 설정 정 보 를 받 기 위해 bean 을 만 듭 니 다:
@Component
@ConfigurationProperties(prefix="myProps") //  application.yml  myProps     
public class MyProps {
	private String simpleProp;
	private String[] arrayProps;
	private List> listProp1 = new ArrayList<>(); //  prop1      
	private List listProp2 = new ArrayList<>(); //  prop2      
	private Map mapProps = new HashMap<>(); //  prop1      
	
	public String getSimpleProp() {
		return simpleProp;
	}
	
	//String       setter      ;maps, collections,   arrays    
	public void setSimpleProp(String simpleProp) {
		this.simpleProp = simpleProp;
	}
	
	public List> getListProp1() {
		return listProp1;
	}
	public List getListProp2() {
		return listProp2;
	}
 
	public String[] getArrayProps() {
		return arrayProps;
	}
 
	public void setArrayProps(String[] arrayProps) {
		this.arrayProps = arrayProps;
	}
 
	public Map getMapProps() {
		return mapProps;
	}
 
	public void setMapProps(Map mapProps) {
		this.mapProps = mapProps;
	}
}

 
시작 하면 이 bean 의 속성 은 설정 값 을 자동 으로 받 습 니 다. 
4. 유닛 테스트 사례:
​
@Autowired
private MyProps myProps; 
	
@Test
public void propsTest() throws JsonProcessingException {
	System.out.println("simpleProp: " + myProps.getSimpleProp());
	System.out.println("arrayProps: " + objectMapper.writeValueAsString(myProps.getArrayProps()));
	System.out.println("listProp1: " + objectMapper.writeValueAsString(myProps.getListProp1()));
	System.out.println("listProp2: " + objectMapper.writeValueAsString(myProps.getListProp2()));
	System.out.println("mapProps: " + objectMapper.writeValueAsString(myProps.getMapProps()));
	}

​

테스트 결과:
simpleProp: simplePropValue
arrayProps: ["1","2","3","4","5"]
listProp1: [{"name":"abc","value":"abcValue"},{"name":"efg","value":"efgValue"}]
listProp2: ["config2Value1","config2Vavlue2"]
mapProps: {"key1":"value1","key2":"value2"}

소스 코드 참조:https://github.com/xujijun/my-spring-boot

좋은 웹페이지 즐겨찾기