여러 번 같은 문제가 발생했으며, 다른 사람들이이 문제에 관해 어떻게 생각하는지에 대한 의견을 나누고 싶습니다. 스프링 애플리케이션이 .war로 패키지되어 있다고 가정합니다. 파일이므로 여러 환경에서 실행하고 싶습니다..Spring 웹 어플리케이션에서 설정 파일 처리하기
응용 프로그램 (데이터베이스/웹 서비스 등)에 필요한 인프라에 액세스하려면 구성 파일에 액세스 정보를 저장하고 일부 비즈니스 구성도 해당 파일에 저장하십시오. .properties 파일을이 용도로 사용한다고 가정 해 봅시다 (전쟁 중에 스프링 응용 프로그램이 있고 app- 텍스트에서 한 줄로 읽은 속성을 갖고 있기 때문에) 그리고 다른 환경에서 우리는 동일한 appserver/servlet 컨테이너가 있습니다.
메이븐 프로파일 (각 환경에 대해 하나씩), 각각에 대해 적절한 파일에 필요한 구성을 작성하는 것입니다. 예를 들어, 다음과 같습니다 (예 : dev : test, jetty, preprod : tomcat, prod : glassfish).
최근에 저는 운영중인 사람으로부터 질문을 받았습니다 : 'preprod 환경에서 DB가 변경되면 buildserver에서 적절한 프로필로 새 빌드를 생성해야합니까?' '아니요, 실제로/webapps/currentApp/WEB-INF/classes/config/application.properties에 가서 값을 변경 한 다음 컨테이너를 다시 시작할 수 있습니다'라고 대답했습니다. '
이 문제의 몇 가지 측면을 해결하는 솔루션 : Maven 어셈블리 플러그인을 사용하여 Jetty 내부에 war를 삽입하면 '실행 가능한'전쟁으로 사용할 수있게되며 전역 구성 XML을 가질 수있는 가능성을 제공합니다. 임베디드 Jetty의 스타터는 전개 된 war 디렉토리에 적절한 .properties 파일을 작성/수정 한 다음 애플리케이션을 시작한다.
그러나 Jetty 이외의 다른 것을 사용하려는 경우에도이 문제가 해결되지 않습니다.
모두 같은 상황을 어떻게 처리합니까? 그것이 내가 작업 환경으로 이동하면
답변을 주셔서 감사합니다. 흥미로운 접근 방식으로 시도해 볼만한 가치가 있습니다. – abalogh