본문 바로가기
JAVA/자바 공부

멀티모듈 - config 설정 - swagger 사용

by PlusUltraCode 2024. 6. 25.

1. 멀티 모듈 프로젝트 설정

멀티 모듈 프로젝트를 구성하면 프로젝트를 여러 모듈로 나누어 관리할 수 있습니다. 예를 들어, api와 db 모듈을 각각 만들 수 있습니다.

멀티 모듈 프로젝트 구조

root-project
|-- api
|   |-- src
|   |   |-- main
|   |   |-- test
|   |-- build.gradle
|-- db
|   |-- src
|   |   |-- main
|   |   |-- test
|   |-- build.gradle
|-- settings.gradle
|-- build.gradle

api 모듈에서 db 모듈 사용하기

api 모듈에서 db 모듈의 내용을 사용하려면 api 모듈의 build.gradle 파일에 다음과 같이 설정합니다.

gradle
코드 복사
dependencies { implementation project(':db') }

2. @SuperBuilder와 @EqualsAndHashCode

@SuperBuilder

이 어노테이션은 상속받은 클래스에서 빌더 패턴을 사용하도록 설정합니다. 상속받은 멤버 변수도 빌더로 적용할 수 있습니다.

@EqualsAndHashCode(callSuper = true)

이 어노테이션은 객체 비교 시 부모 클래스의 필드까지 포함하여 비교하도록 설정합니다.

3. 멀티 모듈에서 JPA 설정

멀티 모듈을 사용할 때, 서로 다른 프로젝트에서 한 프로젝트의 빈을 가져오려면 설정이 필요합니다.

JPA 설정 예시

config 패키지에 설정 클래스를 만들어줍니다.

@Configuration
@EntityScan(basePackages = "org.example.db")
@EnableJpaRepositories(basePackages = "org.example.db")
public class JpaConfig {
}

4. 공통 설정

ObjectMapper 설정

ObjectMapper를 설정하여 전역적으로 일관된 JSON 처리를 할 수 있습니다.

@Configuration
public class ObjectMapperConfig {

    @Bean
    public ObjectMapper objectMapper(){
        var objectMapper = new ObjectMapper();

        objectMapper.registerModule(new Jdk8Module());
        objectMapper.registerModule(new JavaTimeModule());
        objectMapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        objectMapper.setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy());

        return objectMapper;
    }
}

5. 스웨거 설정

스웨거는 RESTful API 서비스를 개발하고 문서화하는 데 도움을 줍니다.

사용법

  1. Maven Repository에서 springdoc을 검색합니다.
  2. SpringDoc OpenAPI Starter WebMVC UI » 2.2.0의 디펜던시를 복사합니다.
  3. build.gradle 파일에 추가합니다.
dependencies {
    implementation 'org.springdoc:springdoc-openapi-ui:2.2.0'
}
  1. localhost:8080/swagger-ui/index.html에 접속합니다.