요즘 Spring을 활용한 프로젝트를 많은 사람들이 하고, 실무에서도 많은 프로젝트가 Spring을 이용해서 개발되고 있다.
토이프로젝트를 만들거나 할때는 상관없지만, 실제로 유저에게 제공할 서비스를 만드는 경우라면 여러 환경을 고려해야한다.
개발자의 pc 에서 접근하는 local 영역, 개발 서버인 dev , 테스트 서버인 test, 실제 유저에게 오픈할 live 서버 등 이렇게 많은 환경에서 다른 정보를 제공해야하는 경우가 많다.
아래 특정 프로젝트의 Config 파일을 보자.
@Configuration
public class ToyPJTConfig {
private static final String apiUrl = "https://~~~~~";
...
}
api 서버 url 을 이런식으로 상수화 시켜서 넣어두는 경우가 있는데, api 서버가 개발서버도 있고 테스트 서버도 있고 라이브 서버도 있는 경우라면 이렇게 내부에 직접 정의하는 방식은 올바른 방법이 아니다.
값을 빼서 injection을 해주는게 올바르다.
우선 application.yml 파일에 아래와 같은 설정값을 등록해주자.
toy:
apiurl: 'https://~~~~~'
그리고 Config 에 프로퍼티를 DI를 해준다.
@Configuration
public class ToyPJTConfig {
@Value("${toy.apiurl"})
private String apiUrl;
...
}
이렇게 하면 각 환경에 따라서 application.yml 파일의 프로퍼티값만 바꿔주면 해당 환경의 정보가 적용된다. 프로젝트 초기에 이러한 설정은 굉장히 중요한 부분이니 잘고려하도록 하자.
Ref.
조슈아 블로크, 『이펙티브 자바』, 프로그래밍인사이트(2020), p28-p30
반응형
'Programming > JAVA' 카테고리의 다른 글
[Effective Java] Try-finally 대신 Try-with-Resources로 자원 해제하기 (0) | 2023.01.31 |
---|---|
[Effective Java] Primitive Type 과 Wrapper Class (0) | 2023.01.30 |
[Effective Java] 인스턴스 생성을 막기 위해 private 생성자를 이용하자 (0) | 2023.01.28 |
[Effective Java] 생성자 대신 Static Factory Method를 사용하자 (0) | 2023.01.27 |
[java] Java 에서 Stream 사용하기 (0) | 2021.11.10 |
댓글