๐Ÿ’ป ์—๋Ÿฌ ๋ฉ”์‹œ์ง€


com.fasterxml.jackson.databind.exc.InvalidDefinitionException : No serializer found for class com.xxxxxxx.xxxxx.dto.user.ProfileDto and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.xxxxxxx.xxxxx.api.response.xxxxxxxxxx["ProfileDto"])

 

 

 

 

 

๐Ÿ”Ž ์›์ธ


 Jackson์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค.

 

 Jackson์€ Java Object๋ฅผ JSON ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

 Spring์—๋Š” Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‚ด์žฅ๋˜์–ด์žˆ๋‹ค. ๊ทธ๋ž˜์„œ Controller์— ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ, @RequestBody๊ฐ€ ๋ถ™์€ JSON ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.

 

 ๊ฐ์ฑ„ ๋‚ด์˜ ํ•„๋“œ์˜ ์ ‘๊ทผ์ž๊ฐ€ public์ด์–ด์•ผ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ private๋ผ๋ฉด, getter๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

 

 private ํ•„๋“œ์— getter๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๊ณ , ์ง๋ ฌํ™”ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด FAIL_ON_EMPTY_BEANS ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

 

 

๋ฌธ์ œ์˜ ์ฝ”๋“œ

 

Getter๊ฐ€ ์—†๋‹ค.

@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ProfileDto {
    private String nickname;
    private byte[] image;
    private List<String> skills  = new ArrayList<>();

    ...
}

 

 

 

 

 

 

๐Ÿ’ก ํ•ด๊ฒฐ


๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ๋ถ€๋ถ„์ธ ProfileDto ํด๋ž˜์Šค์— @Getter ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค.

 

 

 

์ˆ˜์ •ํ•œ ์ฝ”๋“œ

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ProfileDto {
    private String nickname;
    private byte[] image;
    private List<String> skills  = new ArrayList<>();

    ...
}

 

 

 

 

๐Ÿ“– ์ฐธ๊ณ 


https://velog.io/@devyjkwon/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%98%A4%EB%A5%98com.fasterxml.jackson.databind.exc.InvalidDefinitionException-No-serializer-found-for-class

giraffe_