본문 바로가기
개발/egovframework

[전자정부프레임워크] Spring profile (운영,개발 분리)

by 아크투어 2023. 3. 22.
반응형

 

1. Spring profile

  • profile이란 특정한 특징이나 공통점을 찾아 그룹화 하는 것이다.
  • 스프링에서는 설정이나 빈같은 것들을 그룹화 하여 하나의 프로파일로 정의하고 여러 정의된 프로파일 중 원하는 것으로 애플리케이션을 구동할 수 있다.
  • 개인(local), 개발(dev), 운영(prod)  형식으로 운영가능
  • 아래소스는 전자정부프레임워크 3.10 기반이다.

 

2. pom.xml에 적용

  • <profiles> ~~ </profiles>입력 (egovframework 3.10기준)
# pom.xml 추가

<profiles>
	<profile>
		<id>dev</id>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<properties>
			<env>dev</env>
		</properties>
	</profile>
	<profile>
		<id>prod</id>
		<properties>
			<env>prod</env>
		</properties>
	</profile>
</profiles>

 

  • <build> ~~~ </build>입력 (egovframework 3.10기준)
  • 해당코드추가
# pom.xml 추가

<resources>
	<resource>
		<directory>src/main/resources</directory>
	</resource>
	<resource>
		<directory>src/main/resources-${env}</directory>
	</resource>
</resources>
  • 아래는 적용된 소스
<build>
	<defaultGoal>install</defaultGoal>
	<directory>${basedir}/target</directory>
	<finalName>${project.artifactId}-${project.version}</finalName>

	<resources>
		<resource>
			<directory>src/main/resources</directory>
		</resource>
		<resource>
			<directory>src/main/resources-${env}</directory>
		</resource>
	</resources>

	<pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<port>80</port>
					<path>/</path>
					<systemProperties>
						<JAVA_OPTS>-Xms256m -Xmx768m -XX:MaxPermSize=256m</JAVA_OPTS>
					</systemProperties>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
					<maxmem>1024m</maxmem>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
		</plugins>
	</pluginManagement>
</build>

 

3. resources 영역 소스분리

  • 아래와같이 datasource와 properties 파일을 분리한다.

 

 

4. Run Configurations 에서 Maven Build항목을 아래와 같이 작성

  • 아래참고

 

5. 소스에서 마우스 우클릭후 아래항목 선택

  • Maven > Select Maven Profiles...

 

  • 아래처럼 개발시 선택가능

 

6. 리눅스 WAS 배포시

  • apache-tomcat-8.0.47/bin 경로에 setenv.sh 파일을 만든다.
  • 아래내용을 추가한다.
  • WAR파일을 톰캣에 배포시 알아서 prod 운영환경으로 동작한다.
#!/bin/bash
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=prod"

반응형