From 6e48265d575651904b7d335403e7b912dd2226ff Mon Sep 17 00:00:00 2001 From: onpyeong Date: Sat, 22 Apr 2023 16:16:42 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=ED=95=84=EC=9A=94=EC=97=86=EB=8A=94=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes JavaStudy/.idea/.gitignore | 8 - JavaStudy/.idea/misc.xml | 6 - JavaStudy/.idea/modules.xml | 8 - JavaStudy/.idea/vcs.xml | 6 - JavaStudy/JavaStudy.iml | 11 - JavaStudy/src/Main.java | 24 -- {JavaStudy => ThirdSeminar}/.gitignore | 24 +- ThirdSeminar/build.gradle | 30 +++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 60756 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + ThirdSeminar/gradlew | 240 ++++++++++++++++++ ThirdSeminar/gradlew.bat | 91 +++++++ ThirdSeminar/settings.gradle | 1 + .../ThirdSeminar/ThirdSeminarApplication.java | 13 + .../main}/resources/application.properties | 0 .../ThirdSeminarApplicationTests.java | 13 + firstSeminar/.DS_Store | Bin 6148 -> 0 bytes .../.gradle/7.6.1/checksums/checksums.lock | Bin 17 -> 0 bytes .../.gradle/7.6.1/checksums/md5-checksums.bin | Bin 27547 -> 0 bytes .../7.6.1/checksums/sha1-checksums.bin | Bin 42851 -> 0 bytes .../dependencies-accessors.lock | Bin 17 -> 0 bytes .../dependencies-accessors/gc.properties | 0 .../executionHistory/executionHistory.lock | Bin 17 -> 0 bytes .../.gradle/7.6.1/fileChanges/last-build.bin | Bin 1 -> 0 bytes .../.gradle/7.6.1/fileHashes/fileHashes.lock | Bin 17 -> 0 bytes firstSeminar/.gradle/7.6.1/gc.properties | 0 .../buildOutputCleanup.lock | Bin 17 -> 0 bytes .../buildOutputCleanup/cache.properties | 2 - firstSeminar/.gradle/vcs-1/gc.properties | 0 firstSeminar/.idea/.gitignore | 8 - firstSeminar/.idea/compiler.xml | 6 - firstSeminar/.idea/gradle.xml | 19 -- firstSeminar/.idea/jarRepositories.xml | 20 -- firstSeminar/.idea/misc.xml | 8 - firstSeminar/.idea/vcs.xml | 6 - firstSeminar/HELP.md | 27 -- firstSeminar/src/.DS_Store | Bin 6148 -> 0 bytes firstSeminar/src/main/.DS_Store | Bin 6148 -> 0 bytes 39 files changed, 409 insertions(+), 167 deletions(-) delete mode 100644 JavaStudy/.idea/.gitignore delete mode 100644 JavaStudy/.idea/misc.xml delete mode 100644 JavaStudy/.idea/modules.xml delete mode 100644 JavaStudy/.idea/vcs.xml delete mode 100644 JavaStudy/JavaStudy.iml delete mode 100644 JavaStudy/src/Main.java rename {JavaStudy => ThirdSeminar}/.gitignore (68%) create mode 100644 ThirdSeminar/build.gradle create mode 100644 ThirdSeminar/gradle/wrapper/gradle-wrapper.jar create mode 100644 ThirdSeminar/gradle/wrapper/gradle-wrapper.properties create mode 100755 ThirdSeminar/gradlew create mode 100644 ThirdSeminar/gradlew.bat create mode 100644 ThirdSeminar/settings.gradle create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/ThirdSeminarApplication.java rename {firstSeminar/out/production => ThirdSeminar/src/main}/resources/application.properties (100%) create mode 100644 ThirdSeminar/src/test/java/sopt/org/ThirdSeminar/ThirdSeminarApplicationTests.java delete mode 100644 firstSeminar/.DS_Store delete mode 100644 firstSeminar/.gradle/7.6.1/checksums/checksums.lock delete mode 100644 firstSeminar/.gradle/7.6.1/checksums/md5-checksums.bin delete mode 100644 firstSeminar/.gradle/7.6.1/checksums/sha1-checksums.bin delete mode 100644 firstSeminar/.gradle/7.6.1/dependencies-accessors/dependencies-accessors.lock delete mode 100644 firstSeminar/.gradle/7.6.1/dependencies-accessors/gc.properties delete mode 100644 firstSeminar/.gradle/7.6.1/executionHistory/executionHistory.lock delete mode 100644 firstSeminar/.gradle/7.6.1/fileChanges/last-build.bin delete mode 100644 firstSeminar/.gradle/7.6.1/fileHashes/fileHashes.lock delete mode 100644 firstSeminar/.gradle/7.6.1/gc.properties delete mode 100644 firstSeminar/.gradle/buildOutputCleanup/buildOutputCleanup.lock delete mode 100644 firstSeminar/.gradle/buildOutputCleanup/cache.properties delete mode 100644 firstSeminar/.gradle/vcs-1/gc.properties delete mode 100644 firstSeminar/.idea/.gitignore delete mode 100644 firstSeminar/.idea/compiler.xml delete mode 100644 firstSeminar/.idea/gradle.xml delete mode 100644 firstSeminar/.idea/jarRepositories.xml delete mode 100644 firstSeminar/.idea/misc.xml delete mode 100644 firstSeminar/.idea/vcs.xml delete mode 100644 firstSeminar/HELP.md delete mode 100644 firstSeminar/src/.DS_Store delete mode 100644 firstSeminar/src/main/.DS_Store diff --git a/.DS_Store b/.DS_Store index 9929b3462e7e8e1393e8525c10e624fbf7e75ed5..48a506d1514d7b05660eeb156377a92e9fd9b6ad 100644 GIT binary patch delta 82 zcmZoMXfc=|#>CJ*u~2NHo}wrd0|Nsi1A_nqgD-L mY`(yJfN3*32R{c;)8>QB-B)qu~2NHo}wr#0|Nsi1A_nqLkUALLn=cqLncGsW=6*4jQk)e9)>ia zKoLVRL&?N*vh|KYA-(@#0A!&^BXlz)G88417Z)Vu_{re$t*50Fu2CZ#LU9V z#?H>k&dnYhoRME1T#{H)TI`fq6b<5q$kKs7PpnRzMsZ+`RlQuooB@f!+rLUMLNtx`7NN{{uZJ4hpi+04$t&jAcqVAy?Up3E;|C;&3I0VEAZ3=EqCM7A&k04fPxwEzGB diff --git a/JavaStudy/.idea/.gitignore b/JavaStudy/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/JavaStudy/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/JavaStudy/.idea/misc.xml b/JavaStudy/.idea/misc.xml deleted file mode 100644 index e0844bc..0000000 --- a/JavaStudy/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/JavaStudy/.idea/modules.xml b/JavaStudy/.idea/modules.xml deleted file mode 100644 index 4d73229..0000000 --- a/JavaStudy/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/JavaStudy/.idea/vcs.xml b/JavaStudy/.idea/vcs.xml deleted file mode 100644 index 6c0b863..0000000 --- a/JavaStudy/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/JavaStudy/JavaStudy.iml b/JavaStudy/JavaStudy.iml deleted file mode 100644 index c90834f..0000000 --- a/JavaStudy/JavaStudy.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/JavaStudy/src/Main.java b/JavaStudy/src/Main.java deleted file mode 100644 index b97c473..0000000 --- a/JavaStudy/src/Main.java +++ /dev/null @@ -1,24 +0,0 @@ -// Press ⇧ twice to open the Search Everywhere dialog and type `show whitespaces`, -// then press Enter. You can now see whitespace characters in your code. -public class Main { - public static void main(String[] args) { - // Press ⌥⏎ with your caret at the highlighted text to see how - // IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - String str = new String("abcde"); - System.out.println(str.charAt(0)); - -// Loop1 : for(int i = 2; i <= 9; i++) { -// for(int j = 1; j <= 9; j++) { -// if(j == 5) -// break Loop1; -//// break; -//// continue Loop1; -//// continue; -// System.out.println(i + "*" + j + "=" + i*j); -// } -// System.out.println(); -// } - } -} \ No newline at end of file diff --git a/JavaStudy/.gitignore b/ThirdSeminar/.gitignore similarity index 68% rename from JavaStudy/.gitignore rename to ThirdSeminar/.gitignore index f68d109..c2065bc 100644 --- a/JavaStudy/.gitignore +++ b/ThirdSeminar/.gitignore @@ -1,9 +1,11 @@ -### IntelliJ IDEA ### -out/ -!**/src/main/**/out/ -!**/src/test/**/out/ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ -### Eclipse ### +### STS ### .apt_generated .classpath .factorypath @@ -15,6 +17,15 @@ bin/ !**/src/main/**/bin/ !**/src/test/**/bin/ +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + ### NetBeans ### /nbproject/private/ /nbbuild/ @@ -24,6 +35,3 @@ bin/ ### VS Code ### .vscode/ - -### Mac OS ### -.DS_Store \ No newline at end of file diff --git a/ThirdSeminar/build.gradle b/ThirdSeminar/build.gradle new file mode 100644 index 0000000..ba82953 --- /dev/null +++ b/ThirdSeminar/build.gradle @@ -0,0 +1,30 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '2.7.11' + id 'io.spring.dependency-management' version '1.0.15.RELEASE' +} + +group = 'sopt.org' +version = '0.0.1-SNAPSHOT' +sourceCompatibility = '11' + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-web' + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/ThirdSeminar/gradle/wrapper/gradle-wrapper.jar b/ThirdSeminar/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..249e5832f090a2944b7473328c07c9755baa3196 GIT binary patch literal 60756 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/ThirdSeminar/gradlew.bat b/ThirdSeminar/gradlew.bat new file mode 100644 index 0000000..53a6b23 --- /dev/null +++ b/ThirdSeminar/gradlew.bat @@ -0,0 +1,91 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/ThirdSeminar/settings.gradle b/ThirdSeminar/settings.gradle new file mode 100644 index 0000000..397b799 --- /dev/null +++ b/ThirdSeminar/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'ThirdSeminar' diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/ThirdSeminarApplication.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/ThirdSeminarApplication.java new file mode 100644 index 0000000..e152738 --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/ThirdSeminarApplication.java @@ -0,0 +1,13 @@ +package sopt.org.ThirdSeminar; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ThirdSeminarApplication { + + public static void main(String[] args) { + SpringApplication.run(ThirdSeminarApplication.class, args); + } + +} diff --git a/firstSeminar/out/production/resources/application.properties b/ThirdSeminar/src/main/resources/application.properties similarity index 100% rename from firstSeminar/out/production/resources/application.properties rename to ThirdSeminar/src/main/resources/application.properties diff --git a/ThirdSeminar/src/test/java/sopt/org/ThirdSeminar/ThirdSeminarApplicationTests.java b/ThirdSeminar/src/test/java/sopt/org/ThirdSeminar/ThirdSeminarApplicationTests.java new file mode 100644 index 0000000..c6d451e --- /dev/null +++ b/ThirdSeminar/src/test/java/sopt/org/ThirdSeminar/ThirdSeminarApplicationTests.java @@ -0,0 +1,13 @@ +package sopt.org.ThirdSeminar; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ThirdSeminarApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/firstSeminar/.DS_Store b/firstSeminar/.DS_Store deleted file mode 100644 index 5bdf4a58bd858fad4f6264770f04e3908f53ad62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 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

gd!#*u*m@)sdnVCl`Gqp5 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 - - - - - \ No newline at end of file diff --git a/firstSeminar/.idea/gradle.xml b/firstSeminar/.idea/gradle.xml deleted file mode 100644 index 21b8360..0000000 --- a/firstSeminar/.idea/gradle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/firstSeminar/.idea/jarRepositories.xml b/firstSeminar/.idea/jarRepositories.xml deleted file mode 100644 index fdc392f..0000000 --- a/firstSeminar/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/firstSeminar/.idea/misc.xml b/firstSeminar/.idea/misc.xml deleted file mode 100644 index 3e79c5f..0000000 --- a/firstSeminar/.idea/misc.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/firstSeminar/.idea/vcs.xml b/firstSeminar/.idea/vcs.xml deleted file mode 100644 index 6c0b863..0000000 --- a/firstSeminar/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/firstSeminar/HELP.md b/firstSeminar/HELP.md deleted file mode 100644 index 3cd0038..0000000 --- a/firstSeminar/HELP.md +++ /dev/null @@ -1,27 +0,0 @@ -# Read Me First -The following was discovered as part of building this project: - -* The original package name 'sopt.org.firstSeminar' is invalid and this project uses 'sopt.org.firstSeminar' instead. - -# Getting Started - -### Reference Documentation -For further reference, please consider the following sections: - -* [Official Gradle documentation](https://docs.gradle.org) -* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.7.10/gradle-plugin/reference/html/) -* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.7.10/gradle-plugin/reference/html/#build-image) -* [Spring Web](https://docs.spring.io/spring-boot/docs/2.7.10/reference/htmlsingle/#web) - -### Guides -The following guides illustrate how to use some features concretely: - -* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/) -* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/) -* [Building REST services with Spring](https://spring.io/guides/tutorials/rest/) - -### Additional Links -These additional references should also help you: - -* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle) - diff --git a/firstSeminar/src/.DS_Store b/firstSeminar/src/.DS_Store deleted file mode 100644 index b224aadfbb167d26f07a6b86d5d1627b72216fde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!AiqG5Z!H~X(&Pt3Oz1(E!x&16fZH>gI6PZP^pP28ceg&ruI+@IqMJkCH{`i z>~0HMJqaRZ24>%8c4ou84Lcde8286jJo3ZgB|e==nMU(@7@a5mNzdIpl35-mS%0VklDH2pR~JbZ%ZV??Sv*p) zfnIQ&iqmsz(`mcatczx+F{_Jdr`4#7_TK(%=2W(}cMnc`59uJ2&zgD;-=&fbgL8O+ z$s(VpV3?&cy93+Yf9^*}3=jjvz$!9e?z&2K6_cZ!hyh~YR}A3&AV3j4gM~(Qb-IFj1u#e6bYQK$U=9-~`Y!SZD+b2>l2s8fYK}{*-|a*MC&8 diff --git a/firstSeminar/src/main/.DS_Store b/firstSeminar/src/main/.DS_Store deleted file mode 100644 index 57c199252d77eca1d362282af647faa9ba05270b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKL66cv6n+CJG{l6%nsA(CuS5Zf3GveHvWLBHjULn>1)`0$Lntf+B#~I{rlkcX52cvH2G?h=JTZ`q_a6v z-o8%rnb|~UozDu(jom;HG=g!fz1=_wJ}>lGI&^eW zzW7l7$;wwK%03 zv-RLD`K;CO_i#4OD;@rzAh1UyrTa{vrImJZPalOF*qgEXSRUsd2czWrMR From 92619c48e483589cd3b6182d10d911ad83f39b5e Mon Sep 17 00:00:00 2001 From: onpyeong Date: Sun, 30 Apr 2023 02:50:52 +0900 Subject: [PATCH 2/2] =?UTF-8?q?3=EC=A3=BC=EC=B0=A8=20=EA=B8=B0=EB=B3=B8?= =?UTF-8?q?=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes ThirdSeminar/build.gradle | 5 +++ ThirdSeminar/src/main/java/sopt/org/.DS_Store | Bin 0 -> 6148 bytes .../main/java/sopt/org/ThirdSeminar/.DS_Store | Bin 0 -> 6148 bytes .../sopt/org/ThirdSeminar/common/.DS_Store | Bin 0 -> 6148 bytes .../advice/ControllerExceptionAdvice.java | 21 +++++++++++ .../common/dto/ApiResponseDto.java | 30 ++++++++++++++++ .../controller/UserController.java | 28 +++++++++++++++ .../dto/request/UserRequestDto.java | 30 ++++++++++++++++ .../dto/response/UserResponseDto.java | 17 +++++++++ .../sopt/org/ThirdSeminar/domain/User.java | 26 ++++++++++++++ .../ThirdSeminar/exception/ErrorStatus.java | 33 ++++++++++++++++++ .../ThirdSeminar/exception/SuccessStatus.java | 19 ++++++++++ .../infrastructure/UserRepository.java | 8 +++++ .../org/ThirdSeminar/service/UserService.java | 29 +++++++++++++++ .../src/main/resources/application.properties | 1 - .../src/main/resources/application.yaml | 20 +++++++++++ 17 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 ThirdSeminar/src/main/java/sopt/org/.DS_Store create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/.DS_Store create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/common/.DS_Store create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/common/advice/ControllerExceptionAdvice.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/common/dto/ApiResponseDto.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/UserController.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/dto/request/UserRequestDto.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/dto/response/UserResponseDto.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/domain/User.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/exception/ErrorStatus.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/exception/SuccessStatus.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/infrastructure/UserRepository.java create mode 100644 ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/service/UserService.java delete mode 100644 ThirdSeminar/src/main/resources/application.properties create mode 100644 ThirdSeminar/src/main/resources/application.yaml diff --git a/.DS_Store b/.DS_Store index 48a506d1514d7b05660eeb156377a92e9fd9b6ad..c4996b171274cf5853cd7909ea3a7e4a35fb5dc8 100644 GIT binary patch literal 6148 zcmeHK&2G~`5S~p_V$)XS08%eVD{+lV5*0zk#RT^Nf=gY|1E65Xrm^aHBim_&qDbZn z&w{w}06YWNz6P9N_9vWbgbs}#T!Rqnzh^CNNuCOd9Bef8(WRn&X7%=%*`fg&rM$Pt7FC@Z&7!> z7hy2%H*Y>>aps0`kO)HP2N?3|B#eDF?XgMhr-JLq4%0Nuesgy=>)gNBqTL7k^A?>Q zblWYuf6$%JP2<*`yAO~0XVEBTAB4g{Fs};RQMiDQSXraZxs${Zi@E-Mgl#y6p?Jq@ zH6(o0;u~JcyCMp%oZpgun{a~rS^#IzDX&*t%Vot1kc!o<cB!A z0TAohEDY=XEWtTcp`|dFh&^aTQV}JUs3QiEbZn<8&Qh35lyo5K@Ilm_i8`SWad#Y_ zif|y7L|tkHv;t)XHsocK@BfFZ&;MnTzS0V41+J6=q;5NQ52vK|*2?7gUQ5y6pmXDK oxkN$1LT$&Q!nfjGbYa*>c?Ho@m`lVKH2otWWYC3H;GZh+3%3*pYXATM delta 85 zcmZoMXfc=|#>CJ*u~2NHo}wrd0|Nsi1A_nqgD-_4-0%K@NuD6Ar+&dm&5E2bW#r$cE?E`owssoK8SG7^@sW;{hnra z*GSBl9wKB0X203lnOpYTV`motM0*-G04e}bLM6;O*!&md~S8zFemhap6e ztVOfqKQcgjw+CGq;GU)MegAw&gV}f##45m;_h1x9<4L{#A#(Y`&Tg^j6wAd2Z=h!0 z#Gg#ZZ9l!EURS9&SlWJY6ZL1k%E6^dCVrIkQ=JfneGIw3jgnB!+G?7FW1Z`n0mmsh zy-IaHZ=9agWb>@GsLAKL6gfYwfWga6lzzi@0+suGH^GfAyUL>!L8DIu}#Q>cT5|z-km>JYZ2R3wlr11hF z3EK3QAe0tei_Jtz!?C6&|9E59- zTV{Y6SY;q@x)rMbSDWAet4Z8r2AF}ZVn7r+UZ;&qvbA+>aa3z1>LV%%#bpM+Qqa() g7-OjvS5dW~Uy_07TFeZh2Zb*Jng(u|fj?#76WpFo_W%F@ literal 0 HcmV?d00001 diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/.DS_Store b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3fc81ac0fc6856c688e13a920d0bc10dcadfffff GIT binary patch literal 6148 zcmeHK%Wl&^6upy%CT<1F0;DcLvcxtjX;efjHfbmewzz@?pkUXA8XQmLI0;e|DQox# zet|7t!oRSBbMH)~xPdK-&|GWg%;Ua%;+e@1k?K$4Bcc`&HBlJrd#L^(JkMoAYIei} zD)FHyf0pUXDAUn~wi|E^I0m+j0baYibV-_qc&h7{H-$5l!(SqjdPO&yjYoE^e~(64 zIxah%AF8%fzp>kBc#ZwWo8U^%f-)>8<9=AY;@*YUS+r`0(Tg;h4O+LK=)4TmJSoH= zjT5N6ewpU6p7r%4kH=ygm*A~!9r;0qd+cbW!8p6UEO#@S|1xXG!c0_zz&T!rPE%r+9kWWZs$!h}pk|r2Qs+p;u*K8ZG zK>jp^55%l$*Z7^+Bi*G7x`JjwF$J(2O5_mzGh{mg7wjcm#8 z5XQ+CFksh2bAJnRaVaGLm6|7`&O@KacR()ld_i&Wg{zlLs1eP{(Vs=)ida7$ADv?%D|54w)p&i z`uF>P)yVZ61CD|JiUCzW56=5|C407Ryd0mkKFV7Z7S>xD6cbeTIF<$<#Rn)NnDe;- W>{(nI#0bRw5fB<&25(T1B;$=lVcy)~))Zi{lbmO`uu*iXs>{&m?t6$>p z=uBIT1iTtGGs*O|)0y4&wdu3~AezIl22cio5-MTN!D4|>Kk1z0tfhb`^fx-tJ&9E( zh*dD>&4%B|0Il6J_z=P)L@>L4v?&fzx8Akr;pfpa1@&c>$?IjYS1=m%>|S^cdT}&J ztJOD=%NLfGi$$lnQoQ!=)W}QybU0}G{Yz?{DHR9Px*wcJ-BG)|cBGQjkCJX*2Si~P zU9K*oBvhlO8YbaD$9ks2aY|0RyfGfv_I4|>zP~f6$Z?}yt;n55eKK)M>zmsLr|tXr zAyH3yRv>WyYFV{7g=ehTIX`;+Bv#2STBhDpFGgm78DIwf76bMaE3N#kVe@F20cPL_ z7@+e(q7u3mGlTl*z(PL(5a}AJ1?zMnq!?+@wU`;i9u#3h5lyJDPYhwg(Jrl@YcVru z!a>-_hp>MZ_Jtz!-|_oWyMu5Ia>)!Z1G5a|O|wk-|M>g&|7;Mqm;q+sUojvGEw9zY zDcRgQH#y3+67>d^g#0ptpCMS$sTh4J6>p$wLA#_1qH8fTh!zyS2xuC(U { + + private final int code; + private final String message; + private T data; + + public static ApiResponseDto success(SuccessStatus successStatus){ + return new ApiResponseDto<>(successStatus.getHttpStatus().value(), successStatus.getMessage()); + } + + public static ApiResponseDto success(SuccessStatus successStatus, T data) { + return new ApiResponseDto(successStatus.getHttpStatus().value(), successStatus.getMessage(), data); + } + + public static ApiResponseDto error(ErrorStatus errorStatus) { + return new ApiResponseDto<>(errorStatus.getHttpStatus().value(), errorStatus.getMessage()); + } +} diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/UserController.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/UserController.java new file mode 100644 index 0000000..cac7283 --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/UserController.java @@ -0,0 +1,28 @@ +package sopt.org.ThirdSeminar.controller; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; +import sopt.org.ThirdSeminar.common.dto.ApiResponseDto; +import sopt.org.ThirdSeminar.controller.dto.request.UserRequestDto; +import sopt.org.ThirdSeminar.controller.dto.response.UserResponseDto; +import sopt.org.ThirdSeminar.exception.SuccessStatus; +import sopt.org.ThirdSeminar.service.UserService; + +import javax.validation.Valid; + +@RestController +@RequiredArgsConstructor +public class UserController { + + private final UserService userService; + + @PostMapping("/user/signup") + @ResponseStatus(HttpStatus.CREATED) + public ApiResponseDto create(@RequestBody @Valid final UserRequestDto request) { + return ApiResponseDto.success(SuccessStatus.SIGNUP_SUCCESS, userService.create(request)); + } +} diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/dto/request/UserRequestDto.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/dto/request/UserRequestDto.java new file mode 100644 index 0000000..813fdf9 --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/dto/request/UserRequestDto.java @@ -0,0 +1,30 @@ +package sopt.org.ThirdSeminar.controller.dto.request; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; + +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class UserRequestDto { + + @Email(message = "이메일 형식에 맞지 않습니다.") + @NotNull + private String email; + + @NotBlank + @Pattern(regexp = "^[가-힣a-zA-Z]{2,10}$", message = "닉네임 형식에 맞지 않습니다.") + private String nickname; + + @NotBlank + @Pattern( + regexp = "(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=\\S+$).{8,20}" + , message = "비밀번호는 영문 대,소문자와 숫자, 특수기호가 적어도 1개 이상씩 포함된 8자 ~ 20자의 비밀번호여야 합니다." + ) + private String password; +} \ No newline at end of file diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/dto/response/UserResponseDto.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/dto/response/UserResponseDto.java new file mode 100644 index 0000000..591b7d6 --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/controller/dto/response/UserResponseDto.java @@ -0,0 +1,17 @@ +package sopt.org.ThirdSeminar.controller.dto.response; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class UserResponseDto { + + private Long userId; + private String nickname; + + public static UserResponseDto of(Long userId, String nickname) { + return new UserResponseDto(userId, nickname); + } +} diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/domain/User.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/domain/User.java new file mode 100644 index 0000000..a4bb13b --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/domain/User.java @@ -0,0 +1,26 @@ +package sopt.org.ThirdSeminar.domain; + +import lombok.*; +import javax.persistence.*; +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @Column(nullable = false) + private String nickname; + @Column(nullable = false) + private String email; + @Column(nullable = false) + private String password; + @Builder + public User(String nickname, String email, String password) { + this.nickname = nickname; + this.email = email; + this.password = password; + } + +} diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/exception/ErrorStatus.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/exception/ErrorStatus.java new file mode 100644 index 0000000..e432536 --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/exception/ErrorStatus.java @@ -0,0 +1,33 @@ +package sopt.org.ThirdSeminar.exception; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; + +@Getter +@RequiredArgsConstructor(access = AccessLevel.PRIVATE) +public enum ErrorStatus { + /* + BAD_REQUEST + */ + VALIDATION_EXCEPTION(HttpStatus.BAD_REQUEST, "잘못된 요청입니다."), + VALIDATION_REQUEST_MISSING_EXCEPTION(HttpStatus.BAD_REQUEST, "요청값이 입력되지 않았습니다."), + + /* + CONFLICT + */ + CONFLICT_EMAIL_EXCEPTION(HttpStatus.BAD_REQUEST, "이미 등록된 이메일입니다."), + CONFLICT_NICKNAME_EXCEPTION(HttpStatus.BAD_REQUEST, "이미 등록된 닉네임입니다."), + + /* + SERVER_ERROR + */ + INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "예상치 못한 서버 에러가 발생했습니다."), + BAD_GATEWAY_EXCEPTION(HttpStatus.BAD_GATEWAY, "일시적인 에러가 발생하였습니다.\n잠시 후 다시 시도해주세요!"), + SERVICE_UNAVAILABLE_EXCEPTION(HttpStatus.SERVICE_UNAVAILABLE, "현재 점검 중입니다.\n잠시 후 다시 시도해주세요!"), + ; + + private final HttpStatus httpStatus; + private final String message; +} diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/exception/SuccessStatus.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/exception/SuccessStatus.java new file mode 100644 index 0000000..e7fcf27 --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/exception/SuccessStatus.java @@ -0,0 +1,19 @@ +package sopt.org.ThirdSeminar.exception; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; + +@Getter +@RequiredArgsConstructor(access = AccessLevel.PRIVATE) +public enum SuccessStatus { + /* + user + */ + SIGNUP_SUCCESS(HttpStatus.CREATED, "회원가입이 완료되었습니다."), + ; + + private final HttpStatus httpStatus; + private final String message; +} diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/infrastructure/UserRepository.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/infrastructure/UserRepository.java new file mode 100644 index 0000000..db2ed60 --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/infrastructure/UserRepository.java @@ -0,0 +1,8 @@ +package sopt.org.ThirdSeminar.infrastructure; + +import org.springframework.data.repository.Repository; +import sopt.org.ThirdSeminar.domain.User; + +public interface UserRepository extends Repository { + void save(User user); +} diff --git a/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/service/UserService.java b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/service/UserService.java new file mode 100644 index 0000000..3c00b5b --- /dev/null +++ b/ThirdSeminar/src/main/java/sopt/org/ThirdSeminar/service/UserService.java @@ -0,0 +1,29 @@ +package sopt.org.ThirdSeminar.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import sopt.org.ThirdSeminar.controller.dto.request.UserRequestDto; +import sopt.org.ThirdSeminar.controller.dto.response.UserResponseDto; +import sopt.org.ThirdSeminar.domain.User; +import sopt.org.ThirdSeminar.infrastructure.UserRepository; + +@Service +@RequiredArgsConstructor +public class UserService { + + private final UserRepository userRepository; + + @Transactional + public UserResponseDto create(UserRequestDto request) { + User user = User.builder() + .email(request.getEmail()) + .nickname(request.getNickname()) + .password(request.getPassword()) + .build(); + + userRepository.save(user); + + return UserResponseDto.of(user.getId(), user.getNickname()); + } +} diff --git a/ThirdSeminar/src/main/resources/application.properties b/ThirdSeminar/src/main/resources/application.properties deleted file mode 100644 index 8b13789..0000000 --- a/ThirdSeminar/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ThirdSeminar/src/main/resources/application.yaml b/ThirdSeminar/src/main/resources/application.yaml new file mode 100644 index 0000000..7a5e2cb --- /dev/null +++ b/ThirdSeminar/src/main/resources/application.yaml @@ -0,0 +1,20 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/sopt_32?useSSL=true&useUnicode=true&serverTimezone=Asia/Seoul + username: sopt_server + password: Qwer1234! + jpa: + show-sql: true + hibernate: + ddl-auto: update + properties: + hibernate: + format_sql: true +logging: + level: + org: + hibernate: + type: + descriptor: + sql: trace \ No newline at end of file