์์
ํ๋ก์ ํธ๋ฅผ ์งํํ ๋, ๊ฐ๋ณ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ ๋ณด๋ ๋ชจ๋ properties์ ๋ฃ๋๋ค.
ํ์์ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋ฐฐํฌ ์์์ธ 'DEV' -> 'STAGE' -> 'PROD' ์์
'STAGE' -> 'DEV' ๋ก ๋ด๋ฆฌ๊ฑฐ๋, 'PROD' ๋จ๊ณ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฐ๊ณ ์๋ค.
config.flag.type ์ 'D', 'S', 'P' ๋ก ๊ตฌ๋ถํ์ฌ config.flag.type์ด 'D' ์ผ ๊ฒฝ์ฐ,
DEV ์๋ฒ๋ก ๋ฑ๋กํ config๋ฅผ ๋ถ๋ฌ์ค๊ณ ๋ญ ๊ทธ๋ฐ์์ด๋ค.
์๋ฒ๋ฅผ ์ค๋จํ์ง ์๊ณ ์ด ํ์ผ๋ง์ ์์ ํจ์ผ๋ก์จ ํ๋ก์ ํธ์ ์ค์ ๊ฐ๋ค์ ํธ๋ค๋ง ํ๋ค๋ ์ ์์
๊ต์ฅํ ์ ์ฉํ๋ค.
ํ ์คํธ ์๋๋ฆฌ์ค
Spring ๊ตฌ์กฐ๋ก ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ค๋ฉด ๊ต์ฅํ ์ฌํํ๋ค.
์ด๋ฏธ classpath:resources/application.properties ํ์ผ์ด ์์ฑ๋์์ ํ ๋ฐ,
์์๋ก ๊ฐ์ ๋ฃ์ด์ ์๋ฅผ ๋ค์ด๋ดค๋ค.
์๋๋ฆฌ์ค๋ ์คํ๋ง ์ค์ผ์ค๋ฌ๋ฅผ ์ด์ฉํด ํน์ ์๊ฐ๋๋ง๋ค properties์ ๊ฐ์ ํ์ธ ํ,
๊ทธ ๊ฐ์ ๋ฐ๋ผ ์ถฉ์ ์ด ๋๋ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ณผ ์์ ์ด๋ค.
application.properties >charge.use.flag=n
๋จผ์ properties๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ Bean ์์ ์ด ํ์ํ๋ค.
properties๋ฅผ java์์ ์ฝ์ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ต์ฅํ ๋ง์๋ฐ ๊ทธ ์ค ์ ์ผ ์ฌ์ด ๋ฐฉ๋ฒ์ผ๋ก ์งํํ ์์ ์ด๋ค.
@Value
์ด ๊ฐ์ผ๋ก ๋ถ๋ฌ์ค๊ธฐ ์ํด์๋ ํ์์ ์ผ๋ก @Bean ์ ๋ฑ๋ก์ ํด์ผํ๋ค.
ํ์๋ servlet-context.xml ๋ก ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ์ด ๊ณณ์ bean์ ๋ฑ๋กํ๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd">
...
<!-- ์ค์ผ์ฅด๋ฌ ์ค์ scheduler-->
<task:scheduler id="jobScheduler" pool-size="10"/>
<task:annotation-driven scheduler="jobScheduler"/>
<!-- Property-->
<beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<beans:property name="location" value="classpath:application.properties"/>
<beans:property name="fileEncoding" value="UTF-8" />
<!-- ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ ๊ฒฝ์ฐ, -->
<!--<beans:property name="locations">
<beans:list>
<beans:value>classpath:application.properties</beans:value>
<beans:value>classpath:useState.properties</beans:value>
</beans:list>
</beans:property>-->
</beans:bean>
์๋๋ฆฌ์ค ๊ตฌํ
@Value("${charge.use.flag}")
private String chargeFlag;
@Scheduled(cron="0/5 * * * * ?") // ๊ฐ๋ฐ (5์ด๋ง๋ค)
@Transactional(propagation = Propagation.REQUIRED)
public void workCarryOverBatch() {
log.info("์ถฉ์ ๊ตฌ๋ถ::{}",chargeFlag);
if(chargeFlag.equalsIgnoreCase("Y")) {
log.info("{} ์ผ ๊ธ์ก ์ถฉ์ ์์
์งํ ์ค.(Charging JOB Start)",Util.getCurrentDateTime());
/*// ํด๋น์ผ ์ถฉ์ ๋์ ์ ๋ฌด ํ๋จ.
Optional<List<AutoBatch>> optional = this.todayBatchList(dateConverter.dateFormat());
//์ถฉ์ ์งํ.
this.chargeVM(optional);
log.info("{}์ผ ๊ธ์ก ์ถฉ์ ์์
์งํ ์๋ฃ.(Charging JOB End)",dateConverter.dateFormat());*/
}else{
log.info("์ถฉ์ ๊ตฌ๋ถ::{} ๋ก ์ธํ ์ค์ง",chargeFlag);
}
}
๊ฒฐ๊ณผ