본문 바로가기
공부/프로그래밍

[Spring] 서버가 여러대일때 특정 서버에만 실행하기.

by demonic_ 2017. 8. 16.
반응형

위의 조건을 하기 위해서는 다음의 3가지중 하나를 설정하는게 좋다

1) WAS의 프로퍼티 설정 (예를들어 tomcat 같은)

2) WAS를 실행할 때 설정

3) web.xml

4) maven을 사용한다면 maven에서 가능

등으로 나눌 수 있다.


상황에 따라 크게 2가지로 나뉠수 있겠다.

1) 소스 변경을 허용하지 않을 때 => 각각의 WAS에 직접설정

2) 소스 변경을 허용할 때 => 프로퍼티 등에 직접 설정한다.



1) WAS의 프로퍼티 설정 (여기서 예시는 톰캣을 이용한다)

catalina.properties 파일을 연 후에 다음의 값을 넣어준다.

spring.profiles.active=local,test


2) WAS 를 실행할 때 설정

-Dspring.profiles.active=local



########### 이제 설정한 값을 사용하는 법을 알아보자.

다음의 설정을 Class에 선언해두면 Bean을 선별적으로 생성이 가능하다.

@Component 

@Profile({"local","test"}) 

public class AnyComponent { 

... 

}


위의 설정대로라면 local 또는 'test' 로 설정되어 있는 곳에서만 해당 빈이 실행된다.

주로 배치를 특정 서버에서 돌려야만 하거나 할 때 사용하면 유용하다.


참고로 여기서 설정한 세팅을 JAVA에서 써야할 경우 다음과 같이 하면 가능하다.

@Value("${spring.profiles.active}")

String active;


void test(){

// 값 확인

System.out.println(active);

}




반응형

댓글