목표는 완독 🫠
- 롬복(lombok) : 코드를 간소화해 주는 라이브러리로 필수 코드를 간편하게 작성할 수 있다
- 로깅(logging) : 프로그램의 수행 과정을 기록을 남기는 것을 말하는데 일종의 자동차 블랙박스와 같다
- 리팩터링(refactoring) : 코드의 기능에는 변함이 없이 코드와 구조 또는 성능을 개선하는 작업을 말합니다
- 2,3장에서 실습했던 코드를 롬복을 활용해 늘어진 코드를 간소화하고
- println()문을 로깅으로 변환해 보겠다
- build.gradle 에 롬복을 추가한다
- dependenciesdp 스프링부트 프로젝트 만들 때 추가한 web 도구와 mustache, jpa, h2database를 확인할 수 있다
- 롬복도 여기에 추가한다
- comileOnly..., annotationProcessor로 시작하는 코드를 작성한다
- 편집기에 나타난 코끼리 모양의 새로 고침 아이콘을 클릭해 롬복 관련 라이브러리를 다운로드한다
- 근데 나는 코끼리가 안보여서 단축키 Ctrl+Shift+O 로 다운로드했다
- 다운로드가 끝난 후 오른쪽에 Gradle 탭을 클릭하면 롬복이 포함된 것을 확인할 수 있다
- 프로젝트 탐색기에서 com.example.파일명>dto>ArticleForm에서
- ArticleForm() 생성자와 toString() 메서드를 리팩터링한다
- ArticleForm()
- ArticleForm() 생성자 코드 전체를 지운다
- ArticleForm 클래스 위에 @AllArgsConstructor 어노테이션을 추가한다
- 이렇게하면 title과 content를 매개변수로 하는 생성자가 자동으로 만들어진다
- 이전의 생성자 코드 4줄이 1줄로 대체되는 것이다
- toString()
- toString() 메서드 코드 전체를 지운다
- @ToString 어노테이션을 추가한다
- 이렇게 하면 toString() 메서드를 사용하는 것과 같은 효과가 난다
- 제대로 작동되는지 확인 : localhost:8080/articles/new
- 제목과 내용 입력하고 Submit을 하고 인텔리제이 Run 탭에서 결과가 출력이 되는지 확인
- DB에도 잘 들어갔는지 확인 : localhost:8080/h2-console
- JDBC URL은 서버를 켤 때마다 바뀌니 새로 입력해 줘야 한다 (Run 탭에서 jdbc를 찾는다)
- DB에 접속해 ARTICLE 테이블을 실행해 보면 데이터가 잘 저장된 것을 확인할 수 있다
- 프로젝트 탐색기에서 com.example.firstproject>entity>Article에서
- Article() 생성자와 toString() 메서드를 리택터링한다
- Article()
- Article() 생성자 코드 전체를 지운다
- ArticleForm 클래스 위에 @AllArgsConstructor 어노테이션을 추가한다
- id, title, content를 매개변수로 하는 생성자가 자동으로 만들어진다
- toString()
- toString() 메서드 코드 전체를 지운다
- ArticleForm 클래스 위에 @ToString 어노테이션을 추가한다
- 지금까지 println()으로 입력받은 데이터를 확인했다
- 하지만 실제 서버에서는 이렇게 하면 안된다
- 왜냐하면 기록에 남지 않을뿐더러 서버의 서버의 성능에도 악역향을 끼친다
- 대신 println()을 사용하지 않고 로깅을 사용한다
- 로깅은 자동차의 블랙박스와 같다
- 블랙박스처럼 로깅도 서버에서 일어나는 일을 모두 기록한다
- src>com.example.firstproject>controller>ArticleController
- ArticleController 클래스 위에 @Slf4j 어노테이션을 추가한다
- Slf4j (Simple Logging Facade for Java)가 로깅을 사용할 수 있게 한다
- 그리고 아래와 같이 수정한다
- log가 빨간색으로 오류가 나올 수 있는데 lombok 플러그인을 설치해야 한다
- File - Settings - Plugins 에서 lombok 빨간 고추(?)를 설치한다
- 참고 : https://jhann.tistory.com/159
- 제대로 작동하는지 확인 : localhost:8080/articles/new
- 제목과 내용에 데이터를 입력하고 Submit을 누르고 인텔리제이 Run에서 로그가 찍힌 것을 확인한다
- println() 문으로 확인했을 땐 뒷부분만 출력하지만
- println()을 사용하면 바로 출력할 수 있지만 따로 찾을 수 없다
- 로깅은 어떤 데이터가 언제 저장됐는지 시간 정보도 남아 있다
끝!! 🥳🥳