Posts 스프링부트 엔티티 관리 (@EnableJpaRepositories, @EnableConfigurationProperties)
Post
Cancel

스프링부트 엔티티 관리 (@EnableJpaRepositories, @EnableConfigurationProperties)

멀티 모듈로 프로젝트를 관리중인데, 컨트롤러를 위한 새로운 api 모듈을 생성했담. 근데 새로운 모듈 내에서 core 엔티티나 dto에 접근하지 못하는 상황이 발생함.

접근하기 위해서는 어떤 설정이 추가로 필요한지 알아봄

모듈의 엔티티 가져오기

@EnableJpaRepositories

https://parkadd.tistory.com/106

@EnableJpaRepositories는 JPA Repository들을 활성화하기 위한 애노테이션입니다.

Spring에서는 @Configuration 클래스에서 @EnableJpaRepositories 애노테이션을 사용 해야합니다.

  • SpringBoot 에서는 @EnableJpaRepositories가 자동설정이 돼서 생략해도 됩니다.

@EnableConfigurationProperties

https://mangkyu.tistory.com/191

[ @EnableConfigurationProperties의 한계점 ]

@EnableConfigurationProperties를 이용해 설정 프로퍼티 클래스(@Configuration Properties)를 사용하는 경우에는 해당 클래스들이 많아질 경우에 코드가 상당히 무거워지는 한계가 있다.

[ @ConfigurationPropertiesScan의 사용법 ]

@ConfigurationPropertiesScan 어노테이션은 @ComponentScan과 상당히 유사하다.

@ConfigurationPropertiesScan 어노테이션은 패키지를 기반으로 @ConfigurationProperties가 등록된 클래스들을 찾아 값들을 주입하고 빈으로 등록해준다. @ConfigurationPropertiesScan에 스캔을 실행할 패키지 또는 클래스를 지정해줄 수 있으며, 만약 별도로 지정하지 않는다면 해당 어노테이션이 붙은 패키지와 그 하위의 패키지에 대해 스캔을 진행한다. @Component나 그 하위 어노테이션(@Configuration 등)이 붙은 클래스들은 @ConfigurationPropertiesScan에 의해 스캔되지 않는다.

일반적으로 SpringBoot의 메인 클래스에 @ConfigurationPropertiesScan 어노테이션을 다음과 같이 추가해주고, 필요한 경우 Base Package(베이스 패키지)를 지정해준다.

1
2
3
4
5
@Configuration
@ConfigurationPropertiesScan("com.mang.atdd.membership")
public class SpringBootApplication {

}

위와 같이 설정을 해주면 com.mang.atdd.membership과 그 하위 패키지들에 대해 @ConfigurationProperties 어노테이션이 붙은 클래스들에 값을 주입하고 빈으로 등록해준다.

만약 등록해주어야 하는 클래스가 많다면 @EnableConfigurationProperties가 아닌 @ConfigurationPropertiesScan를 이용하는 것도 좋다.

This post is licensed under CC BY 4.0 by the author.

코틀린의 클래스, 객체, 인터페이스 (Kotlin In Action - Dmitry Jemerov, Svetlana Isakova)

Vue - infinite redirection 문제

Comments powered by Disqus.