4.1 롬복(lombok)이란
코드를 간소화해주는 라이브러리
❓ getter(), setter(), constructor(), toString() 같은 필수 메서드를 매번 작성해야 한다.
❗️ 롬복을 사용하면 필수 코드를 간편하게 작성할 수 있고, 로깅 기능을 통해 printIn()문을 개선할 수 있다.
✔️ 로깅(logging) : 프로그램의 수행 과정을 기록으로 남기는 것(일종의 자동차 블랙박스)
✔️ 리팩토링(refactoring) : 코드의 기능에 변함이 없이 코드의 구조 또는 성능을 개선하는 작업
firstproject > src > build.grandle 의 dependencies에
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
4.2 롬복을 활용해 리팩토링하기
controller, dto, entity, repository 등의 코드를 롬복으로 간소화하고 println()을 로깅으로 변환
4.2.1 DTO 리팩토링하기
클래스 위에 어노테이션 작성
- 생성자 : @AllArgsConstructor
- toString() : @ToString
4.2.2 엔티티 리팩토링하기
클래스 위에 어노테이션 작성
- 생성자 : @AllArgsConstructor
- toString() : @ToString
4.2.3 컨트롤러에 로그 남기기
System.out.println(form.toString());
// 1. DTO를 엔티티로 변환
Article article = form.toEntity();
System.out.println(article.toString());
// 2. 리포지토리로 엔티티를 DB에 저장
Article saved = articleRepository.save(article); // article엔티티를 저장해 saved 객체에 반환
System.out.println(saved.toString());
❓ 코드를 보면 println()으로 확인하고 싶은 데이터 출력했는데, 실제 서버에서는 절대로 해서는 안되는 행동이다.
➡️ println()으로 데이터를 검증하면 기록에도 안남고 서버의 성능에 악영향을 끼친다.
❗️ 로깅 기능 사용해 서버에서 일어나는 일을 기록하면 된다.
println()은 데이터를 바로 출력할 수 있는데 나중에는 찾아볼 수 없지만 로깅은 나중에라도 찍힌 로그를 확인할 수 있다.
- @Slf4j : 데이터 확인하는 부분을 로깅 기능으로 대체(Simple Logging Facade for Java)
- System.out.println() ➡️ log.info()
로그로 찍힌 것을 확인할 수 있는데, ArticleController에서 어떤 데이터가 언제 저장됐는지 시간 정보도 확인 가능
- 2025-02-21T18:37:52.304+09:00 INFO 94585 --- [firstproject] [nio-8080-exec-3] c.e.f.controller.ArticleController : ArticleForm(title=1111, content=1111)
- 2025-02-21T18:37:52.304+09:00 INFO 94585 --- [firstproject] [nio-8080-exec-3] c.e.f.controller.ArticleController : Article(id=null, title=1111, content=1111)
- 2025-02-21T18:37:52.355+09:00 INFO 94585 --- [firstproject] [nio-8080-exec-3] c.e.f.controller.ArticleController : Article(id=1, title=1111, content=1111)
'CS > 스프링부트3 자바 백엔드 개발 입문' 카테고리의 다른 글
[게시판 CRUD 만들기] 6장 | 게시판 내 페이지 이동하기 (0) | 2025.02.22 |
---|---|
[게시판 CRUD 만들기] 5장 | 게시글 읽기: Read (0) | 2025.02.22 |
[게시판 CRUD 만들기] 3장 | 게시판 만들고 새 글 작성하기: Create (0) | 2025.02.20 |
[스프링 부트 개요] 2장 | MVC 패턴 이해와 실습 (0) | 2025.02.20 |
[스프링 부트 개요] 1장 | 스프링 부트 시작하기 (0) | 2025.02.20 |