+++ .gitignore
... | ... | @@ -0,0 +1,37 @@ |
1 | +HELP.md | |
2 | +.gradle | |
3 | +build/ | |
4 | +!gradle/wrapper/gradle-wrapper.jar | |
5 | +!**/src/main/**/build/ | |
6 | +!**/src/test/**/build/ | |
7 | + | |
8 | +### STS ### | |
9 | +.apt_generated | |
10 | +.classpath | |
11 | +.factorypath | |
12 | +.project | |
13 | +.settings | |
14 | +.springBeans | |
15 | +.sts4-cache | |
16 | +bin/ | |
17 | +!**/src/main/**/bin/ | |
18 | +!**/src/test/**/bin/ | |
19 | + | |
20 | +### IntelliJ IDEA ### | |
21 | +.idea | |
22 | +*.iws | |
23 | +*.iml | |
24 | +*.ipr | |
25 | +out/ | |
26 | +!**/src/main/**/out/ | |
27 | +!**/src/test/**/out/ | |
28 | + | |
29 | +### NetBeans ### | |
30 | +/nbproject/private/ | |
31 | +/nbbuild/ | |
32 | +/dist/ | |
33 | +/nbdist/ | |
34 | +/.nb-gradle/ | |
35 | + | |
36 | +### VS Code ### | |
37 | +.vscode/ |
+++ build.gradle
... | ... | @@ -0,0 +1,64 @@ |
1 | +plugins { | |
2 | + id 'java' | |
3 | + id 'org.springframework.boot' version '3.3.1' | |
4 | + id 'io.spring.dependency-management' version '1.1.5' | |
5 | +} | |
6 | + | |
7 | +group = 'com.takensoft' | |
8 | +version = '0.0.1-SNAPSHOT' | |
9 | + | |
10 | +java { | |
11 | + toolchain { | |
12 | + languageVersion = JavaLanguageVersion.of(17) | |
13 | + } | |
14 | +} | |
15 | + | |
16 | +repositories { | |
17 | + mavenCentral() | |
18 | + maven { | |
19 | + url "https://repo1.maven.org/maven2/" | |
20 | + } | |
21 | + maven { | |
22 | + url "https://maven.egovframe.go.kr/maven/" | |
23 | + mavenContent { | |
24 | + releasesOnly() | |
25 | + } | |
26 | + } | |
27 | +} | |
28 | + | |
29 | +dependencies { | |
30 | + implementation 'org.springframework.boot:spring-boot-starter-security' | |
31 | + implementation 'org.springframework.boot:spring-boot-starter-web' | |
32 | + implementation 'org.springframework.boot:spring-boot-starter-web-services' | |
33 | + testImplementation 'org.springframework.boot:spring-boot-starter-test' | |
34 | + testImplementation 'org.springframework.security:spring-security-test' | |
35 | + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' | |
36 | + | |
37 | + compileOnly 'org.projectlombok:lombok:1.18.34' | |
38 | + annotationProcessor 'org.projectlombok:lombok:1.18.34' | |
39 | + | |
40 | + // 전자정부프레임워크 (4.2) | |
41 | + implementation ('org.egovframe.rte:org.egovframe.rte.ptl.mvc:4.2.0') { | |
42 | + exclude group: 'commons-logging', module: 'commons-logging' | |
43 | + } | |
44 | + implementation 'org.egovframe.rte:org.egovframe.rte.psl.dataaccess:4.2.0' | |
45 | + implementation 'org.egovframe.rte:org.egovframe.rte.fdl.idgnr:4.2.0' | |
46 | + implementation 'org.egovframe.rte:org.egovframe.rte.fdl.property:4.2.0' | |
47 | + | |
48 | + // springdoc-openapi | |
49 | + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' | |
50 | + | |
51 | + // jdbc driver - postgresql | |
52 | + implementation 'org.postgresql:postgresql:42.2.23' | |
53 | + // mariadb | |
54 | + implementation 'org.mariadb.jdbc:mariadb-java-client:3.0.7' | |
55 | + // mybatis | |
56 | + implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3' | |
57 | + // log4jdbc | |
58 | + implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16' | |
59 | + | |
60 | +} | |
61 | + | |
62 | +tasks.named('test') { | |
63 | + useJUnitPlatform() | |
64 | +} |
+++ gradle/wrapper/gradle-wrapper.jar
Binary file is not shown |
+++ gradle/wrapper/gradle-wrapper.properties
... | ... | @@ -0,0 +1,7 @@ |
1 | +distributionBase=GRADLE_USER_HOME | |
2 | +distributionPath=wrapper/dists | |
3 | +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip | |
4 | +networkTimeout=10000 | |
5 | +validateDistributionUrl=true | |
6 | +zipStoreBase=GRADLE_USER_HOME | |
7 | +zipStorePath=wrapper/dists |
+++ gradlew
... | ... | @@ -0,0 +1,249 @@ |
1 | +#!/bin/sh | |
2 | + | |
3 | +# | |
4 | +# Copyright © 2015-2021 the original authors. | |
5 | +# | |
6 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
7 | +# you may not use this file except in compliance with the License. | |
8 | +# You may obtain a copy of the License at | |
9 | +# | |
10 | +# https://www.apache.org/licenses/LICENSE-2.0 | |
11 | +# | |
12 | +# Unless required by applicable law or agreed to in writing, software | |
13 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
14 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
15 | +# See the License for the specific language governing permissions and | |
16 | +# limitations under the License. | |
17 | +# | |
18 | + | |
19 | +############################################################################## | |
20 | +# | |
21 | +# Gradle start up script for POSIX generated by Gradle. | |
22 | +# | |
23 | +# Important for running: | |
24 | +# | |
25 | +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is | |
26 | +# noncompliant, but you have some other compliant shell such as ksh or | |
27 | +# bash, then to run this script, type that shell name before the whole | |
28 | +# command line, like: | |
29 | +# | |
30 | +# ksh Gradle | |
31 | +# | |
32 | +# Busybox and similar reduced shells will NOT work, because this script | |
33 | +# requires all of these POSIX shell features: | |
34 | +# * functions; | |
35 | +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», | |
36 | +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; | |
37 | +# * compound commands having a testable exit status, especially «case»; | |
38 | +# * various built-in commands including «command», «set», and «ulimit». | |
39 | +# | |
40 | +# Important for patching: | |
41 | +# | |
42 | +# (2) This script targets any POSIX shell, so it avoids extensions provided | |
43 | +# by Bash, Ksh, etc; in particular arrays are avoided. | |
44 | +# | |
45 | +# The "traditional" practice of packing multiple parameters into a | |
46 | +# space-separated string is a well documented source of bugs and security | |
47 | +# problems, so this is (mostly) avoided, by progressively accumulating | |
48 | +# options in "$@", and eventually passing that to Java. | |
49 | +# | |
50 | +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, | |
51 | +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; | |
52 | +# see the in-line comments for details. | |
53 | +# | |
54 | +# There are tweaks for specific operating systems such as AIX, CygWin, | |
55 | +# Darwin, MinGW, and NonStop. | |
56 | +# | |
57 | +# (3) This script is generated from the Groovy template | |
58 | +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | |
59 | +# within the Gradle project. | |
60 | +# | |
61 | +# You can find Gradle at https://github.com/gradle/gradle/. | |
62 | +# | |
63 | +############################################################################## | |
64 | + | |
65 | +# Attempt to set APP_HOME | |
66 | + | |
67 | +# Resolve links: $0 may be a link | |
68 | +app_path=$0 | |
69 | + | |
70 | +# Need this for daisy-chained symlinks. | |
71 | +while | |
72 | + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path | |
73 | + [ -h "$app_path" ] | |
74 | +do | |
75 | + ls=$( ls -ld "$app_path" ) | |
76 | + link=${ls#*' -> '} | |
77 | + case $link in #( | |
78 | + /*) app_path=$link ;; #( | |
79 | + *) app_path=$APP_HOME$link ;; | |
80 | + esac | |
81 | +done | |
82 | + | |
83 | +# This is normally unused | |
84 | +# shellcheck disable=SC2034 | |
85 | +APP_BASE_NAME=${0##*/} | |
86 | +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) | |
87 | +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit | |
88 | + | |
89 | +# Use the maximum available, or set MAX_FD != -1 to use that value. | |
90 | +MAX_FD=maximum | |
91 | + | |
92 | +warn () { | |
93 | + echo "$*" | |
94 | +} >&2 | |
95 | + | |
96 | +die () { | |
97 | + echo | |
98 | + echo "$*" | |
99 | + echo | |
100 | + exit 1 | |
101 | +} >&2 | |
102 | + | |
103 | +# OS specific support (must be 'true' or 'false'). | |
104 | +cygwin=false | |
105 | +msys=false | |
106 | +darwin=false | |
107 | +nonstop=false | |
108 | +case "$( uname )" in #( | |
109 | + CYGWIN* ) cygwin=true ;; #( | |
110 | + Darwin* ) darwin=true ;; #( | |
111 | + MSYS* | MINGW* ) msys=true ;; #( | |
112 | + NONSTOP* ) nonstop=true ;; | |
113 | +esac | |
114 | + | |
115 | +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | |
116 | + | |
117 | + | |
118 | +# Determine the Java command to use to start the JVM. | |
119 | +if [ -n "$JAVA_HOME" ] ; then | |
120 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | |
121 | + # IBM's JDK on AIX uses strange locations for the executables | |
122 | + JAVACMD=$JAVA_HOME/jre/sh/java | |
123 | + else | |
124 | + JAVACMD=$JAVA_HOME/bin/java | |
125 | + fi | |
126 | + if [ ! -x "$JAVACMD" ] ; then | |
127 | + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | |
128 | + | |
129 | +Please set the JAVA_HOME variable in your environment to match the | |
130 | +location of your Java installation." | |
131 | + fi | |
132 | +else | |
133 | + JAVACMD=java | |
134 | + if ! command -v java >/dev/null 2>&1 | |
135 | + then | |
136 | + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |
137 | + | |
138 | +Please set the JAVA_HOME variable in your environment to match the | |
139 | +location of your Java installation." | |
140 | + fi | |
141 | +fi | |
142 | + | |
143 | +# Increase the maximum file descriptors if we can. | |
144 | +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | |
145 | + case $MAX_FD in #( | |
146 | + max*) | |
147 | + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. | |
148 | + # shellcheck disable=SC2039,SC3045 | |
149 | + MAX_FD=$( ulimit -H -n ) || | |
150 | + warn "Could not query maximum file descriptor limit" | |
151 | + esac | |
152 | + case $MAX_FD in #( | |
153 | + '' | soft) :;; #( | |
154 | + *) | |
155 | + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. | |
156 | + # shellcheck disable=SC2039,SC3045 | |
157 | + ulimit -n "$MAX_FD" || | |
158 | + warn "Could not set maximum file descriptor limit to $MAX_FD" | |
159 | + esac | |
160 | +fi | |
161 | + | |
162 | +# Collect all arguments for the java command, stacking in reverse order: | |
163 | +# * args from the command line | |
164 | +# * the main class name | |
165 | +# * -classpath | |
166 | +# * -D...appname settings | |
167 | +# * --module-path (only if needed) | |
168 | +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. | |
169 | + | |
170 | +# For Cygwin or MSYS, switch paths to Windows format before running java | |
171 | +if "$cygwin" || "$msys" ; then | |
172 | + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | |
173 | + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | |
174 | + | |
175 | + JAVACMD=$( cygpath --unix "$JAVACMD" ) | |
176 | + | |
177 | + # Now convert the arguments - kludge to limit ourselves to /bin/sh | |
178 | + for arg do | |
179 | + if | |
180 | + case $arg in #( | |
181 | + -*) false ;; # don't mess with options #( | |
182 | + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath | |
183 | + [ -e "$t" ] ;; #( | |
184 | + *) false ;; | |
185 | + esac | |
186 | + then | |
187 | + arg=$( cygpath --path --ignore --mixed "$arg" ) | |
188 | + fi | |
189 | + # Roll the args list around exactly as many times as the number of | |
190 | + # args, so each arg winds up back in the position where it started, but | |
191 | + # possibly modified. | |
192 | + # | |
193 | + # NB: a `for` loop captures its iteration list before it begins, so | |
194 | + # changing the positional parameters here affects neither the number of | |
195 | + # iterations, nor the values presented in `arg`. | |
196 | + shift # remove old arg | |
197 | + set -- "$@" "$arg" # push replacement arg | |
198 | + done | |
199 | +fi | |
200 | + | |
201 | + | |
202 | +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |
203 | +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | |
204 | + | |
205 | +# Collect all arguments for the java command: | |
206 | +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | |
207 | +# and any embedded shellness will be escaped. | |
208 | +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be | |
209 | +# treated as '${Hostname}' itself on the command line. | |
210 | + | |
211 | +set -- \ | |
212 | + "-Dorg.gradle.appname=$APP_BASE_NAME" \ | |
213 | + -classpath "$CLASSPATH" \ | |
214 | + org.gradle.wrapper.GradleWrapperMain \ | |
215 | + "$@" | |
216 | + | |
217 | +# Stop when "xargs" is not available. | |
218 | +if ! command -v xargs >/dev/null 2>&1 | |
219 | +then | |
220 | + die "xargs is not available" | |
221 | +fi | |
222 | + | |
223 | +# Use "xargs" to parse quoted args. | |
224 | +# | |
225 | +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. | |
226 | +# | |
227 | +# In Bash we could simply go: | |
228 | +# | |
229 | +# readarray ARGS < <( xargs -n1 <<<"$var" ) && | |
230 | +# set -- "${ARGS[@]}" "$@" | |
231 | +# | |
232 | +# but POSIX shell has neither arrays nor command substitution, so instead we | |
233 | +# post-process each arg (as a line of input to sed) to backslash-escape any | |
234 | +# character that might be a shell metacharacter, then use eval to reverse | |
235 | +# that process (while maintaining the separation between arguments), and wrap | |
236 | +# the whole thing up as a single "set" statement. | |
237 | +# | |
238 | +# This will of course break if any of these variables contains a newline or | |
239 | +# an unmatched quote. | |
240 | +# | |
241 | + | |
242 | +eval "set -- $( | |
243 | + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | | |
244 | + xargs -n1 | | |
245 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | | |
246 | + tr '\n' ' ' | |
247 | + )" '"$@"' | |
248 | + | |
249 | +exec "$JAVACMD" "$@" |
+++ gradlew.bat
... | ... | @@ -0,0 +1,92 @@ |
1 | +@rem | |
2 | +@rem Copyright 2015 the original author or authors. | |
3 | +@rem | |
4 | +@rem Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +@rem you may not use this file except in compliance with the License. | |
6 | +@rem You may obtain a copy of the License at | |
7 | +@rem | |
8 | +@rem https://www.apache.org/licenses/LICENSE-2.0 | |
9 | +@rem | |
10 | +@rem Unless required by applicable law or agreed to in writing, software | |
11 | +@rem distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +@rem See the License for the specific language governing permissions and | |
14 | +@rem limitations under the License. | |
15 | +@rem | |
16 | + | |
17 | +@if "%DEBUG%"=="" @echo off | |
18 | +@rem ########################################################################## | |
19 | +@rem | |
20 | +@rem Gradle startup script for Windows | |
21 | +@rem | |
22 | +@rem ########################################################################## | |
23 | + | |
24 | +@rem Set local scope for the variables with windows NT shell | |
25 | +if "%OS%"=="Windows_NT" setlocal | |
26 | + | |
27 | +set DIRNAME=%~dp0 | |
28 | +if "%DIRNAME%"=="" set DIRNAME=. | |
29 | +@rem This is normally unused | |
30 | +set APP_BASE_NAME=%~n0 | |
31 | +set APP_HOME=%DIRNAME% | |
32 | + | |
33 | +@rem Resolve any "." and ".." in APP_HOME to make it shorter. | |
34 | +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi | |
35 | + | |
36 | +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |
37 | +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | |
38 | + | |
39 | +@rem Find java.exe | |
40 | +if defined JAVA_HOME goto findJavaFromJavaHome | |
41 | + | |
42 | +set JAVA_EXE=java.exe | |
43 | +%JAVA_EXE% -version >NUL 2>&1 | |
44 | +if %ERRORLEVEL% equ 0 goto execute | |
45 | + | |
46 | +echo. 1>&2 | |
47 | +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 | |
48 | +echo. 1>&2 | |
49 | +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | |
50 | +echo location of your Java installation. 1>&2 | |
51 | + | |
52 | +goto fail | |
53 | + | |
54 | +:findJavaFromJavaHome | |
55 | +set JAVA_HOME=%JAVA_HOME:"=% | |
56 | +set JAVA_EXE=%JAVA_HOME%/bin/java.exe | |
57 | + | |
58 | +if exist "%JAVA_EXE%" goto execute | |
59 | + | |
60 | +echo. 1>&2 | |
61 | +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 | |
62 | +echo. 1>&2 | |
63 | +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | |
64 | +echo location of your Java installation. 1>&2 | |
65 | + | |
66 | +goto fail | |
67 | + | |
68 | +:execute | |
69 | +@rem Setup the command line | |
70 | + | |
71 | +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | |
72 | + | |
73 | + | |
74 | +@rem Execute Gradle | |
75 | +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | |
76 | + | |
77 | +:end | |
78 | +@rem End local scope for the variables with windows NT shell | |
79 | +if %ERRORLEVEL% equ 0 goto mainEnd | |
80 | + | |
81 | +:fail | |
82 | +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | |
83 | +rem the _cmd.exe /c_ return code! | |
84 | +set EXIT_CODE=%ERRORLEVEL% | |
85 | +if %EXIT_CODE% equ 0 set EXIT_CODE=1 | |
86 | +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% | |
87 | +exit /b %EXIT_CODE% | |
88 | + | |
89 | +:mainEnd | |
90 | +if "%OS%"=="Windows_NT" endlocal | |
91 | + | |
92 | +:omega |
+++ settings.gradle
... | ... | @@ -0,0 +1,1 @@ |
1 | +rootProject.name = 'sj_wmp' |
+++ src/main/java/com/takensoft/sj_wmp/SjWmpApplication.java
... | ... | @@ -0,0 +1,15 @@ |
1 | +package com.takensoft.sj_wmp; | |
2 | + | |
3 | +import org.mybatis.spring.annotation.MapperScan; | |
4 | +import org.springframework.boot.SpringApplication; | |
5 | +import org.springframework.boot.autoconfigure.SpringBootApplication; | |
6 | +import org.springframework.scheduling.annotation.EnableScheduling; | |
7 | + | |
8 | +@SpringBootApplication | |
9 | +@MapperScan(basePackages="com.takensoft.*.*.dao, com.takensoft.*.*.*.dao") | |
10 | +public class SjWmpApplication { | |
11 | + public static void main(String[] args) { | |
12 | + SpringApplication.run(SjWmpApplication.class, args); | |
13 | + } | |
14 | + | |
15 | +} |
+++ src/main/java/com/takensoft/sj_wmp/common/confing/CommonConfig.java
... | ... | @@ -0,0 +1,69 @@ |
1 | +package com.takensoft.sj_wmp.common.confing; | |
2 | + | |
3 | +import com.fasterxml.jackson.databind.ObjectMapper; | |
4 | +import com.fasterxml.jackson.databind.SerializationFeature; | |
5 | +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | |
6 | +import org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace; | |
7 | +import org.egovframe.rte.fdl.cmmn.trace.handler.DefaultTraceHandler; | |
8 | +import org.egovframe.rte.fdl.cmmn.trace.handler.TraceHandler; | |
9 | +import org.egovframe.rte.fdl.cmmn.trace.manager.DefaultTraceHandleManager; | |
10 | +import org.egovframe.rte.fdl.cmmn.trace.manager.TraceHandlerService; | |
11 | +import org.springframework.context.annotation.Bean; | |
12 | +import org.springframework.context.annotation.Configuration; | |
13 | +import org.springframework.util.AntPathMatcher; | |
14 | +import org.springframework.web.servlet.view.json.MappingJackson2JsonView; | |
15 | + | |
16 | +@Configuration | |
17 | +public class CommonConfig { | |
18 | + | |
19 | + @Bean(name="jsonView") | |
20 | + public MappingJackson2JsonView getJsonView () { | |
21 | + ObjectMapper objectMapper = getObjectMapper(); | |
22 | + MappingJackson2JsonView jsonView = new MappingJackson2JsonView(objectMapper); | |
23 | + jsonView.setExtractValueFromSingleKeyModel(true); | |
24 | + return jsonView; | |
25 | + } | |
26 | + | |
27 | + @Bean(name = "objectMapper") | |
28 | + public ObjectMapper getObjectMapper() { | |
29 | + ObjectMapper mapper = new ObjectMapper(); | |
30 | + | |
31 | + mapper.registerModule(new JavaTimeModule()); | |
32 | + //기본 날짜 포맷 비활성화 | |
33 | + mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); | |
34 | + | |
35 | + //새로운 날짜 포맷 세팅 | |
36 | + /*SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
37 | + mapper.setDateFormat(dateFormat); | |
38 | + mapper.setTimeZone(TimeZone.getTimeZone("Asia/Seoul"));*/ | |
39 | + | |
40 | + return mapper; | |
41 | + } | |
42 | + | |
43 | + @Bean | |
44 | + public AntPathMatcher antPathMatcher() { | |
45 | + return new AntPathMatcher(); | |
46 | + } | |
47 | + | |
48 | + @Bean | |
49 | + public DefaultTraceHandler defaultTraceHandler() { | |
50 | + return new DefaultTraceHandler(); | |
51 | + } | |
52 | + | |
53 | + @Bean | |
54 | + public DefaultTraceHandleManager traceHandlerService() { | |
55 | + DefaultTraceHandleManager defaultTraceHandleManager = new DefaultTraceHandleManager(); | |
56 | + defaultTraceHandleManager.setReqExpMatcher(antPathMatcher()); | |
57 | + defaultTraceHandleManager.setPatterns(new String[]{"*"}); | |
58 | + defaultTraceHandleManager.setHandlers(new TraceHandler[]{defaultTraceHandler()}); | |
59 | + return defaultTraceHandleManager; | |
60 | + } | |
61 | + | |
62 | + @Bean | |
63 | + public LeaveaTrace leaveaTrace() { | |
64 | + LeaveaTrace leaveaTrace = new LeaveaTrace(); | |
65 | + leaveaTrace.setTraceHandlerServices(new TraceHandlerService[]{traceHandlerService()}); | |
66 | + return leaveaTrace; | |
67 | + } | |
68 | + | |
69 | +} |
+++ src/main/java/com/takensoft/sj_wmp/common/confing/SecurityConfig.java
... | ... | @@ -0,0 +1,31 @@ |
1 | +package com.takensoft.sj_wmp.common.confing; | |
2 | + | |
3 | +import org.springframework.context.annotation.Bean; | |
4 | +import org.springframework.context.annotation.Configuration; | |
5 | +import org.springframework.security.config.annotation.web.builders.HttpSecurity; | |
6 | +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; | |
7 | +import org.springframework.security.web.SecurityFilterChain; | |
8 | + | |
9 | +@Configuration | |
10 | +@EnableWebSecurity | |
11 | +public class SecurityConfig { | |
12 | + | |
13 | + @Bean | |
14 | + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { | |
15 | + http.csrf((auth) -> auth.disable()); | |
16 | + | |
17 | + return http.build(); | |
18 | + } | |
19 | + | |
20 | + // inmemory방식 유저 설정 | |
21 | +// @Bean | |
22 | +// public InMemoryUserDetailsManager userDetailsService() { | |
23 | +// UserDetails user = User.withDefaultPasswordEncoder() | |
24 | +// .username("user") | |
25 | +// .password("password") | |
26 | +// .roles("USER") | |
27 | +// .build(); | |
28 | +// return new InMemoryUserDetailsManager(user); | |
29 | +// } | |
30 | + | |
31 | +}(파일 끝에 줄바꿈 문자 없음) |
+++ src/main/java/com/takensoft/sj_wmp/common/confing/SwaggerConfig.java
... | ... | @@ -0,0 +1,23 @@ |
1 | +package com.takensoft.sj_wmp.common.confing; | |
2 | + | |
3 | +import io.swagger.v3.oas.models.Components; | |
4 | +import io.swagger.v3.oas.models.OpenAPI; | |
5 | +import io.swagger.v3.oas.models.info.Info; | |
6 | +import org.springframework.context.annotation.Bean; | |
7 | +import org.springframework.context.annotation.Configuration; | |
8 | + | |
9 | +@Configuration | |
10 | +public class SwaggerConfig { | |
11 | + @Bean | |
12 | + public OpenAPI openAPI() { | |
13 | + return new OpenAPI() | |
14 | + .components(new Components()) | |
15 | + .info(apiInfo()); | |
16 | + } | |
17 | + private Info apiInfo() { | |
18 | + return new Info() | |
19 | + .title("Springdoc 테스트") | |
20 | + .description("Springdoc을 사용한 Swagger UI 테스트") | |
21 | + .version("1.0.0"); | |
22 | + } | |
23 | +} |
+++ src/main/java/com/takensoft/sj_wmp/wmp/test/dao/TestDAO.java
... | ... | @@ -0,0 +1,12 @@ |
1 | +package com.takensoft.sj_wmp.wmp.test.dao; | |
2 | + | |
3 | +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; | |
4 | + | |
5 | +import java.util.HashMap; | |
6 | +import java.util.List; | |
7 | + | |
8 | +@Mapper("testDAO") | |
9 | +public interface TestDAO { | |
10 | + List<HashMap<String, Object>> testList() throws Exception; | |
11 | +} | |
12 | + |
+++ src/main/java/com/takensoft/sj_wmp/wmp/test/service/Impl/TestServiceImpl.java
... | ... | @@ -0,0 +1,25 @@ |
1 | +package com.takensoft.sj_wmp.wmp.test.service.Impl; | |
2 | + | |
3 | +import com.takensoft.sj_wmp.wmp.test.dao.TestDAO; | |
4 | +import com.takensoft.sj_wmp.wmp.test.service.TestService; | |
5 | +import lombok.RequiredArgsConstructor; | |
6 | +import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl; | |
7 | +import org.springframework.stereotype.Service; | |
8 | + | |
9 | +import javax.inject.Inject; | |
10 | +import java.util.HashMap; | |
11 | +import java.util.List; | |
12 | + | |
13 | +@Service("testService") | |
14 | +@RequiredArgsConstructor | |
15 | +public class TestServiceImpl extends EgovAbstractServiceImpl implements TestService { | |
16 | + | |
17 | + private final TestDAO testDAO; | |
18 | + | |
19 | + @Override | |
20 | + public List<HashMap<String, Object>> testList() throws Exception { | |
21 | + return testDAO.testList(); | |
22 | + } | |
23 | +} | |
24 | + | |
25 | + |
+++ src/main/java/com/takensoft/sj_wmp/wmp/test/service/TestService.java
... | ... | @@ -0,0 +1,9 @@ |
1 | +package com.takensoft.sj_wmp.wmp.test.service; | |
2 | + | |
3 | + | |
4 | +import java.util.HashMap; | |
5 | +import java.util.List; | |
6 | + | |
7 | +public interface TestService { | |
8 | + List<HashMap<String, Object>> testList() throws Exception; | |
9 | +} |
+++ src/main/java/com/takensoft/sj_wmp/wmp/test/web/TestController.java
... | ... | @@ -0,0 +1,33 @@ |
1 | +package com.takensoft.sj_wmp.wmp.test.web; | |
2 | + | |
3 | +import com.takensoft.sj_wmp.wmp.test.service.TestService; | |
4 | +import lombok.RequiredArgsConstructor; | |
5 | +import lombok.extern.slf4j.Slf4j; | |
6 | +import org.springframework.beans.factory.annotation.Autowired; | |
7 | +import org.springframework.http.HttpStatus; | |
8 | +import org.springframework.http.ResponseEntity; | |
9 | +import org.springframework.web.bind.annotation.PostMapping; | |
10 | +import org.springframework.web.bind.annotation.RequestMapping; | |
11 | +import org.springframework.web.bind.annotation.RestController; | |
12 | + | |
13 | +import java.nio.charset.Charset; | |
14 | +import java.util.HashMap; | |
15 | +import java.util.List; | |
16 | + | |
17 | +@RestController | |
18 | +@RequiredArgsConstructor | |
19 | +@Slf4j | |
20 | +@RequestMapping(value="/test") | |
21 | +public class TestController { | |
22 | + | |
23 | + private final TestService testService; | |
24 | + | |
25 | + @PostMapping(path = "/test.json") | |
26 | + public ResponseEntity<?> saveBbsCn() throws Exception { | |
27 | + HashMap<String, Object> result = new HashMap<>(); | |
28 | + | |
29 | + result.put("list", testService.testList()); | |
30 | + result.put("result", "success"); | |
31 | + return new ResponseEntity<>(result, HttpStatus.OK); | |
32 | + } | |
33 | +} |
+++ src/main/resources/application.yml
... | ... | @@ -0,0 +1,47 @@ |
1 | + | |
2 | +# port setting | |
3 | +server: | |
4 | + port: 9080 | |
5 | + | |
6 | +# spring docs setting | |
7 | +springdoc: | |
8 | + api-docs: | |
9 | + enabled: true #?? ?? ?? | |
10 | + swagger-ui: | |
11 | + enabled: true #?? ?? ?? | |
12 | + | |
13 | +#spring setting | |
14 | +spring: | |
15 | + main: | |
16 | + allow-bean-definition-overriding: true | |
17 | + jpa: | |
18 | + open-in-view: false | |
19 | + application: | |
20 | + name: sj_wmp | |
21 | + # Datasource configuration - postgresql | |
22 | +# datasource: | |
23 | +# driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy | |
24 | +# username: root | |
25 | +# password: 1234 | |
26 | +# url: jdbc:log4jdbc:postgresql://localhost/test?currentSchema=public | |
27 | + | |
28 | + # Datasource configuration - mariaDB | |
29 | + datasource: | |
30 | + driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy | |
31 | + username: root | |
32 | + password: 1234 | |
33 | + url: jdbc:log4jdbc:mariadb://localhost/test | |
34 | + | |
35 | +mybatis: | |
36 | + type-aliases-package: com.takensoft.**.**.vo, com.takensoft.**.**.dto, com.takensoft.common | |
37 | + mapper-locations: classpath:mybatis/mapper/**/*-SQL.xml | |
38 | + configuration: | |
39 | + cache-enabled: true # mapper ?? ?? ???? | |
40 | + lazy-loading-enabled: false # MyBatis ?? ?? ???? | |
41 | + multiple-result-sets-enabled: true # ? ?? ???? ?? ?? ResultSet ?? ?? | |
42 | + use-column-label: true # ??? ?? ?? ?? ?? ?? | |
43 | + use-generated-keys: false # ? ?? ?? | |
44 | + default-executor-type: SIMPLE | |
45 | + default-statement-timeout: 25000 | |
46 | + call-setters-on-nulls: true | |
47 | + map-underscore-to-camel-case: true # ????? ??(파일 끝에 줄바꿈 문자 없음) |
+++ src/main/resources/mybatis/mapper/test/test-SQL.xml
... | ... | @@ -0,0 +1,21 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.takensoft.sj_wmp.wmp.test.dao.TestDAO"> | |
4 | + <!-- | |
5 | + 작 성 자 : 방선주 | |
6 | + 작 성 일 : 2024.07.05 | |
7 | + 내 용 : 테스트 xml | |
8 | + --> | |
9 | + <select id="testList" resultType="HashMap"> | |
10 | + SELECT authrt_cd | |
11 | + , authrt_nm | |
12 | + , authrt_expln | |
13 | + , use_yn | |
14 | + , sys_pvsn_yn | |
15 | + , rgtr | |
16 | + , reg_dt | |
17 | + , mdfr | |
18 | + , mdfcn_dt | |
19 | + FROM authrt_info | |
20 | + </select> | |
21 | +</mapper>(파일 끝에 줄바꿈 문자 없음) |
+++ src/test/java/com/takensoft/sj_wmp/SjWmpApplicationTests.java
... | ... | @@ -0,0 +1,13 @@ |
1 | +package com.takensoft.sj_wmp; | |
2 | + | |
3 | +import org.junit.jupiter.api.Test; | |
4 | +import org.springframework.boot.test.context.SpringBootTest; | |
5 | + | |
6 | +@SpringBootTest | |
7 | +class SjWmpApplicationTests { | |
8 | + | |
9 | + @Test | |
10 | + void contextLoads() { | |
11 | + } | |
12 | + | |
13 | +} |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?