복붙노트

[SPRING] Spring Boot로 객체 세트를 반환하는 방법?

SPRING

Spring Boot로 객체 세트를 반환하는 방법?

저는 Spring Boot에 대한 교훈을 얻었으며 완벽하게 작동합니다. 하지만 객체 집합을 반환하려는 경우 어떻게해야합니까? 나는이 일을 시도했지만 작동하지 않습니다. 어떻게 올바르게 할 수 있습니까?

하나의 객체 (작동) :

@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue = "World") String name) {
    return new Greeting(counter.incrementAndGet(),
            String.format(template, name));
}

많은 객체 (작동하지 않음) :

@RequestMapping(value = "/greeting", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody List<Greeting> greeting() {
    Greeting greeting1 = new Greeting(1, "One");
    Greeting greeting2 = new Greeting(2, "Two");
    List<Greeting> list = new ArrayList<>();
    list.add(greeting1);
    list.add(greeting2);
    return list;
}

해결법

  1. ==============================

    1.원래 방법을 새로 작성한 방법과 비교하면 (목록과 함께) 몇 가지 차이점을 알 수 있습니다.

    원래 방법을 새로 작성한 방법과 비교하면 (목록과 함께) 몇 가지 차이점을 알 수 있습니다.

    먼저 @RequestMapping 주석 내에서 속성을 사용하여 소비하고 생산합니다. 여기서 JSON이어야하는 응답을 생성하기 때문에 여기서는 문제가 발생하지 않습니다. 그러나 당신은 아무것도 소비하지 않으므로 소모품을 버려야합니다.

    @RequestMapping(value = "/greeting", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody
    List<Greeting> greeting() {
        Greeting greeting1 = new Greeting(1, "One");
        Greeting greeting2 = new Greeting(2, "Two");
        List<Greeting> list = new ArrayList<>();
        list.add(greeting1);
        list.add(greeting2);
        return list;
    }
    

    사이드 노트로 @ResponseBody 주석을 사용했음을 알 수 있습니다. 여기에 넣으면 아무런 오류는 발생하지 않지만, 스프링 튜토리얼을 올바르게 따라 갔다면 @RestController로 컨트롤러에 주석을 달았어야하고, 그렇게함으로써 스프링에게 응답 바디를 사용할 것이라고 이미 말했기 때문에 필요하지는 않다. .

  2. ==============================

    2.우리가 CarDetails Pojo의 목록을 가지고 있다고 가정 해 봅시다.

    우리가 CarDetails Pojo의 목록을 가지고 있다고 가정 해 봅시다.

    @RestController
    public class CarDetailController {
      @GetMapping("/viewAllCarDetailList")
        public List<CarDetail> retrieveAllCarDetails() {
            List<CarDetail> contacts = new ArrayList<CarDetail>();
    
            CarDetail objt = new CarDetail();
            objt.setCarModel("hyundai");
            objt.setSubModel("I10");
            CarDetail objt2 = new CarDetail();
            objt2.setCarModel("hyundai");
            objt2.setSubModel("I20");        
            contacts.add(objt);
            contacts.add(objt2);
            return contacts;
        }
    }
        public class CarDetails {
    
                private String carModel;
                private String subModel;
    // Will haave Setter getter and hash code equls method
    //and constructor
        }
    

    이 JSON이 출력됩니다 : -

    [
        {
            "carModel": "hyundai",
            "subModel": "I10"
        },
        {
            "carModel": "hyundai",
            "subModel": "I20"
        }
    ]
    

  3. ==============================

    3.여기에 내가 한 코드 스 니펫이 있습니다. 자신의 메소드에서 사용하지 않기 때문에 @RequestMapping 주석에서 "소비"를 제거하십시오.

    여기에 내가 한 코드 스 니펫이 있습니다. 자신의 메소드에서 사용하지 않기 때문에 @RequestMapping 주석에서 "소비"를 제거하십시오.

    @RestController
    public class GreetingsController
    {
        @RequestMapping(value = "greetings", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
        public @ResponseBody
        List<Greeting> greeting() {
            Greeting greeting1 = new Greeting(1, "One");
            Greeting greeting2 = new Greeting(2, "Two");
            List<Greeting> list = new ArrayList<>();
            list.add(greeting1);
            list.add(greeting2);
            return list;
        }
    
        public class Greeting
        {
            private String message;
            private int count;
    
            public Greeting(int count, String message)
            {
                this.count = count;
                this.message = message;
            }
    
            public String getMessage()
            {
                return message;
            }
    
            public void setMessage(String message)
            {
                this.message = message;
            }
        }
    }
    

  4. from https://stackoverflow.com/questions/41719142/how-to-return-a-set-of-objects-with-spring-boot by cc-by-sa and MIT license