๐ป ์๋ฌ ๋ฉ์์ง
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<>();
...
}