Spring
Spring 3.0에서 profiles 를 이용해 Local, Develop, Production 등에 맞게 이용해보기
kimc
2023. 2. 4. 11:41
반응형
이번 글을 통해 배워 갈 내용
- @Profile
- yml 파일에 profile 설정을 해서 test와 production 상황에 DB 다르게 사용해 보기
- 테스트 상황과 배포 상황에 맞게 다른 디비 연결하게 세팅하기
실무에서는 상황에 따라 다르지만
주로
데이터베이스를 사용하는 부분에 따라서
Local, Develop, Production 등으로 나누고
주요 개발자 들을 제외한
나머지 개발자들은 Production DB등에 접근 불가한 경우가 많습니다
저는 주로 @Profile과 DB에 유저권한을 주는데
@Profile을 사용함으로써
빈들을 특정 프로파일에 맵핑합니다.
예를 들어서
몽고디비를 로컬에 설치하고
로컬에 설치된 몽고디비를 테스트에 사용
몽고디비 원격을 Production에 사용하고자 한다면
yml 파일을 아래와 같이 설정하고
spring:
profiles:
active: prod
---
spring:
config:
activate:
on-profile: "local"
data:
mongodb:
host: localhost
port: 27017
database: local
---
spring:
config:
activate:
on-profile: "non-prod"
data:
mongodb:
host: localhost
port: 27017
database: local
---
spring:
config:
activate:
on-profile: "prod"
data:
mongodb:
uri: 주소
database: 디비
테스트 코드를 아래와 같이 작성해
로컬디비를 테스트용도로 쓰고
배포 및 일반 상황에는 위에 설정된 active : prod 프로파일을 쓸 수 있습니다.
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest
import org.springframework.test.context.ActiveProfiles
@DataMongoTest
@ActiveProfiles("local")
internal class FluxAndMonoControllerTest {
@Autowired
lateinit var helloRepository: HelloRepository
@Test
fun findAll() {
// helloRepository.findAll()
}
}
참조 및 인용
https://www.baeldung.com/spring-profiles
블로그 추천 포스트
https://codemasterkimc.tistory.com/50
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
반응형