2016-08-06 5 views
0

바인딩 REST 변수 소비 : 이것처럼, https://spring.io/guides/gs/consuming-rest/ 그것은 JSON 개체를 소모됩니다 :SpringBoot 나는이 자습서 다음입니다

{ 
    type: "success", 
    value: { 
     id: 10, 
     quote: "Really loving Spring Boot, makes stand alone Spring apps easy." 
    } 
} 

나는 1 개 개의 질문이 있습니다. Value.java에서 우리는 두 가지 변수가 있습니다

private Long id; 
    private String quote; 

내 질문은 봄이 JSON의 id 속성에 변수 ID를 바인딩 알 수 있습니까 방법이며 어떻게 JSON에서 인용 속성에 인용 변수를 바인딩 알 수 있습니까 . 나는 Spring에서 자동으로 변수의 데이터 유형을 자동으로 결정한 다음 바인딩을 수행한다는 두 가지 생각을 시도했지만 차이는 발생하지 않았습니다. 변수 이름이 속성과 같으면 바인딩이 어떻게되는지 생각해 보았습니다. 그래서 변수 이름을 변경하려고 시도 했는데도 차이가 없었습니다. 그리고 나는 그것이 어쩌면입니다 생각은 다음과 같이되었다 있도록 변수의 순서는 그래서 변수를 전환 :

private String quote; 
    private String id; 

내가 그 목적에 모두 문자열했다. 하지만 여전히 id 속성은 id 변수에 바인딩되고 quote 속성은 변수를 인용합니다.

누군가 Spring이 어떤 속성에 어떤 속성을 바인드할지 결정하는 방법을 알려줄 수 있습니까?

+0

getter/setter 메서드 중 첫 번째 속성 이름 다음으로 속성 이름 옆에 있어야합니다. 이름을 변경 했는데도 여전히 값이있는 경우 프로젝트 전체를 다시 작성하지 않은 것일 수 있습니다. –

+0

인용구의 사용법을 모두 quote1과 id로 id1로 변경 한 다음 다시 빌드를 작성한 다음 jar 파일을 실행했지만 여전히 동일한 출력을 얻었습니다 – StephCurry3093

답변

1

이후 Jackson은 기본적으로 대응하는 getters/setters를 사용하여 필드 이름을 변경했지만 getter/setter 이름은 변경하지 않았습니다.

+0

그래서 차이를 만들지 않은 설정자 이름을 변경했습니다. 그런 다음 게터를 변경하여 차이를 만들었습니다. 그런 다음 null을 반환했습니다. 왜 그런지 알아? 게터 이름을 바꾸면 왜 효과가 있습니까? – StephCurry3093

+0

잭슨을 많이 사용하지 않았기 때문에 잘 모르겠습니다. 이 라이브러리 설명서 나 아마도이 질문에 답하기에 좋은 enogh인지는 확실하지 않습니다. http://www.baeldung.com/jackson-field-serializable-deserializable-or-not (de) 직렬화는 getters 이름에 달려있다 (내가 아는 한 Jackson의 기본 동작을 변경할 수 있음). – mklimasz

관련 문제