프로젝트에서 TestContainer을 이용하여 Mysql을 테스트하는 PR의 리뷰를 맡게 되었다. 모르는 부분이 많아 키워드 위주로 간단히 공부하여 정리한다.
@Import
자바에서의 빈 등록을 위한 설정파일은 @Configuration
을 이용해서 설정할 수 있다. 컴퍼넌트 스캔, XML 방식등을 이용해서 클래스에 등록된 빈들을 사용할 수 있다.
@ComponentScan
은 패키지를 기준으로 빈들을 읽어오지만,
@Import
은 설정한 특정 클래스들만 읽어올 수 있다.
따라서, 특정 클래스들만 읽어와야 하는 테스트의 경우 유용하게 활용될 수 있을 것이다.
@ActiveProfiles
Profile은 스프링에서 여러개의 스프링 빈들을 묶어서 관리하는 것을 의미한다.
@Profile
로 빈들의 프로필을 설정할 수 있다.application-{profile}.yml
로 Properties 파일도 설정할 수 있다.@ActiveProfiles
: 로딩시킬 프로필을 선택할 수 있다.코인에서는 project.env = {production|stage}
로 체크해줬었는데, 프로필을 통해 설정들을 묶어서 관리할 수 있다는 걸 알게되었다.
포트는 프로세스를 구분하는 번호이다.
RANDOM_PORT
: 로컬포트와 헷갈리지 않기 위하는 목적으로 사용한다. (일반적인 목적)DEFINED_PORT
: 외부 API에서 특정 포트를 요구할 때 사용한다. (특수한 목적)@LocalServerPort
: 로컬서버의 포트를 int 필드에 매핑한다. PropertySource
@DynamicPropertySource
동적으로 PropertySource
목록(application.property
와 같은 파일들)에 환경변수를 추가할 수 있다.
@PropertySource
@Configuration
@PropertySource("classpath:/~~")
public class AppConfig {
@Autowired
Environment env;
public void printPW() {
System.out.println(env.getProperty("password"));
}
}
를 통해 환경파일에 접근하여 값을 가져올 수 있다.
@DirtiesContext
사용시 속도가 느려 더 좋은 방법을 찾고있었다.@DirtiesContext
보다 속도가 빠르다.도커 컨테이너를 이용하여 프로세스(Mysql, Redis, ElasticSearch 등) 테스트를 돕는 기술.