feat: properties -> yml 전환

- profiles 적용을 위해
     pom.xml profiles 적용
main
Jonguk. Lim 12 months ago
parent d95ef0eca8
commit 04f3f7201f

@ -493,4 +493,40 @@
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>local</id>
<properties>
<env>local</env>
<spring.profiles.active>local</spring.profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<!-- prod configuration -->
<profile>
<id>prod</id>
<properties>
<env>prod</env>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
</project>

@ -29,7 +29,7 @@ public class EgovBootApplication {
);
public static void main(String[] args) {
log.debug("##### EgovBootApplication Start #####");
log.debug("##### EgovBootApplication::active profiles - {} Start #####", System.getProperty("spring.profiles.active"));
// SpringApplication springApplication = new SpringApplication(EgovBootApplication.class);
@ -56,7 +56,7 @@ public class EgovBootApplication {
log.debug("##### EgovBootApplication End #####");
log.debug("##### EgovBootApplication::active profiles - {} End #####", System.getProperty("spring.profiles.active"));
}
}

@ -50,64 +50,14 @@ public class EgovProperties {
//파일구분자
static final char FILE_SEPARATOR = File.separatorChar;
//프로퍼티 파일의 물리적 위치
/*public static final String GLOBALS_PROPERTIES_FILE
= System.getProperty("user.home") + System.getProperty("file.separator") + "egovProps"
+ System.getProperty("file.separator") + "globals.properties";*/
// 프로퍼티 파일의 위치 prefix
// /target/classes/egovframework
//public static final String RELATIVE_PATH_PREFIX = "classpath:" + FILE_SEPARATOR + "egovframework";
// 프로퍼티 파일의 위치
// /target/classes/egovframework/egovProps/globals.properties
//public static final String GLOBALS_PROPERTIES_FILE = RELATIVE_PATH_PREFIX + FILE_SEPARATOR +"egovProps"+ FILE_SEPARATOR + "globals.properties";
// /target/classes/application.properties
//public static final String GLOBALS_PROPERTIES_FILE = "classpath:" + FILE_SEPARATOR + "application.properties";
// egovframework/com/cmm/service -> /../../../../ 경로에 properties
public static final String RELATIVE_PATH_PREFIX = EgovProperties.class.getResource("").getPath()
+ FILE_SEPARATOR + ".." + FILE_SEPARATOR
+ ".." + FILE_SEPARATOR + ".." + FILE_SEPARATOR + ".." + FILE_SEPARATOR;
public static final String GLOBALS_PROPERTIES_FILE
= RELATIVE_PATH_PREFIX + "application.properties";
/**
* Key (Globals.java )
* @param keyName String
* @return String
public static String getPathProperty(String keyName){
String value = ERR_CODE;
value="99";
debug(GLOBALS_PROPERTIES_FILE + " : " + keyName);
FileInputStream fis = null;
try{
Properties props = new Properties();
fis = new FileInputStream(GLOBALS_PROPERTIES_FILE);
props.load(new java.io.BufferedInputStream(fis));
value = props.getProperty(keyName).trim();
value = RELATIVE_PATH_PREFIX + "egovProps" + System.getProperty("file.separator") + value;
}catch(FileNotFoundException fne){
debug(fne);
}catch(IOException ioe){
debug(ioe);
}catch(Exception e){
debug(e);
}finally{
try {
if (fis != null) fis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
return value;
}
*/
= RELATIVE_PATH_PREFIX + "application.yml";
/**
* Key (Globals.java )
@ -140,56 +90,7 @@ public class EgovProperties {
}
return value;
/*
Resource resources = ResourcePatternUtils.getResourcePatternResolver(new DefaultResourceLoader())
.getResource(GLOBALS_PROPERTIES_FILE);
debug(GLOBALS_PROPERTIES_FILE + " : " + keyName);
try (InputStream in = resources.getInputStream()) {
Properties props = new Properties();
props.load(new java.io.BufferedInputStream(in));
if ( props.getProperty(keyName) != null )
value = props.getProperty(keyName).trim();
} catch (FileNotFoundException fne) {
debug(fne);
} catch (IOException ioe) {
debug(ioe);
}
return value;
*/
}
/**
* Key
* @param fileName String
* @param key String
* @return String
public static String getPathProperty(String fileName, String key){
FileInputStream fis = null;
try{
java.util.Properties props = new java.util.Properties();
fis = new FileInputStream(fileName);
props.load(new java.io.BufferedInputStream(fis));
fis.close();
String value = props.getProperty(key);
value = RELATIVE_PATH_PREFIX + "egovProps" + System.getProperty("file.separator") + value;
return value;
}catch(java.io.FileNotFoundException fne){
return ERR_CODE_FNFE;
}catch(java.io.IOException ioe){
return ERR_CODE_IOE;
}finally{
try {
if (fis != null) fis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
*/
/**
* Key
@ -264,34 +165,6 @@ public class EgovProperties {
debug("EX:"+ex);//ex.printStackTrace();
}
}
/*
String src = EgovWebUtil.filePathBlackList(property.replace("\\", FILE_SEPARATOR).replace("/", FILE_SEPARATOR));
try (FileInputStream fis = new FileInputStream(src)) {
File srcFile = new File(src);
if (srcFile.exists()) {
java.util.Properties props = new java.util.Properties();
props.load(new java.io.BufferedInputStream(fis));
int i = 0;
Enumeration<?> plist = props.propertyNames();
if (plist != null) {
while (plist.hasMoreElements()) {
Map<String, String> map = new HashMap<String, String>();
String key = (String)plist.nextElement();
map.put(key, props.getProperty(key));
keyList.add(map);
}
}
}
} catch (FileNotFoundException ex) {
debug("FileNotFoundException:" + ex);
} catch (IOException ex) {
debug("IOException:" + ex);
}
*/
return keyList;
}

@ -0,0 +1,130 @@
package egovframework.com.cmm.service;
import lombok.extern.slf4j.Slf4j;
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
public class EgovYmlProperties {
// 에러 메시지 상수
public static final String ERR_CODE = "EXCEPTION OCCURRED";
// YAML 파일 경로
public static final String GLOBALS_YAML_FILE = "application.yml";
// 활성 프로파일 설정 (기본값은 "default")
private static final String ACTIVE_PROFILE = System.getProperty("spring.profiles.active", "local");
/**
* .
* @param keyName String
* @return String
*/
public static String getProperty(String keyName) {
try (InputStream baseInputStream = EgovProperties.class.getClassLoader().getResourceAsStream(GLOBALS_YAML_FILE);
InputStream profileInputStream = EgovProperties.class.getClassLoader().getResourceAsStream(getProfileYamlFile())) {
Yaml yaml = new Yaml();
// 기본 YAML 읽기
Map<String, Object> yamlMap = baseInputStream != null ? yaml.load(baseInputStream) : new HashMap<>();
// 프로파일별 YAML 읽기 (override)
if (profileInputStream != null) {
Map<String, Object> profileMap = yaml.load(profileInputStream);
yamlMap.putAll(profileMap);
}
return getValueFromYamlMap(yamlMap, keyName);
} catch (Exception e) {
log.error("YAML 읽기 오류: {}", e.getMessage(), e);
return ERR_CODE;
}
}
/**
* YAML .
* @param yamlMap Map<String, Object>
* @param keyName String
* @return String
*/
@SuppressWarnings("unchecked")
private static String getValueFromYamlMap(Map<String, Object> yamlMap, String keyName) {
String[] keys = keyName.split("\\.");
Object current = yamlMap;
for (String key : keys) {
if (current instanceof Map) {
current = ((Map<String, Object>) current).get(key);
} else {
return ERR_CODE; // 키 경로가 잘못된 경우
}
}
return Objects.toString(current, ERR_CODE);
}
/**
* YAML key-value .
* @return List<Map<String, String>>
*/
public static List<Map<String, String>> loadYamlFile() {
List<Map<String, String>> keyList = new ArrayList<>();
try (InputStream baseInputStream = EgovProperties.class.getClassLoader().getResourceAsStream(GLOBALS_YAML_FILE);
InputStream profileInputStream = EgovProperties.class.getClassLoader().getResourceAsStream(getProfileYamlFile())) {
Yaml yaml = new Yaml();
// 기본 YAML 읽기
Map<String, Object> yamlMap = baseInputStream != null ? yaml.load(baseInputStream) : new HashMap<>();
// 프로파일별 YAML 읽기 (override)
if (profileInputStream != null) {
Map<String, Object> profileMap = yaml.load(profileInputStream);
yamlMap.putAll(profileMap);
}
flattenYamlMap(yamlMap, "", keyList);
} catch (Exception e) {
log.error("YAML 읽기 오류: {}", e.getMessage(), e);
}
return keyList;
}
/**
* YAML key-value .
* @param yamlMap Map<String, Object>
* @param parentKey String
* @param keyList List<Map<String, String>>
*/
@SuppressWarnings("unchecked")
private static void flattenYamlMap(Map<String, Object> yamlMap, String parentKey, List<Map<String, String>> keyList) {
for (Map.Entry<String, Object> entry : yamlMap.entrySet()) {
String fullKey = parentKey.isEmpty() ? entry.getKey() : parentKey + "." + entry.getKey();
Object value = entry.getValue();
if (value instanceof Map) {
flattenYamlMap((Map<String, Object>) value, fullKey, keyList);
} else {
Map<String, String> map = new HashMap<>();
map.put(fullKey, Objects.toString(value, ""));
keyList.add(map);
}
}
}
/**
* YAML .
* @return String
*/
private static String getProfileYamlFile() {
return "application-" + ACTIVE_PROFILE + ".yml";
}
}

@ -1,5 +1,6 @@
package egovframework.com.config;
import org.springframework.boot.context.properties.*;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
@ -17,9 +18,7 @@ import org.springframework.context.annotation.PropertySources;
EgovConfigAppValidator.class,
EgovConfigAppWhitelist.class
})
@PropertySources({
@PropertySource("classpath:/application.properties")
}) //CAUTION: min JDK 8
@ConfigurationPropertiesScan(basePackages = {"egovframework", "com.xit"})
public class EgovConfigApp {
}

@ -1,6 +1,7 @@
package egovframework.com.config;
import java.io.IOException;
import java.util.*;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
@ -19,6 +20,8 @@ import org.springframework.core.env.Environment;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.support.lob.DefaultLobHandler;
import egovframework.com.cmm.service.*;
/**
* @ClassName : EgovConfigAppMapper.java
* @Description : Mapper
@ -37,9 +40,6 @@ import org.springframework.jdbc.support.lob.DefaultLobHandler;
*
*/
@Configuration
@PropertySources({
@PropertySource("classpath:/application.properties")
})
public class EgovConfigAppMapper {
@Autowired
DataSource dataSource;
@ -84,7 +84,6 @@ public class EgovConfigAppMapper {
@Bean
public SqlSessionTemplate egovSqlSessionTemplate(@Qualifier("sqlSession") SqlSessionFactory sqlSession) {
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSession);
return sqlSessionTemplate;
return new SqlSessionTemplate(sqlSession);
}
}

@ -1,13 +0,0 @@
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
Globals.OsType=WINDOWS
#hsql - local hssql \uc0ac\uc6a9\uc2dc\uc5d0 \uc801\uc6a9 (\ub0b4\uc7a5 hsql\uc740 \uc815\ubcf4 \ud544\uc694 \uc5c6\uc74c)
Globals.hsql.DriverClassName=net.sf.log4jdbc.DriverSpy
Globals.hsql.Url=jdbc:log4jdbc:hsqldb:hsql://127.0.0.1/sampledb
Globals.hsql.UserName=sa
Globals.hsql.Password=
logging.rollingpolicy.maxHistory=2
# File store Path
Globals.fileStorePath=./files

@ -0,0 +1,15 @@
spring:
config:
activate:
on-profile: dev
# 운영서버 타입(WINDOWS, UNIX)
Globals:
OsType: WINDOWS
# File store Path
fileStorePath: ./files
pageUnit: 20
pageSize: 20
logging.rollingpolicy.maxHistory: 2

@ -0,0 +1,15 @@
spring:
config:
activate:
on-profile: dev
# 운영서버 타입(WINDOWS, UNIX)
Globals:
OsType: WINDOWS
# File store Path
fileStorePath: ./files
pageUnit: 20
pageSize: 20
logging.rollingpolicy.maxHistory: 2

@ -1,13 +0,0 @@
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
Globals.OsType=LINUX
#hsql - local hssql \uc0ac\uc6a9\uc2dc\uc5d0 \uc801\uc6a9 (\ub0b4\uc7a5 hsql\uc740 \uc815\ubcf4 \ud544\uc694 \uc5c6\uc74c)
Globals.hsql.DriverClassName=net.sf.log4jdbc.DriverSpy
Globals.hsql.Url=jdbc:log4jdbc:hsqldb:hsql://127.0.0.1/sampledb
Globals.hsql.UserName=sa
Globals.hsql.Password=
logging.rollingpolicy.maxHistory=90
# File store Path
Globals.fileStorePath=./files

@ -0,0 +1,14 @@
spring:
config:
activate:
on-profile: prod
# 운영서버 타입(WINDOWS, UNIX)
Globals:
OsType: LINUX
# File store Path
fileStorePath: ./files
pageUnit: 20
pageSize: 20
logging.rollingpolicy.maxHistory: 90

@ -1,144 +0,0 @@
spring.profiles.active=dev
spring.config.use-legacy-processing=true
#-----------------------------------------------------------------------
#
# globals.properties : \uC2DC\uC2A4\uD15C
#
#-----------------------------------------------------------------------
# 1. key = value \uAD6C\uC870\uC785\uB2C8\uB2E4.
# 2. key\uAC12\uC740 \uACF5\uBC31\uBB38\uC790\uB97C \uD3EC\uD568\uBD88\uAC00, value\uAC12\uC740 \uACF5\uBC31\uBB38\uC790\uB97C \uAC00\uB2A5
# 3. key\uAC12\uC73C\uB85C \uD55C\uAE00\uC744 \uC0AC\uC6A9\uBD88\uAC00, value\uAC12\uC740 \uD55C\uAE00\uC0AC\uC6A9\uC774 \uAC00\uB2A5
# 4. \uC904\uC744 \uBC14\uAFC0 \uD544\uC694\uAC00 \uC788\uC73C\uBA74 '\'\uB97C \uB77C\uC778\uC758 \uB05D\uC5D0 \uCD94\uAC00(\uB9CC\uC57D '\'\uBB38\uC790\uB97C \uC0AC\uC6A9\uD574\uC57C \uD558\uB294 \uACBD\uC6B0\uB294 '\\'\uB97C \uC0AC\uC6A9)
# 5. Windows\uC5D0\uC11C\uC758 \uB514\uB809\uD1A0\uB9AC \uD45C\uC2DC : '\\' or '/' ('\' \uC0AC\uC6A9\uD558\uBA74 \uC548\uB428)
# 6. Unix\uC5D0\uC11C\uC758 \uB514\uB809\uD1A0\uB9AC \uD45C\uC2DC : '/'
# 7. \uC8FC\uC11D\uBB38 \uCC98\uB9AC\uB294 #\uC0AC\uC6A9
# 8. value\uAC12 \uB4A4\uC5D0 \uC2A4\uD398\uC774\uC2A4\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 \uC11C\uBE14\uB9BF\uC5D0\uC11C \uCC38\uC870\uD560\uB54C\uB294 \uC5D0\uB7EC\uBC1C\uC0DD\uD560 \uC218 \uC788\uC73C\uBBC0\uB85C trim()\uD558\uAC70\uB098 \uB9C8\uC9C0\uB9C9 \uACF5\uBC31\uC5C6\uC774 properties \uAC12\uC744 \uC124\uC815\uD560\uAC83
#-----------------------------------------------------------------------
spring.application.name=xit-egov-springboot
# G4C \uC5F0\uACB0\uC6A9 IP (localhost)
Globals.LocalIp=127.0.0.1
# DB\uC11C\uBC84 \uD0C0\uC785(hsql,mysql,oracle,altibase,tibero) - datasource \uBC0F sqlMap \uD30C\uC77C \uC9C0\uC815\uC5D0 \uC0AC\uC6A9\uB428
Globals.DbType=mysql
# DB \uC811\uADFC \uC815\uBCF4
#hsql - local hssql \uC0AC\uC6A9\uC2DC\uC5D0 \uC801\uC6A9 (\uB0B4\uC7A5 hsql\uC740 \uC815\uBCF4 \uD544\uC694 \uC5C6\uC74C)
Globals.hsql.DriverClassName=net.sf.log4jdbc.DriverSpy
Globals.hsql.Url=jdbc:log4jdbc:hsqldb:hsql://127.0.0.1/sampledb
Globals.hsql.UserName=sa
Globals.hsql.Password=
# mysql
Globals.mysql.DriverClassName=net.sf.log4jdbc.DriverSpy
Globals.mysql.Url=jdbc:log4jdbc:mysql://211.119.124.9:4407/egov
Globals.mysql.UserName=egov
Globals.mysql.Password=xit1807
#oracle
Globals.oracle.DriverClassName=oracle.jdbc.driver.OracleDriver
Globals.oracle.Url=jdbc:oracle:thin:@127.0.0.1:1521:egovfrm
Globals.oracle.UserName=
Globals.oracle.Password=
# \uAD8C\uD55C \uC778\uC99D\uBC29\uC2DD(dummy, session, security) - \uC0AC\uC6A9\uC790\uC758 \uB85C\uADF8\uC778\uC2DC \uC778\uC99D \uBC29\uC2DD\uC744 \uACB0\uC815\uD568
# dummy : \uB354\uBBF8 \uBC29\uC2DD\uC73C\uB85C \uC0AC\uC6A9\uC790 \uAD8C\uD55C\uC744 \uC778\uC99D\uD568
# session : \uC138\uC158 \uBC29\uC2DD\uC73C\uB85C \uC0AC\uC6A9\uC790 \uAD8C\uD55C\uC744 \uC778\uC99D\uD568
# security : spring security \uBC29\uC2DD\uC73C\uB85C \uC0AC\uC6A9\uC790 \uAD8C\uD55C\uC744 \uC778\uC99D\uD568
Globals.Auth = session
# \uB85C\uADF8\uC778 \uC778\uC99D \uC81C\uD55C(login authentication limit)
# (\uC0AC\uC6A9 \uC5EC\uBD80 \uC124\uC815\uAC12 : true, false)
Globals.login.Lock = true
# -\uC778\uC99D \uC81C\uC2DC\uB3C4 \uD69F\uC218
Globals.login.LockCount = 5
# \uBE44\uBC00\uBC88\uD638 \uC720\uD6A8\uAE30\uAC04 \uC124\uC815
Globals.ExpirePwdDay = 180
# MainPage Setting
#Globals.MainPage = /cmm/main/mainPage.do
Globals.MainPage = /EgovContent.do
# Page Config
Globals.pageUnit=10
Globals.pageSize=10
# File Config
Globals.posblAtchFileSize=5242880
Globals.fileStorePath=./files
Globals.addedOptions=false
# \uD30C\uC77C \uD655\uC7A5\uC790 \uD654\uC774\uD2B8\uB9AC\uC2A4\uD2B8(\uD5C8\uC6A9\uBAA9\uB85D) : \uD30C\uC77C \uD655\uC7A5\uC790\uB97C (.)\uACFC \uD568\uAED8 \uC5F0\uC774\uC5B4\uC11C \uC0AC\uC6A9\uD558\uBA70 (.)\uB85C \uC2DC\uC791\uD55C\uB2E4.
Globals.fileUpload.Extensions.Images = .gif.jpg.jpeg.png
Globals.fileUpload.Extensions = .gif.jpg.jpeg.png.xls.xlsx
# Access-Control-Allow-Origin
Globals.Allow.Origin = http://localhost:3000
#\uC554\uD638\uD654\uC11C\uBE44\uC2A4 \uC54C\uACE0\uB9AC\uC998 \uD0A4
#\uC8FC\uC758 : \uBC18\uB4DC\uC2DC \uAE30\uBCF8\uAC12 "egovframe"\uC744 \uB2E4\uB978\uAC83\uC73C\uB85C \uBCC0\uACBD\uD558\uC5EC \uC0AC\uC6A9\uD558\uC2DC\uAE30 \uBC14\uB78D\uB2C8\uB2E4.
Globals.crypto.algoritm = egovframe
#JWT secret key
#\uC8FC\uC758 : \uBC18\uB4DC\uC2DC \uAE30\uBCF8\uAC12 "egovframe"\uC744 \uB2E4\uB978\uAC83\uC73C\uB85C \uBCC0\uACBD\uD558\uC5EC \uC0AC\uC6A9\uD558\uC2DC\uAE30 \uBC14\uB78D\uB2C8\uB2E4
Globals.jwt.secret = egovframe
#server.servlet.context-path=/sht_boot_web
server.servlet.context-path=/
server.port = 8082
server.servlet.session.timeout=3600
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
#swaggerdoc
springdoc.version=v4.2.0
springdoc.packages-to-scan=egovframework
springdoc.swagger-ui.tags-sorter=alpha
springdoc.swagger-ui.operations-sorter=alpha
springdoc.swagger-ui.doc-expansion=none
springdoc.api-docs.path=/v3/api-docs
springdoc.api-docs.groups.enabled=true
springdoc.cache.disabled=true
#Sns
Sns.naver.clientId=YOUR_CLIENT_ID
Sns.naver.clientSecret=YOUR_CLIENT_SECRET
Sns.naver.callbackUrl=http://localhost:3000/login/naver/callback
Sns.kakao.clientId=YOUR_CLIENT_ID
Sns.kakao.callbackUrl=http://localhost:3000/login/kakao/callback
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.messages.basename=classpath*:/egovframework/message/com/message-common, classpath*:/egovframework/message/com/**/message*, classpath*:/org/egovframe/rte/fdl/idgnr/messages/idgnr, classpath*:/org/egovframe/rte/fdl/property/messages/properties
# logging level
#Logging
#file path\uC758 default \uAC12\uC740 \uD504\uB85C\uC81D\uD2B8 root \uACBD\uB85C\uC774\uBBC0\uB85C \uC6D0\uD558\uC2DC\uB294 \uACBD\uB85C\uB85C \uBCC0\uACBD\uD558\uC5EC \uC0AC\uC6A9\uD558\uC2DC\uAE30 \uBC14\uB78D\uB2C8\uB2E4.
# ${LOG_FILE}, ${LOG_PATH}
logging.file.path=d:/data/xit-egov/logs
logging.file.name=${logging.file.path}/${spring.application.name}
logging.logback.rollingpolicy.file-name-pattern=${logging.file.name}.%d{yyyy-MM-dd}.%i.gz
logging.logback.rollingpolicy.max-file-size=10MB
logging.logback.rollingpolicy.max-history=7
#logging.register-shutdown-hook=true
logging.root.level=DEBUG
logging.level.sql=DEBUG
logging.level.jdbc.resultset=OFF
logging.level.jdbc.audit=OFF
logging.level.jdbc.only=OFF
logging.level.org.springframework=DEBUG
logging.level.org.hibernate.validator.internal=INFO
logging.level.egovframework=${logging.root.level}
logging.level.org.egovframe=${logging.root.level}
# HEADER, COOKIE
app.auth.save.type=HEADER

@ -0,0 +1,157 @@
#-----------------------------------------------------------------------
#
# globals.properties : 시스템
#
#-----------------------------------------------------------------------
# 1. key = value 구조입니다.
# 2. key값은 공백문자를 포함불가, value값은 공백문자를 가능
# 3. key값으로 한글을 사용불가, value값은 한글사용이 가능
# 4. 줄을 바꿀 필요가 있으면 '\'를 라인의 끝에 추가(만약 '\'문자를 사용해야 하는 경우는 '\\'를 사용)
# 5. Windows에서의 디렉토리 표시 : '\\' or '/' ('\' 사용하면 안됨)
# 6. Unix에서의 디렉토리 표시 : '/'
# 7. 주석문 처리는 #사용
# 8. value값 뒤에 스페이스가 존재하는 경우 서블릿에서 참조할때는 에러발생할 수 있으므로 trim()하거나 마지막 공백없이 properties 값을 설정할것
#-----------------------------------------------------------------------
server:
servlet:
context-path: /
session:
timeout: 3600
port: 8082
spring:
application:
name: xit-egov-springboot
profiles:
active: @spring.profiles.active@
config:
use-legacy-processing: true
mvc:
pathmatch:
matching-strategy: ant_path_matcher
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
messages:
basename: classpath*:/egovframework/message/com/message-common, classpath*:/egovframework/message/com/**/message*, classpath*:/org/egovframe/rte/fdl/idgnr/messages/idgnr, classpath*:/org/egovframe/rte/fdl/property/messages/properties
Globals:
# G4C 연결용 IP (localhost)
LocalIp: 127.0.0.1
# DB 서버 타입 (hsql, mysql, oracle, altibase, tibero) - datasource 및 sqlMap 파일 지정에 사용됨
DbType: mysql
# DB 접근 정보
hsql:
DriverClassName: net.sf.log4jdbc.DriverSpy
Url: jdbc:log4jdbc:hsqldb:hsql://127.0.0.1/sampledb
UserName: sa
Password: ""
mysql:
DriverClassName: net.sf.log4jdbc.DriverSpy
Url: jdbc:log4jdbc:mysql://211.119.124.9:4407/egov
UserName: egov
Password: xit1807
oracle:
DriverClassName: oracle.jdbc.driver.OracleDriver
Url: jdbc:oracle:thin:@127.0.0.1:1521:egovfrm
UserName: ""
Password: ""
# 권한 인증방식 (dummy, session, security)
Auth: security
# 로그인 인증 제한
login:
Lock: true # 인증 제한 사용 여부 (true, false)
LockCount: 5 # 인증 제한 횟수
ExpirePwdDay: 180 # 비밀번호 유효 기간 (일)
# Main Page 설정
MainPage: /EgovContent.do
#MainPage: /cmm/main/mainPage.do
# 페이징 설정
pageUnit: 10
pageSize: 10
# 파일 설정
posblAtchFileSize: 5242880
fileStorePath: ./files
addedOptions: false
# 파일 확장자 허용 목록 (화이트리스트)
fileUpload.Extensions: .gif.jpg.jpeg.png.xls.xlsx
fileUpload.Extensions.Images: .gif.jpg.jpeg.png
# Access-Control-Allow-Origin
Allow:
Origin: http://localhost:3000
# 암호화 서비스 알고리즘 키 (egovframe 기본값을 수정하여 사용할 것)
crypto:
algoritm: egovframe
# JWT secret key (egovframe 기본값 수정 필요)
jwt:
secret: egovframe
# swagger 문서 구성
springdoc:
version: v4.3.0
packages-to-scan: egovframework
swagger-ui:
tags-sorter: alpha
operations-sorter: alpha
doc-expansion: none
api-docs:
path: /v3/api-docs
groups:
enabled: true
cache:
disabled: true
# SNS 설정
Sns:
naver:
clientId: YOUR_CLIENT_ID
clientSecret: YOUR_CLIENT_SECRET
callbackUrl: http://localhost:3000/login/naver/callback
kakao:
clientId: YOUR_CLIENT_ID
callbackUrl: http://localhost:3000/login/kakao/callback
# 로깅 설정
# file path의 default 값은 프로젝트 root 경로이므로 원하시는 경로로 변경하여 사용하시기 바랍니다.
# ${LOG_FILE}, ${LOG_PATH}
logging:
file:
path: d:/data/xit-egov/logs
name: ${logging.file.path}/${spring.application.name}
logback:
rollingpolicy:
file-name-pattern: ${logging.file.name}.%d{yyyy-MM-dd}.%i.gz
max-file-size: 10MB
max-history: 7
root:
level: DEBUG
level:
sql: DEBUG
jdbc:
resultset: OFF
audit: OFF
only: OFF
org:
springframework: DEBUG
hibernate:
validator:
internal: INFO
egovframework: ${logging.root.level}
org.egovframe: ${logging.root.level}
# HEADER, COOKIE 설정
app:
auth:
save:
type: HEADER
Loading…
Cancel
Save