본문 바로가기
공부/SpringBoot

[블로그] 글쓰기

by yeaseul912 2022. 3. 6.
728x90

1. BoardController

2. board/saveForm

     bootstrap/inputs : https://www.w3schools.com/bootstrap4/bootstrap_forms_inputs.asp

      inputs/summernote : https://summernote.org/getting-started/#without-bootstrap

3. 글목록 보기

Page type으로 받는것과 List type으로 받는것의 차이점은?

List type은 content정보만 가지고 오고, Page type은 content정보와 페이징 정보까지 가지고 온다. 

  - content[{ }] : 가지고 오려고 하는 내용이 뭔지 (List type이 가지고 오는 것)

  - pageable {} : 페이지 정보 (totalPages, last(마지막페이지인지), first(첫페이지인지), size(몇개씩보여주는지) 등등)

  - sort {} : 정렬이 됐는지

4. 페이징하기

5. 글 상세보기

6. 글 삭제하기

7. 글 수정하기

 

오늘의 에러 local class incompatible

The serializable class PrincipalDetail does not declare a static final serialVersionUID field of type long 

local class incompatible: stream classdesc serialVersionUID = -1576902693999459383, local class serialVersionUID = -4570294104202477037

"글쓰기" 기능을 만들면서 코드를 수정하였더니 "PrincipalDetail" class에서 다음과 같은 에러가 나왔다.

찾아보니까 Principal Detail이 implements한 UserDetails class가 Serializable을 가지고 있는데, 

Serializable은 객체의 직렬화-역직렬화를 해주는데 이때 키 값이 필요하다.

키 값은 serialVersionUID 변수의 값을 지정하여 주거나 값이 없다면 JVM이 클래스 구조 정보를 토대로 해싱값을 만든다고 한다.

 

나같은 경우에 serialVersionUID값이 없었고, 그 와중에 글쓰기 기능을 구현하면서 class 파일들을 수정하여 클래스 구조들이 바뀌면서 JVM이 만든 해싱값이 변경되어서 serialVersionUID 가 달라서 error가 생겼던것 같다.

 

일단 에러를 무시하여 주는 @SuppressWarnings("serial") 어노테이션을 사용하여 실행을 하였고,

몇분 뒤에 어노테이션을 지우고 다시 실행하니까 정상적으로 작동하였다. JVM이 변경된 클래스 구조를 안정적으로(?) 잡은것 같았다.

 

참고 : https://hevton.tistory.com/164

 

[local class incompatible 에러] 자바 직렬화 - 역직렬화

자바에서 serializable 을 통해 객체를 직렬화하고 역직렬화하여 파일형식으로 저장할 수 있다. 이렇게 쉬운 방법을 제공하기 때문인지 관리에 대해서 까다롭게 주의할 점이 있다. 아래 클래스가

hevton.tistory.com

 

반응형

'공부 > SpringBoot' 카테고리의 다른 글

[블로그] 댓글  (0) 2022.03.08
[블로그] 회원수정 및 카카오로그인  (0) 2022.03.06
[블로그] 스프링시큐리티  (0) 2022.02.27
[블로그] 서비스와 트랜잭션  (0) 2022.02.26
[블로그] 오늘의 에러  (0) 2022.02.21

댓글