본문 바로가기

Back-End/Spring22

멀티 모듈에서 JPA 모듈을 사용하기 위한 설정 및 내 견해 이전 포스트와 이어집니다. 타 모듈의 클래스들을 빈으로 등록하기 위한 설정 java-core 모듈을 빈으로 등록해서 java-api에서 사용을 하도록 해야 한다. 그래서 @SpringBootApplication으로 스캔 패키지를 설정한다. java-core의 모듈들 뿐만 아니라 java-api에서 사용되는 모든 모듈들이 스프링 빈으로 등록이 되어야 하기 때문에 패키지 가장 상위를 명시했다. 스프링 빈으로 등록해두기 위해 스캔 범위를 지정. @EntityScan("com.multi.core") // core 모듈을 포함하여 스프링 빈으로 등록시키 위해서 패키지 탐색범위를 지정한다. @SpringBootApplication(scanBasePackages = {"com.multi"}) public class .. 2022. 6. 23.
멀티 모듈에서 JPA DDL 로그가 안나온다. 멀티모듈이라는 단어가 나온지는 꽤 됐으나 최근에 멀티모듈이라는 것에 대해 들었다. 대략적으로 이해한 부분은 아래와 같다. 하나의 프로젝트가 방대해질수록 프로젝트가 가지는 의존성이 어마어마해진다. 프로젝트의 의존성들을 각 모듈에 따라 분리시킴으로써 모듈들이 자신의 역할을 수행하게하고 필요한 의존성들을 가지고 있게 한다. 새로운 구조가 생길 때마다 필요한 모듈을 미리 구현한 각각의 모듈을 사용함으로써 굳이 선언해서 사용하지 않음으로써 의존성을 분리시키고 관리를 좀 더 수월하게 하기 위함이다. 멀티 모듈로 프로젝트를 만들어가다보니 부딪히는 부분이 많았다. 첫 번째는 타 모듈에서 서버를 실행할 경우 Entity 를 가지고 있는 모듈의 의존성을 받아써도 JPA 관련 DDL 로그가 나타나지 않았다. 현재 만들고 있.. 2022. 6. 22.
로깅 라이브러리(@Slf4j) 사용시 log 메서드의 올바른 사용법 애플리케이션 계층에서 우리가 로그를 남길 때 사용하는 방식은 다 다르다. 이번에 강의를 들으면서 알게된 방법이 있어서 공유하게 되었음. 직접 예시 코드를 작성해본다.. String test = "test"; log.info("log Test = " + test); // 1 log.info("log Test = {} ", test); // 2 정확하진 않지만 대표적으로 로그 라이브러리를 사용할 떄 위와 같은 2가지 방식으로 쓰는 것으로 알고 있다. 나 같은 경우 1번 방식이 손에 익었기 떄문에 주로 1번방식을 사용했는데, 결론부터 말하자면 1번방식을 사용하면 안된다는 것이다. 이것은 자바언어와 관련이 깊은데, 1번 방식이 이루어지는 과정은 이러하다. 1. 'test' 라는 변수에 값이 치환이된다 2. "l.. 2021. 12. 18.
Spring Boot Logback 설정으로 로그파일 생성 최근 회사에서 예외처리(에러) 및 엔드포인트에 대한 응답에 대한 데이터를 확인하기 위해서 직접 Slf4j 를 통해서 작성을 했으나 현재 동작시키고 있는 리눅스에서 백그라운드로 실행한다지만 좀더 실용성 있게 로그에 대한 정보를 파악하고 수집하고자 로그에 대한 정보를 파일로 저장해서 만들었으면 한다고 사수님께서 요청을 해주셨다. 직접 하는 과정에서 알아두면 좋을거 같고 혹여 다른 프로젝트를 스프링 프레임워크로 사용할 때도 적용시키면 괜찮을거 같아서 작성해본다. 기본적으로 스프링 부트는 프로퍼티파일에서 로그에 대한 레벨을 설정해서 사용이 가능하다. 보통 로그레벨은 TRACE < DEBUG < INFO < WARN < ERROR 순으로 설정되어있고 지정한 레벨에 따라서 그 하위 레벨의 로그까지 같이 찍을 수 있.. 2021. 9. 4.
Spring Boot + Gradle + MyBatis 설정 사실 Mybatis 설정은 요근래 처음하는건데 보통은 Spring 레거시 프로젝트에서 썼던 프레임워크고 Spring Boot로는 보통 JPA를 많이 사용하는 추세이니 이것으로 개발을 주로하곤 한다. 근래 면접을 보았던 회사에서 MyBatis를 사용하신다고 하였고, JPA에 비해 조금 더 추가적인 설정이 필요하다보니 설정 방법을 알아보면 괜찮을거 같기도해서 써봄. 개발환경은 다음과 같다. Spring Boot 2.4.5 Gradle 7.x MyBatis dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-sta.. 2021. 7. 5.
Spring Boot Test Code 동작순서 정렬 - @TestMethodOrder 최근 실무에서도 테스트코드의 중요성에 대해 알고 단위 테스트나 TDD 형식의 주도개발을 통해서 프로젝트를 구축하는 추세로 알고 있다. 지극히 주관적인 생각으로 테스트코드를 통해서 얻을수 있는 장점은 다음과 같다 1. 각각의 기능 테스트를 통한 검증. 2. 각 기능 테스트 검증에 의한 전체 프로젝트 구축시 기능동작에 대한 확신 정리해서 말하자면 테스트코드는 프로젝트가 구축되어 갈수록 해당 기능들이 전체적으로 정상적으로 동작해야 하기 때문에 그것에 대한 검증을 위한 행위이고 버그를 고치기 위한 원인을 파악하는 데 좀 더 편의성을 높이기 위한 것이라고 생각해볼 수 있다. 물론 테스트 코드를 작성해 나가면서 개발하는 것은 많은 시간과 인력(?)이 필요로 하지만 그만큼 테스트 코드가 있는 프로젝트가 좀 더 신경쓴.. 2021. 6. 25.