From 92835afaa9b1ed481e20784a751f9b5d7d284f46 Mon Sep 17 00:00:00 2001 From: chjpooh2002 Date: Sun, 6 Sep 2026 12:25:35 +0900 Subject: [PATCH 1/6] =?UTF-8?q?chore:=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=20=EC=B4=88=EA=B8=B0=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 3 + .gitignore | 81 ++++++ build.gradle | 29 ++ gradle/wrapper/gradle-wrapper.properties | 9 + gradlew | 248 ++++++++++++++++++ gradlew.bat | 82 ++++++ settings.gradle | 1 + .../com/ceos24/springboot/Application.java | 13 + src/main/resources/application.yaml | 3 + .../ceos24/springboot/ApplicationTests.java | 13 + 10 files changed, 482 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/com/ceos24/springboot/Application.java create mode 100644 src/main/resources/application.yaml create mode 100644 src/test/java/com/ceos24/springboot/ApplicationTests.java diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8af972c --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df36a58 --- /dev/null +++ b/.gitignore @@ -0,0 +1,81 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +*# +*.iml +*.ipr +*.iws +*.jar +*.sw? +*~ +.#* +.*.md.html +.DS_Store +.attach_pid* +.classpath +.factorypath +.gradle +.metadata +.project +.recommenders +.settings +.springBeans +.vscode +/code +MANIFEST.MF +_site/ +activemq-data +bin +build +!/**/src/**/bin +!/**/src/**/build +build.log +dependency-reduced-pom.xml +dump.rdb +interpolated*.xml +lib/ +manifest.yml +out +overridedb.* +target +.flattened-pom.xml +secrets.yml +.gradletasknamecache +.sts4-cache + +.idea diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..e0051b3 --- /dev/null +++ b/build.gradle @@ -0,0 +1,29 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '4.1.1' + id 'io.spring.dependency-management' version '1.1.7' +} + +group = 'com.ceos24' +version = '0.0.1-SNAPSHOT' +description = 'Demo project for Spring Boot' + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-webmvc' + testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..ad7845b --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,9 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip +networkTimeout=10000 +retries=0 +retryBackOffMs=500 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..249efbb --- /dev/null +++ b/gradlew @@ -0,0 +1,248 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# gradlew start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh gradlew +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# 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 + + + +# 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 + if ! command -v java >/dev/null 2>&1 + then + 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 +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + 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" ) + + 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 + + +# 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"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# 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/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..a51ec4f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,82 @@ +@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 +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem gradlew startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +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. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:execute +@rem Setup the command line + + + +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel + +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..19b5204 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'spring-boot' diff --git a/src/main/java/com/ceos24/springboot/Application.java b/src/main/java/com/ceos24/springboot/Application.java new file mode 100644 index 0000000..5edd6ed --- /dev/null +++ b/src/main/java/com/ceos24/springboot/Application.java @@ -0,0 +1,13 @@ +package com.ceos24.springboot; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml new file mode 100644 index 0000000..f3cad2b --- /dev/null +++ b/src/main/resources/application.yaml @@ -0,0 +1,3 @@ +spring: + application: + name: spring-boot diff --git a/src/test/java/com/ceos24/springboot/ApplicationTests.java b/src/test/java/com/ceos24/springboot/ApplicationTests.java new file mode 100644 index 0000000..8285b1a --- /dev/null +++ b/src/test/java/com/ceos24/springboot/ApplicationTests.java @@ -0,0 +1,13 @@ +package com.ceos24.springboot; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ApplicationTests { + + @Test + void contextLoads() { + } + +} From 52d9650543a02edf7e9ae79fc53f22e1f539c885 Mon Sep 17 00:00:00 2001 From: chjpooh2002 Date: Sun, 6 Sep 2026 12:47:02 +0900 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20HelloController=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=B0=8F=20Application=20class=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ceos24/spring_boot/Application.java | 34 +++++++++++++++++++ .../ceos24/spring_boot/HelloController.java | 13 +++++++ .../com/ceos24/springboot/Application.java | 13 ------- .../ApplicationTests.java | 2 +- 4 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/ceos24/spring_boot/Application.java create mode 100644 src/main/java/com/ceos24/spring_boot/HelloController.java delete mode 100644 src/main/java/com/ceos24/springboot/Application.java rename src/test/java/com/ceos24/{springboot => spring_boot}/ApplicationTests.java (84%) diff --git a/src/main/java/com/ceos24/spring_boot/Application.java b/src/main/java/com/ceos24/spring_boot/Application.java new file mode 100644 index 0000000..f95a7cb --- /dev/null +++ b/src/main/java/com/ceos24/spring_boot/Application.java @@ -0,0 +1,34 @@ +package com.ceos24.spring_boot; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; + +import java.util.Arrays; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Bean + public CommandLineRunner commandLineRunner(ApplicationContext ctx) { + return args -> { + + System.out.println("Let's inspect the beans provided by Spring Boot:"); + + // Spring Boot 에서 제공되는 Bean 확인 + String[] beanNames = ctx.getBeanDefinitionNames(); + Arrays.sort(beanNames); + for (String beanName : beanNames) { + System.out.println(beanName); + } + + }; + } + +} diff --git a/src/main/java/com/ceos24/spring_boot/HelloController.java b/src/main/java/com/ceos24/spring_boot/HelloController.java new file mode 100644 index 0000000..f6c5a5d --- /dev/null +++ b/src/main/java/com/ceos24/spring_boot/HelloController.java @@ -0,0 +1,13 @@ +package com.ceos24.spring_boot; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloController { + + @GetMapping("/") + public String hello() { + return "Hello, Spring Boot!"; + } +} \ No newline at end of file diff --git a/src/main/java/com/ceos24/springboot/Application.java b/src/main/java/com/ceos24/springboot/Application.java deleted file mode 100644 index 5edd6ed..0000000 --- a/src/main/java/com/ceos24/springboot/Application.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ceos24.springboot; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class Application { - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } - -} diff --git a/src/test/java/com/ceos24/springboot/ApplicationTests.java b/src/test/java/com/ceos24/spring_boot/ApplicationTests.java similarity index 84% rename from src/test/java/com/ceos24/springboot/ApplicationTests.java rename to src/test/java/com/ceos24/spring_boot/ApplicationTests.java index 8285b1a..26bf847 100644 --- a/src/test/java/com/ceos24/springboot/ApplicationTests.java +++ b/src/test/java/com/ceos24/spring_boot/ApplicationTests.java @@ -1,4 +1,4 @@ -package com.ceos24.springboot; +package com.ceos24.spring_boot; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; From d5e735eff0c09949d98cd70279f8dfa106544ccb Mon Sep 17 00:00:00 2001 From: chjpooh2002 Date: Sun, 6 Sep 2026 12:53:54 +0900 Subject: [PATCH 3/6] =?UTF-8?q?test:=20HelloControllerTest=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=ED=9B=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + .../spring_boot/HelloControllerTest.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/test/java/com/ceos24/spring_boot/HelloControllerTest.java diff --git a/build.gradle b/build.gradle index e0051b3..55a5a65 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-webmvc' testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + testImplementation('org.springframework.boot:spring-boot-starter-test') } tasks.named('test') { diff --git a/src/test/java/com/ceos24/spring_boot/HelloControllerTest.java b/src/test/java/com/ceos24/spring_boot/HelloControllerTest.java new file mode 100644 index 0000000..c77cc6d --- /dev/null +++ b/src/test/java/com/ceos24/spring_boot/HelloControllerTest.java @@ -0,0 +1,30 @@ +package com.ceos24.spring_boot; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +public class HelloControllerTest { + + @Autowired + private MockMvc mvc; + + @DisplayName("HelloController의 hello() 메서드 테스트") + @Test + public void getHello() throws Exception{ + mvc.perform(get("/")) + .andExpect(status().isOk()) + .andExpect(result -> { + String response = result.getResponse().getContentAsString(); + assert response.equals("Hello, Spring Boot!"); + }); + } +} From 8975b9ac7d26046c98496562d34d3d0029fb63fd Mon Sep 17 00:00:00 2001 From: chjpooh2002 Date: Sun, 6 Sep 2026 14:15:27 +0900 Subject: [PATCH 4/6] =?UTF-8?q?chore:=20JPA,=20MySQL,=20Lombok=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20DB=20?= =?UTF-8?q?=EC=97=B0=EB=8F=99=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 6 ++++++ src/main/resources/application.yaml | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/build.gradle b/build.gradle index 55a5a65..2863495 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,12 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-webmvc' testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + runtimeOnly 'com.mysql:mysql-connector-j' + testImplementation('org.springframework.boot:spring-boot-starter-test') } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index f3cad2b..f80146f 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -1,3 +1,21 @@ spring: application: name: spring-boot + + datasource: + url: jdbc:mysql://localhost:3306/${database}?allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=UTF-8 + username: root + password: ${password} + driver-class-name: com.mysql.cj.jdbc.Driver + + jpa: + hibernate: + ddl-auto: create + show-sql: true + properties: + hibernate: + format_sql: true + +logging: + level: + org.hibernate.SQL: debug From 31a5712c16dd8c407978a5808cca359e219c3079 Mon Sep 17 00:00:00 2001 From: chjpooh2002 Date: Sun, 6 Sep 2026 14:16:28 +0900 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20Test=20=EB=8F=84=EB=A9=94=EC=9D=B8?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ceos24/spring_boot/Test.java | 14 +++++++++++++ .../ceos24/spring_boot/TestController.java | 21 +++++++++++++++++++ .../ceos24/spring_boot/TestRepository.java | 5 +++++ .../com/ceos24/spring_boot/TestService.java | 20 ++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 src/main/java/com/ceos24/spring_boot/Test.java create mode 100644 src/main/java/com/ceos24/spring_boot/TestController.java create mode 100644 src/main/java/com/ceos24/spring_boot/TestRepository.java create mode 100644 src/main/java/com/ceos24/spring_boot/TestService.java diff --git a/src/main/java/com/ceos24/spring_boot/Test.java b/src/main/java/com/ceos24/spring_boot/Test.java new file mode 100644 index 0000000..12a85b1 --- /dev/null +++ b/src/main/java/com/ceos24/spring_boot/Test.java @@ -0,0 +1,14 @@ +package com.ceos24.spring_boot; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import lombok.Data; + +@Data +@Entity +public class Test { + + @Id + private Long id; + private String name; +} diff --git a/src/main/java/com/ceos24/spring_boot/TestController.java b/src/main/java/com/ceos24/spring_boot/TestController.java new file mode 100644 index 0000000..e8cbc6c --- /dev/null +++ b/src/main/java/com/ceos24/spring_boot/TestController.java @@ -0,0 +1,21 @@ +package com.ceos24.spring_boot; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/tests") +public class TestController { + + private final TestService testService; + + @GetMapping + public List findAllTests() { + return testService.findAllTests(); + } +} diff --git a/src/main/java/com/ceos24/spring_boot/TestRepository.java b/src/main/java/com/ceos24/spring_boot/TestRepository.java new file mode 100644 index 0000000..91a43ee --- /dev/null +++ b/src/main/java/com/ceos24/spring_boot/TestRepository.java @@ -0,0 +1,5 @@ +package com.ceos24.spring_boot; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TestRepository extends JpaRepository {} diff --git a/src/main/java/com/ceos24/spring_boot/TestService.java b/src/main/java/com/ceos24/spring_boot/TestService.java new file mode 100644 index 0000000..69d7a1c --- /dev/null +++ b/src/main/java/com/ceos24/spring_boot/TestService.java @@ -0,0 +1,20 @@ +package com.ceos24.spring_boot; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class TestService { + + private final TestRepository testRepository; + + /* Read All*/ + @Transactional(readOnly = true) + public List findAllTests() { + return testRepository.findAll(); + } +} From 67f1009a1d75647b4be94007d3c8ae0cf20b8e83 Mon Sep 17 00:00:00 2001 From: chjpooh2002 Date: Tue, 8 Sep 2026 22:59:31 +0900 Subject: [PATCH 6/6] =?UTF-8?q?docs:=201=EC=A3=BC=EC=B0=A8=20=EB=AF=B8?= =?UTF-8?q?=EC=85=98=20README=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 852 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ img_1.png | Bin 0 -> 147873 bytes 2 files changed, 852 insertions(+) create mode 100644 img_1.png diff --git a/README.md b/README.md index 4162bb5..7c850dd 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,854 @@ # spring-tutorial-24th CEOS 백엔드 24기 스프링 튜토리얼 + +# 1️⃣ spring이 지원하는 기술들(IoC/DI, AOP, PSA 등)에 대해 +___ +## 1. IoC와 DI +커피를 만드는 예시 코드를 통해 IoC와 DI에 대해 알아보겠습니다. +``` java +public class CoffeeMachine { + private Grinder grinder = new ManualGrinder(); // 객체를 직접 생성 + + public void makeCoffee() { + grinder.grind(); + System.out.println("커피 완성"); + } +} +``` +위의 코드에서는 `CoffeeMachine`이 `ManualGrinder`를 직접 만들고 있습니다. 여기서 Grinder를 전동 그라인더로 바꾸려면 어떻게 해야 될까요? +``` java +private Grinder grinder = new ElectricGrinder(); // 이 줄을 수정해야 함 +``` +위와 같이 `CoffeeMachine` 코드 자체를 수정해야 됩니다. +그라인더 종류가 늘어나고, 이런 관계가 많아질수록 고쳐야되는 코드가 많아지게 됩니다. + +### 제어권 넘기기 +위의 코드와는 다르게 밖에서 만들어서 넣어주는 방식으로 코드를 수정해보겠습니다. +```java +public class CoffeeMachine { + private Grinder grinder; + + public CoffeeMachine(Grinder grinder) { // 밖에서 받음 + this.grinder = grinder; + } + + public void makeCoffee() { + grinder.grind(); + System.out.println("커피 완성"); + } +} +``` +위의 코드에서는 `CoffeeMachine`은 어떤 그라인더가 올지도 모르고 알 필요도 없습니다. +그저 `Grinder` 타입이기만 하면 됩니다. 처음의 코드에서는 `CoffeeMachine` 객체가 자신이 사용할 객체를 직접 만드는 방식이었고 두 번째 코드에서는 누가 만들어서 주는 것을 쓰는 방식입니다. + +> 즉 객체를 만들고 연결하는 제어권이 밖으로 넘어간 겁니다. 이것이 바로 IoC(Inversion of Control, 제어의 역전)입니다. + +### 밖에서 제어권을 가진 것이 바로 '스프링' +수정된 두 번째 코드에서도 결국 외부에서 `new CoffeeMachine(new ElectricGrinder())`를 호출해야 합니다. 이 역할을 수행하는 것이 바로 스프링 컨테이너입니다. +``` java +@Component +public class CoffeeMachine { + private final Grinder grinder; + + public CoffeeMachine(Grinder grinder) { + this.grinder = grinder; + } +} +``` +`@Component`를 보고 스프링이 알아서 객체를 만들고, 생성자 파라미터를 보고 알아서 `Grinder` 구현체를 찾아 넣어줍니다. +> 이렇게 필요한 객체를 외부에서 넣어주는 것을 DI(Dependency Injection), 의존성 주입이라고 합니다. IoC를 구현하는 방법에는 DI 외에도 서비스 로케이터, 템플릿 메서드 패턴 등이 있습니다. +> 공통점은 "내가 호출하는"게 아니라 "호출당하는" 구조라는 점이고, 이것을 할리우드 원칙이라고 부릅니다. +### 의존성을 주입하는 3가지 방법 +``` java +// ① 생성자 주입 -> 제일 권장되는 방식 +@Service +public class TestService { + private final TestRepository repository; + + public TestService(TestRepository repository) { + this.repository = repository; + } +} + +// ② 필드 주입 +@Service +public class TestService { + @Autowired + private TestRepository repository; +} + +// ③ setter 주입 +@Service +public class TestService { + private TestRepository repository; + + @Autowired + public void setRepository(TestRepository repository) { + this.repository = repository; + } +} +``` +DI에는 크게 `생성자 주입`, `필드 주입`, `setter 주입`이 있는데 첫 번째 `생성자 주입`이 가장 권장되는 방식입니다. +`생성자 주입`이 권장되는 이유는 크게 3가지로 아래와 같습니다. +1. `final` 사용 가능: 생성 후 바뀌지 않음이 보장됩니다. 필드 주입은 `final`이 불가능합니다. (객체가 만들어진 다음에 값을 넣기 때문) +2. 순환 참조 조기 발견: A <-> B가 서로 필요하면 어플리케이션이 뜨지 않습니다. +3. 테스트 편의: 스프링 없이 new TestService(MockRepository)로 만들 수 있습니다. + + +`@RequiredArgsConstructor` 어노테이션을 사용하여 생성자 주입을 할 수 있습니다. 이 어노테이션은 `final` 필드를 받는 생성자를 롬복이 대신 만들어주는 것이고 아래과 같은 코드에서는 생성자가 하나뿐이라 +`@Autowired`가 생략된 상태이다. +```java +@Service +@RequiredArgsConstructor +public class TestService { + private final TestRepository repository; // ← 이걸 받는 생성자가 자동 생성됨 +} +``` +## 2. AOP +### 문제 상황 +메서드가 실행될 때 로그를 남기고 싶은 상황을 생각해겠습니다. +```java +@Service +public class TestService { + + public List findAllTests() { + System.out.println("메서드 시작"); // 부가 기능 + + List result = repository.findAll(); // 진짜 하고 싶은 일 + + System.out.println("메서드 종료"); // 부가 기능 + return result; + } +} +``` +진짜 로직은 가운데 한 줄이지만 위 아래로 로그 코드가 붙은 상황입니다. 메서드가 하나면 괜찮은데 많아지면 로그와 관련된 코드를 수정할 때 모든 메서드를 수정해야 되는 문제가 있습니다. +### 횡단 관심사 +여러 곳에 흩어져서 중복되는 부가 기능을 횡단 관심사라고 합니다. +로깅이나 트랜잭션 같은 기능은 모든 계층을 가로질러 나타납니다. 그래서 횡단이라고 부르고 전형적인 예로는 로깅, 트랜잭션, 권한 검사, 캐싱, 성능 측정 등이 있습니다. + +### AOP가 하는 일 +**이 부가 기능을 별도 클래스로 빼내고, 어디에 적용할지만 지정**합니다. +```java +@Aspect +@Component +public class LogAspect { + + @Around("execution(* com.ceos24.springboot.service..*(..))") + public Object log(ProceedingJoinPoint joinPoint) throws Throwable { + System.out.println("메서드 시작"); + + Object result = joinPoint.proceed(); // 원래 메서드 실행 + + System.out.println("메서드 종료"); + return result; + } +} +``` +이제 `TestService`는 아래와 같이 됩니다. +```java +@Service +public class TestService { + + public List findAllTests() { + return repository.findAll(); // 로그 코드가 없음 + } +} +``` +로그 코드는 어디에도 없지만 실행하면 로그가 찍히게 됩니다. 그리고 로그 형식을 바꾸로 싶으면 `LogAspect` 한 곳만 고치면 됩니다. +핵심은 **관심사를 분리하는 것으로 비즈니스 로직과 부가 기능을 따로 관리**합니다. +### 어떻게 가능한 걸까 - 프록시 +`TestService` 코드에는 로그가 없는데 어떻게 로그가 찍힐 수 있을까요? +스프링이 `TestService`를 감싼 가짜 객체를 만들어서, 진짜 대신 빈으로 등록하기 때문입니다. **이 가짜 객체를 프록시**라고 합니다. +컨드롤러는 `TestService`를 주입받았다고 생각하지만, 실제로 손에 쥔 건 프록시입니다. 프록시가 부가 기능을 실행하고 진짜 객체에게 일을 넘기는 구조입니다. +```java +@RestController +@RequiredArgsConstructor +public class TestController { + private final TestService testService; + + @GetMapping("/check") + public String check() { + return testService.getClass().getName(); + } +} +``` +AOP가 적용돼 있으면 `TestService`가 아니라 `TestService$$SpringCGLIB$$0` 같은 이름이 나옵니다. 이 이름은 프록시 클래스 이름입니다. +### 프록시 때문에 생기는 함정 +```java +@Service +public class TestService { + + public void outer() { + inner(); // ← 여기가 문제 + } + + @Transactional + public void inner() { + ... + } +} +``` +`outer()`를 호출하면 `inner()`의 `@Transactional`이 동작하지 않습니다. 컨트롤러가 `outer()`를 부르면 프록시를 거칩니다. 하지만 +`outer()` 안에서 `inner()`를 부르는 건 `this.inner()`입니다. 이미 진짜 객체 안에 들어와 있으니 프록시를 다시 지나가지 않습니다. + +이걸 **자기 호출(self-invocation)문제**라고 하고, 실무에서 자주 발생합니다. 트랜잭션이 왜 안 걸리지 하고 한참 헤매게 되는 원인 1순위라고 볼 수 있습니다. +해결책은 클래스를 분리하거나, 자기 자신을 주입받거나(`@Lazy` 필요), `AopContext`를 쓰는 방법이 있는데 보통은 클래스를 나누는 것이 정석입니다. +## 3. PSA +PSA는 Portable service Abstraction의 약자로 세 가지 중 제일 추상적이라 감이 잘 안 오는 개념입니다. +**이식 가능한 서비스 추상화**라는 뜻으로 코드로 먼저 보겠습니다. +```java +@GetMapping +public List findAllTests() { + return testService.findAllTests(); +} +``` +위 코드는 톰캣에서 돌아갑니다. 그러나 Jetty나 Undertow로 바꿔도 한 글자도 고치지 않아도 됩니다. `build.gradle`에서 의존성만 교체하면 되기 때문입니다. +서블릿 컨테이너마다 내부 API가 다른데도 상관없습니다. + +즉 PSA는 특정 기술에 종속되지 않도록 일관된 추상화 계층을 제공하는 것입니다. 다른 예로 트랜잭션 관련 코드를 살펴보겠습니다. +```java +@Transactional +public void save(Test test) { + repository.save(test); +} +``` +위 코드는 JPA를 쓰든 JDBC를 쓰든 MyBatis를 쓰든 똑같습니다. 스프링이 `PlatformTransactionManager`라는 인터페이스로 추상화해두고, +실제 구현체 (`JpaTransactionManager`,`DataSourceTransactionManager` 등)를 상황에 맞게 갈아끼우기 때문입니다. +```java +public interface PlatformTransactionManager { + TransactionStatus getTransaction(TransactionDefinition definition); + void commit(TransactionStatus status); + void rollback(TransactionStatus status); +} +``` + +## 셋의 관계 +> PSA → 인터페이스로 추상화해두고 +> +> IoC/DI → 어떤 구현체를 쓸지는 컨테이너가 결정해서 주입하고 +> +> AOP → 그 적용은 프록시로 이루어진다 + + +# 2️⃣ Spring Bean과 Bean 라이프사이클/Scope에 대해 +___ +## 1. Spring Bean이란? +**스프링 빈은 스프링 컨테이너가 생성하고 관리하는 객체**입니다. +`new`로 만든 객체는 그냥 객체고, 컨테이너가 관리하면 빈입니다. 이 둘의 차이는 컨테이너가 관리하느냐 뿐입니다. +```java +TestService a = new TestService(repo); // 그냥 객체 + +@Service +public class TestService { ... } // 빈 +``` +왜 굳이 컨테이너에게 맡길까요? 의존성을 자동으로 주입하려면 주입할 객체가 컨테이너에 있어야 하고, AOP 프록시를 씌우려면 객체 생성을 컨테이너가 해야 합니다. +빈은 IoC/DI/AOP가 성립하기 위한 전제입니다. + +## 빈 등록 방법 +### 방법1: 어노테이션 + 컴포넌트 스캔 +```java +@Component // 가장 기본 +@Controller // 웹 요청 처리 +@Service // 비즈니스 로직 +@Repository // 데이터 접근 +``` +`@Controller`, `@Service`, `@Repository`는 사실 `@Component`를 포함하고 있습니다. +네 개의 어노테이션이 모두 컴포넌트 스캔에 잡히는데 그럼 왜 나눠놨을까요?
+첫째, 읽는 사람이 역할을 바로 알 수 있게 하기 위함입니다. `@Service`가 붙어 있으면 비주니스 로직임을 바로 알 수 있습니다. +둘째, 추가 기능이 붙습니다. `@Repository`는 DB 예외를 스프링의 공통 예외(`DataAccessException`)로 변환해줍니다. JPA 예외든 JDBC 예외든 같은 타입으로 잡을 수 있게 됩니다. +이것도 PSA의 사례라고 볼 수 있습니다. +### 방법2: `@Configuration` + `@Bean` +```java +@Configuration +public class AppConfig { + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } +} +``` +메서드 반환값이 빈으로 등록되고, 빈 이름은 메서드 이름(`passwordEncoder`)가 됩니다. 외부 라이브러리 클래스는 소스를 수정할 수 없으므로, 내가 만든 `@Configuration` 클래스 안에 메서드를 만들고 `@Bean`을 붙여 반환값을 등록합니다. + +## 어노테이션 무엇인가 +어노테이션 자체는 아무 기능이 없습니다. +```java +public @interface MyAnnotation { + String value() default ""; +} +``` +`@interface`로 선언하는 특별한 인터페이스일 뿐이고 컴파일하면 `Annotation` 인터페이스를 상속한 타입이 됩니다. +주석에 붙이는 메타데이터이지, 그 자체로는 아무 동작을 하지 않습니다. +동작은 읽는 쪽이 만듭니다. 스프링이 리플렉션으로 클래스를 훑다가 `@Service`가 붙어 있는 걸 발견하면 "이건 빈으로 등록해야지"하고 처리합니다. + +## 컴포넌트 스캔 +`@SpringBootApplication`을 자세히 뜯어보면 아래와 같습니다. +```java +@SpringBootConfiguration +@EnableAutoConfiguration +@ComponentScan // ← 이것 +public @interface SpringBootApplication { ... } +``` +`@ComponentScan`은 자기가 있는 패키지부터 하위 전체를 스캔하여 `@Component` 계열이 붙은 클래스를 찾아 빈으로 등록합니다. +스캔 과정을 대략 정리하면 아래와 같습니다. +1. 기준 패키지 아래 `.class` 파일을 전부 찾습니다. +2. 각 파일의 메타데이터를 읽어 `@Component` 계열인지 확인합니다. +3. 맞으면 빈 정의(BeanDefinition)로 등록합니다. +4. 등록된 정의를 바탕으로 실제 객체 생성 및 의존성 주입을 수행합니다. + +## 하나의 인터페이스, 여러 구현체 +빈 이름은 기본적으로 클래스명의 첫 글자를 소문자로 바꾼 것입니다.
+`TestService` -> `testService`
+같은 이름이 두 개면 어플리케이션이 뜨지 않습니다. 그리고 타입이 같은 빈이 여러 개여도 문제가 됩니다. + +```java +public interface PaymentService { void pay(); } + +@Service +public class CardPayment implements PaymentService { ... } + +@Service +public class KakaoPayment implements PaymentService { ... } +``` +위 코드에서 `PaymentService`의 의존성을 주입하려고 하면 스프링이 둘 중 뭘 넣을지 몰라 `NoUniqueBeanDefinitionException`이 발생합니다. +### 해결 1: `@Primary` - 기본값 지정 +```java +@Service +@Primary +public class CardPayment implements PaymentService { ... } +``` +### 해결 2: `@Quallifier` - 이름으로 지정 +```java +@Service +@Qualifier("kakao") +public class KakaoPayment implements PaymentService { ... } + +// 주입할 때 +public OrderService(@Qualifier("kakao") PaymentService paymentService) { ... } +``` +### 해결 3: 전부 주입 받기 - 구현체가 여럿인 게 자연스러운 경우 +```java +@Service +public class PaymentProcessor { + private final List services; // 모든 구현체가 들어옴 +} +``` +`@Primary`와 `@Qualifier`가 같이 있으면 `@Qualifier`가 더 우선으로 작용합니다. + +## 빈 라이프사이클 +빈 라이프사이클은 기본적으로 아래와 같습니다. +``` markdown +컨테이너 생성 + ↓ +빈 정의 읽기 (컴포넌트 스캔 / @Bean) + ↓ +객체 생성 (생성자 호출 — 생성자 주입은 여기서 발생) + ↓ +의존관계 주입 (필드 주입 / 수정자 주입) + ↓ +초기화 콜백 ← @PostConstruct + ↓ + 사용 + ↓ +소멸 전 콜백 ← @PreDestroy + ↓ +컨테이너 종료 +``` +생성자는 객체를 만드는 시점이기에 아직 의존성이 다 안 들어와 있을 수도 있어서 생성과 초기화를 분리합니다. +### 초기화/소멸 콜백을 지정하는 세 가지 방법 +방법 1: **인터페이스 구현 +스프링이 제공하는 인터페이스를 구현하는 방식**입니다. +```java +@Component +public class DbConnector implements InitializingBean, DisposableBean { + + @Override + public void afterPropertiesSet() { // 초기화 + System.out.println("연결 시작"); + } + + @Override + public void destroy() { // 소멸 + System.out.println("연결 종료"); + } +} +``` +가장 오래된 방식이고 지금은 거의 사용하지 않습니다.
+2가지 단점이 있는데 첫째, `InitializingBean`과 `DisposableBean`이 스프링 인터페이스라 내 코드가 스프링에 묶입니다. +나중에 다른 프레임워크로 옮기려면 클래스를 고쳐야 됩니다. 둘째, 메서드 이름을 `afterPropertiesSet`, `destroy`로 고정해야 합니다.
+ +방법 2: **`@Bean` 속성으로 지정** +```java +@Configuration +public class AppConfig { + + @Bean(initMethod = "init", destroyMethod = "close") + public DbConnector dbConnector() { + return new DbConnector(); + } +} +``` +```java +public class DbConnector { // 어노테이션이 하나도 없음 + + public void init() { + System.out.println("연결 시작"); + } + + public void close() { + System.out.println("연결 종료"); + } +} +``` +`DbConnector` 클래스는 스프링 관련 코드가 한 줄도 없는 평범한 자바 클래스입니다. 어떤 메서드를 언제 부를지는 설정파일(`AppConfig`) 쪽에서 정합니다.
+그래서 **이 방식은 외부 라이브러리 클래스에 사용**합니다. 다른 사람의 코드에는 `@PostConstruct`를 붙일 수 없으니, 밖에서 "이 메서드를 초기화 시점에 불러줘"라고 지정하는 겁니다.
+ +방법 3: **어노테이션** -> 권장하는 방식 +```java +@Component +public class DbConnector { + + @PostConstruct + public void init() { + System.out.println("연결 시작"); + } + + @PreDestroy + public void close() { + System.out.println("연결 종료"); + } +} +``` +메서드에 붙이기만 하면 끝이고, 이름도 자유롭게 지을 수 있습니다.
+또한 `@PostConstruct`와 `@PreDestroy`는 스프링이 만든 것이 아니고 자바 표준 스펙인 `jakarta.annotation`에 속합니다. +표준이라서 좋은 점은 아래 3가지 정도가 있습니다. +1. 스프링에 종속되지 않습니다. 이 클래스를 다른 DI 컨테이너로 옮겨도 그대로 동작합니다. 표준을 지원하는 컨테이너라면 어디서든 `@PostConstruct`를 인식하기 때문입니다. +2. 코드가 간결합니다. 인터페이스를 구현할 필요도, 설정 클래스를 따로 만들 필요도 없습니다. +3. 메서드 이름이 자유롭습니다. `init`,`setup`,`connect` 등 어떠한 것을 사용하든 상관이 없습니다. + +## 빈 스코프 +**빈 스코프는 빈이 얼마나 오래 사는지를 정하는 것**입니다. + +| 스코프 | 범위 | +|---|---| +| **singleton** | 컨테이너당 하나. 기본값 | +| **prototype** | 요청할 때마다 새로 생성. 생성 이후에는 관리하지 않음 | +| **request** | HTTP 요청 하나당 하나. 요청이 끝나면 소멸 | +| **session** | HTTP 세션 하나당 하나 | +| **application** | 서블릿 컨텍스트(ServletContext)당 하나 | + +```java +@Component +@Scope("prototype") +public class MyBean { ... } +``` +빈은 기본이 싱글톤: 웹 앱은 동시에 수많은 요청을 받습니다. 요청마다 객체를 새로 만들면 메모리와 GC의 부담이 커져 하나만 만들어 공유합니다.
+그래서 따라오는 제약: **싱글톤 빈은 상태를 가지면 안 됩니다**. +```java +@Service +public class BadService { + private int count = 0; // ← 위험 + + public void add() { + count++; // 여러 요청이 동시에 건드림 + } +} +``` +모든 요청이 같은 객체를 쓰기 때문에 이 필드는 공유됩니다. 그에 따라 동시성 문제가 생깁니다. +그래서 스프링 빈은 보통 필드에 `final` 의존성만 두고 상태를 갖지 않습니다.
+prototype의 함정: 스프링은 prototype 빈을 만들어서 넘겨준 뒤로는 관리하지 않습니다. 그래서 `@PreDestroy`가 호출되지 않습니다. +정리가 필요하면 직접 해야 합니다.
+```java +@Component +@Scope("prototype") +public class PrototypeBean { ... } + +@Service +public class SingletonService { + private final PrototypeBean bean; // 주입은 딱 한 번 +} +``` +위 코드처럼 싱글톤 빈이 protype 빈을 주입받으면, protype인데도 하나만 만들어져서 계속 재사용됩니다. 주입은 싱글톤이 생성될 때 딱 한 번 일어나기 때문입니다.
+이 문제를 해결하기 위한 방법은 크게 2가지가 있습니다.
+주입받은 걸 계속 쓰는 것이 아니라, 필요할 때마다 컨테이너에 새로 요청하는 방식입니다. +### ObjectProvider +```java +@Service +@RequiredArgsConstructor +public class SingletonService { + + private final ObjectProvider provider; + + public void doSomething() { + PrototypeBean bean = provider.getObject(); // 호출할 때마다 새 인스턴스 + } +} +``` +`ObjectProvider`는 빈 자체가 아니라 빈을 꺼내주는 창구를 주입받는 겁니다. `getObject()`를 부를 때마다 컨테이너에 새로 요청하니, prototype이면 매번 새 객체가 나옵니다. +### @Lookup +```java +@Service +public abstract class SingletonService { + + @Lookup + protected abstract PrototypeBean getBean(); // 스프링이 구현해줌 + + public void doSomething() { + PrototypeBean bean = getBean(); // 호출할 때마다 새 인스턴스 + } +} +``` +추상 메서드만 선언해두면 스프링이 "컨테이너에서 꺼내오는" 구현을 만들어 넣습니다. 클래스를 +추상으로 만들어야 해서 요즘은 `ObjectProvider`를 더 많이 사용합니다. + +# 3️⃣ Spring MVC 심층 분석 +___ +## Servlet +웹 서버가 하는 일을 아주 단순하게 보면 아래와 같습니다. +> 클라이언트 ──(요청)──→ 서버 ──(응답)──→ 클라이언트 + +여기서 요청과 응답은 사실 텍스트 덩어리입니다. +```markdown +GET /tests HTTP/1.1 +Host: localhost:8080 +Accept: application/json +``` +위 요청을 처리한다고 생각해봅시다. 소켓을 열고, 연결을 기다리고, 바이트를 읽고, 첫 줄을 +파싱해서 메서드와 경로를 꺼내고, 헤더를 하나씩 잘라 맵에 담고, 바디를 읽는 등의 매우 많은 일련의 과정을 거친 후에야 +비즈니스 로직을 시작할 수 있습니다. 응답도 마찬가지로 상태줄과 헤더를 직접 조립해야 합니다.
+즉 요청 하나 처리하는 데 진짜 로직은 한 줄이고 나머지가 전부 진짜 로직과는 상관없는 일입니다. +### Servlet이 하는 일 +위의 진짜 로직과 상관없는 일을 대신 해주는 것이 바로 Servlet(서블릿)입니다. +```java +public class TestServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) { + String name = request.getParameter("name"); // 파싱 다 돼서 들어옴 + + response.setContentType("application/json"); + response.getWriter().write("{\"name\": \"" + name + "\"}"); + } +} +``` +위 코드에는 HTTP 텍스트를 파싱하는 코드는 어디에도 없습니다. 서블릿은 HTTP 요청/응답의 저수준 처리를 대신 해주고, 개발자는 비즈니스 로직에만 집중하게 해주는 자바 표준 기술입니다.
+이때 서블릿은 인터페이스 스펙으로 `jakarta.servlet` 패키지에 정의돼 있고 서블릿 객체는 요청마다 새로 만들지 않고 하나를 공유한다. + +## WAS와 톰캣 +### 웹 서버와 WAS +웹 서버는 정적 파일(HTML,CSS,이미지 등)을 그대로 돌려줍니다. Nginx, Apache가 대표적입니다.
+> GET /logo.png → 파일 찾아서 그대로 전송 + +WAS(Web Application Server)는 프로그램을 실행해서 결과를 만들어 돌려줍니다. +> GET /tests → DB 조회 → JSON 생성 → 전송 + +WAS는 웹 서버 기능을 포함하여 WAS만으로도 서비스가 가능합니다. + +### 톰캣 +톰캣은 서블릿 스펙을 구현한 WAS입니다. 정확히는 서블릿 컨테이너라고 부릅니다.
+컨테이너라는 이름이 붙은 이유는 앞에서 본 스프링 컨테이너처럼 서블릿 객체를 대신 만들고 생명주기를 관리하기 때문입니다. +```markdown +톰캣이 하는 일 +├── 소켓 열고 연결 대기 +├── HTTP 텍스트 파싱 → HttpServletRequest 객체 생성 +├── 요청 URL에 맞는 서블릿 찾기 +├── 그 서블릿의 doGet/doPost 호출 ← 여기서 내 코드 실행 +├── HttpServletResponse 내용을 HTTP 텍스트로 변환 +└── 전송하고 연결 종료 +``` +여기서도 IoC를 확인할 수 있습니다. 내가 톰캣을 호출하는 것이 아니라, 톰캣이 내 서블릿을 호출합니다. +서블릿 객체를 만드는 것도 톰캣이 하여 앞서 본 '프레임워크가 내 코드를 호출한다'는 구조가 그대로 반복됩니다.
+톰캣은 요청마다 스레드를 하나씩 배정합니다. 톰캣은 스레드 풀을 미리 만들어두고, 요청이 현재 비어 있는 스레드에 맡깁니다. 스레드를 매번 +생성/소멸하면 비싸기 때문입니다.
+ +### 내장 톰캣 +`build.gradle`을 톰캣에 따로 넣은 적이 없는데 어플리케이션을 실행하면 아래와 같은 로그가 찍힙니다. +>Tomcat started on port 8080 (http) + +`spring-boot-starter-web` 안에 톰캣이 포함돼 있기 때문입니다. 예전에는 WAS를 서버에 따로 설치하고 war 파일을 배포했는데, 스프링 부트는 +톰캣을 라이브러리로 품고 jar 하나로 실행합니다. 이것을 **내장 톰캣**이라고 합니다. + +## MVC 패턴 +서블릿 코드를 하나 보겠습니다. +```java +protected void doGet(HttpServletRequest request, HttpServletResponse response) { + // 1. 파라미터 꺼내기 + Long id = Long.parseLong(request.getParameter("id")); + + // 2. DB 조회 + Test test = testRepository.findById(id); + + // 3. HTML 만들기 + response.getWriter().write(""); + response.getWriter().write("

" + test.getName() + "

"); + response.getWriter().write(""); +} +``` +한 메서드 안에 **요청 처리**, **비즈니스 로직**, **화면 생성**이 모두 섞여 있습니다.
+화면 디자인만 바꾸고 싶어도 자바 코드를 고쳐야 하고, DB 로직을 바꾸려 해도 같은 파일을 건드립니다. 화면 +담당자와 로직 담당자가 같은 파일을 수정하게 되는 문제가 발생합니다. + +### MVC 패턴 +요청 처리, 비즈니스 로직, 화면 생성을 세 역할로 나눕니다. +```markdown +요청 ──→ Controller ──→ (비즈니스 로직) + │ + ├─ 결과를 Model에 담음 + │ + └─→ View ──→ 응답(HTML) +``` +관심사를 분리하였습니다. 화면을 바꾸면 View만, 로직을 바꾸면 Controller와 그 아래만 건드립니다.
+**MVC는 스프링 것이 아니라 일반적인 소프트웨어 디자인 패턴**입니다. 데스크톱 앱에서 먼저 쓰였고 웹으로 넘어왔습니다. + +### MVC 패턴과 Spring MVC의 차이 +**MVC는 패턴(설계 아이디어)이고, Spring MVC는 그 패턴을 스프링이 서블릿 위에서 구현한 웹 프레임워크**입니다.
+Spring MVC가 MVC 패턴에 더한 것들: +- Front Controller 패턴: 모든 요청을 하나의 입구(`DispatcherSevlet`)로 받음 +- 어노테이션 기반 매핑: `@GetMapping` 하나로 URL 연결 +- 자동 변환: 파라미터를 객체로, 반환값을 JSON으로 +- IoC 컨테이너 통합: 컨트롤러가 빈이라 DI, AOP가 그대로 적용됨 + ++ 요즘 REST API에서는 View가 없습니다. +```java +@RestController +public class TestController { + @GetMapping("/tests") + public List findAllTests() { + return testService.findAllTests(); // JSON으로 바로 나감 + } +} +``` +`@RestController` = `@Controller` + `@ResponseBody`인데, `@ResponseBody`는 **View를 거치지 말고 반환값을 그대로 응답 본문에 쓰라**는 뜻입니다. +그래서 사실상 Model-View 부분이 생략된 형태로 쓰이고 있습니다. + +## DispatcherServlet +서블릿만으로 웹앱을 만들면 URL마다 서블릿을 만들어야 합니다. +```markdown +/tests → TestServlet +/users → UserServlet +/orders → OrderServlet +``` +위 코드 상으로는 각 서블릿마다 공통 처리(인코딩 설정,로그인 확인,로깅 등)를 반복해야 합니다. + +### Front Controller 패턴 +입구를 하나로 만듭니다. +```markdown + ┌─→ TestController +모든 요청 ──→ [ 하나의 서블릿 ] ─┼─→ UserController + └─→ OrderController +``` +공통처리는 입구에서 한 번만 하고, 각 컨트롤러는 자기 일만 합니다. 이 입구 역할을 하는 것이 +`DispatcherServlet`입니다.
+여기서 중요한 건 `DispatcherServlet`도 서블릿입니다. `HttpServlet`을 상속받은 클래스입니다. +톰캣 입장에서는 그냥 서블릿 하나가 등록된 것뿐이고, 그 서블릿이 내부적으로 복잡한 일을 할 뿐입니다. + +### 전체 흐름 +```markdown +① 클라이언트 요청 + ↓ + [ DispatcherServlet ] + ↓ +② HandlerMapping — 이 URL을 처리할 컨트롤러 찾기 + ↓ +③ HandlerAdapter — 찾은 핸들러를 실행할 어댑터 선택 + ↓ +④ 핸들러(컨트롤러) 실행 ← 내가 짠 코드 + ↓ +⑤ ModelAndView 반환 + ↓ +⑥ ViewResolver — 뷰 이름으로 실제 View 찾기 + ↓ +⑦ View 렌더링 + ↓ +⑧ 응답 +``` +`@RestController`를 쓰면 ⑥,⑦이 없습니다. 대신 `HttpMessageConverter`가 반환 객체를 JSON으로 변환해서 바로 응답 본문에 씁니다. + +### doDispatch 코드 확인 +```java +protected void doDispatch(HttpServletRequest request, HttpServletResponse response) { + + // ② 핸들러 찾기 + mappedHandler = getHandler(processedRequest); + if (mappedHandler == null) { + noHandlerFound(processedRequest, response); // → 404 + return; + } + + // ③ 어댑터 찾기 + HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); + + // 인터셉터 preHandle + if (!mappedHandler.applyPreHandle(processedRequest, response)) { + return; + } + + // ④ 실제 컨트롤러 실행 + mv = ha.handle(processedRequest, response, mappedHandler.getHandler()); + + // 인터셉터 postHandle + mappedHandler.applyPostHandle(processedRequest, response, mv); + + // ⑥⑦ 뷰 처리 + processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException); +} +``` +- `getHandler()`: 등록된 `HandlerMapping`들을 순회하며 처리 가능한 걸 찾습니다. 여기서 +못 찾으면 `noHandlerFound`로 가고 404가 뜨게 됩니다.
+-> CEOS Spring tutorial 과제를 진행하면서 api 호출을 할 때 엔드포인트가 /tests인 것을 /test로 잘못 쳐 +Whitelabel이 떴던 게 생각났고 그 원리에 대해 이번 기회로 알 수 있게 된 거 같습니다. + +### 어댑터는 왜 필요한가? +`doDispatch`를 읽으며 왜 핸들러를 바로 호출하지 않고 어댑터를 거치지?라는 의문이 들었습니다.
+찾아본 결과 컨트롤러를 만드는 방식이 여러 가지이기 때문입니다. +```java +@Controller // 어노테이션 방식 (요즘) +public class TestController { } + +public class OldController implements Controller { // 인터페이스 방식 (구버전) + public ModelAndView handleRequest(...) { } +} +``` +호출 방법이 서로 다른데, `DispatcherServlet`이 이걸 다 알면 새 방식이 생길 때마다 고쳐야 합니다. 그래서 +중간에 어댑터를 두고 `handle()`이라는 공통 인터페이스로만 호출합니다.
+이것이 어댑터 패턴이고, 앞에서 본 PSA와 같은 발상입니다. 인터페이스로 추상화 해두고 구현체를 갈아끼우는 것입니다. +## 전체 그림 +```markdown +클라이언트 +↓ HTTP 요청 +[ 톰캣 (WAS / 서블릿 컨테이너) ] +↓ HttpServletRequest 생성, 스레드 배정 +[ DispatcherServlet ] ← Front Controller, 서블릿의 일종 +↓ HandlerMapping으로 컨트롤러 탐색 +↓ HandlerAdapter로 실행 +[ Controller ] ← 스프링 빈 (DI, AOP 적용됨) +↓ +[ Service ] → [ Repository ] → DB +↓ +반환값 → HttpMessageConverter → JSON +↓ +[ 톰캣 ] → HTTP 응답 텍스트로 변환 +↓ +클라이언트 +``` +# 5️⃣ (선택) CGV DB 모델링 +___ +## 설계 판단 과정 + +### 용어 분리: 지점 vs 상영관 + +요구사항의 "영화관"이 두 의미로 쓰이고 있었습니다. "모든 영화관에 특별관과 +일반관이 존재해요"의 영화관은 CGV 홍대점 같은 **지점**이고, 그 안의 +특별관/일반관이 실제로 영화를 트는 **상영관**입니다. 한 테이블로 묶으면 +이후 관계가 전부 꼬이므로 `branch`와 `theater`로 분리했습니다. + +특별관/일반관을 각각 엔티티로 두는 것도 고려했으나 두 테이블의 속성이 +동일했고, 관 종류가 늘어날 때마다 테이블을 추가해야 합니다. 종류만 다른 +같은 성격의 것이므로 하나의 테이블 + 종류 구분으로 표현했습니다. + +### 좌석 설계 + +요구사항의 두 단서가 설계를 결정했습니다. + +- "종류가 같다면 좌석은 동일해요" → 배치는 상영관이 아니라 **종류**에 붙습니다 +- "직사각형, 중간에 비어있는 곳 없음" → **행·열 두 숫자로 배치가 결정됩니다** + +따라서 좌석 테이블을 만들지 않고 `theater_type`에 `row_count`, `col_count` +두 컬럼만 두었습니다. 지점 30개 × 상영관 8개여도 배치는 종류 수만큼만 +저장됩니다. + +**트레이드오프**: 좌석 데이터가 없으므로 예매 시 좌석을 FK로 참조할 수 +없습니다. 10×15 상영관에 `row_num = 20`으로 예매해도 DB가 막지 못하며 범위 +검증은 애플리케이션 책임입니다. 좌석별 속성(커플석 등)이 생기면 구조 변경이 +필요합니다. 요구사항에 좌석별 차이가 없고 직사각형이 보장되므로 감수할 +만하다고 판단했습니다. + +이 선택의 결과로 "예매 가능한 좌석"은 DB에 존재하지 않습니다. 조회 시 +`theater_type`의 크기와 `reservation_seat`의 예매된 좌석 목록을 받아 +애플리케이션에서 나머지를 계산합니다. + +### 예매/구매를 두 테이블로 분리 + +한 번의 예매에 여러 좌석이 선택됩니다. 단일 테이블에 좌석마다 한 행씩 +저장하면 이 행들이 한 건의 예매라는 것을 표현할 수 없습니다. 회원과 회차로 +묶으려 해도 같은 사람이 같은 회차를 두 번 나눠 예매한 경우를 구분하지 +못해 취소 처리가 불가능합니다. + +- `reservation` — 예매 행위 (누가, 언제, 어느 회차, 상태) +- `reservation_seat` — 선택한 좌석들 (행, 열, 가격) + +취소는 부모의 `status`만 변경하면 됩니다. 매점 구매도 같은 상황이므로 +`purchase` / `purchase_product`에 동일 구조를 적용했습니다. + +### 가격을 시점별로 복사 저장 + +정가는 `screening.price`, `product.price`에 두되, 결제 시점 금액은 +`reservation_seat.paid_price`, `purchase_product.unit_price`에 복사합니다. + +원본 가격을 UPDATE하면 과거 결제 기록의 금액까지 바뀌기 때문입니다. 작년에 +12,000원에 예매한 기록이 가격 인상 후 15,000원으로 보이면 사실과 달라집니다. +정규화 관점의 중복이지만 **과거 사실은 변하지 않아야 한다**는 원칙을 +우선했습니다. + +반대로 회차의 영화 제목 등은 "지금의 사실"을 가리키므로 복사하지 않고 +FK로 참조합니다. **지금의 사실은 참조하고, 그때의 사실은 복사합니다.** + +### 찜을 두 테이블로 분리 + +하나로 합치려면 `(대상_타입, 대상_id)` 형태가 되는데, 이 방식 은 `대상_id`에 FK를 걸 수 없습니다. DB가 영화 +테이블을 봐야 할지 지점 테이블을 봐야 할지 모르기 때문에, 존재하지 않는 +영화 999번을 찜해도 막지 못합니다. + +테이블이 늘더라도 참조 무결성을 확보하는 쪽을 택했습니다. PK를 +`(member_id, 대상_id)` 복합키로 두어 중복 찜도 자동으로 방지됩니다. + +### 매점 테이블 제거 + +`매점`을 엔티티로 두었으나 컬럼을 채우려 하니 `id`와 `branch_id` 외에 +담을 것이 없었습니다. 지점당 매점이 하나이고 고유 속성이 없으므로 지점 +테이블과 실질적으로 동일합니다. 재고가 지점을 직접 참조하도록 했습니다. + +한편 요구사항의 두 문장이 서로 다른 것을 말합니다. "메뉴는 같아요"는 공통, +"재고는 따로 관리해요"는 개별입니다. 따라서 상품 정보는 `product`에 전 지점 +공통으로, 재고는 `stock(branch_id, product_id, quantity)`에 지점별로 +두었습니다. 좌석에서 "공통 배치는 종류에, 개별 정보는 상영관에" 나눈 것과 +같은 구조입니다. + +### 가격을 회차에 배치 + +요구사항에 가격 언급은 없었으나, 조조·심야 할인이나 특별관 추가 요금처럼 +가격을 결정하는 요인은 영화가 아니라 상영 조건입니다. 영화에 두면 "같은 +영화는 언제 어디서 봐도 같은 가격"이 되어 확장 시 구조 변경이 필요합니다. + +### 중복 예매 방지 + +`reservation_seat`에 `(screening_id, row_num, col_num)` 유니크 제약을 +걸었습니다. 이를 위해 부모에 있는 `screening_id`를 자식에도 중복 +저장했습니다. 비정규화지만 애플리케이션 로직만으로는 동시 요청을 완전히 +막을 수 없습니다. + +이 제약은 취소와 충돌합니다. 취소된 좌석 행이 남아 있으면 다른 사람이 같은 +자리를 예매할 때 제약에 걸립니다. **취소 시 `reservation_seat` 행을 삭제하는 +방식**을 택했고, 그 결과 어느 좌석을 취소했는지에 대한 이력은 남지 않습니다. +요구사항에 취소 이력 조회가 없고, DB 차원의 무결성 보장이 애플리케이션 +로직보다 확실하다고 판단했습니다. + +### 나이를 생년월일로 저장 + +영화 관람 등급이 있어 나이 정보가 필요합니다. 나이를 정수로 저장하면 매년 +값이 틀려지고 전 회원을 갱신해야 하므로, 변하지 않는 사실인 `birth_date`를 +저장하고 나이는 조회 시 계산합니다. + +--- + +## 한계 + +- **좌석 범위 검증**: 상영관 크기를 벗어난 좌석 예매를 DB가 막지 못합니다. +- **취소 이력**: 취소 시 좌석 행을 삭제하므로 어느 좌석이 취소되었는지 + 추적할 수 없습니다. 필요하다면 별도 로그 테이블이 있어야 합니다. +- **상영 시간 겹침**: `screening`에 종료 시각이 없어 같은 상영관의 회차가 + 겹치는지 검증하려면 `movie.running_time`을 조인해 계산해야 합니다. +- **나이 제한 검증**: `movie.age_rating`과 생년월일 비교는 애플리케이션 + 책임입니다. + +![img_1.png](img_1.png) diff --git a/img_1.png b/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8565e5c6b6415ab0cf181e11d0ff5e3ab5707dac GIT binary patch literal 147873 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

oD?U~ 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%0ASi>hoqwtzGm}|w=66gCiJq0EWfOtjdXwLIfbt+; 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ⓈW?>GKi(x3$)7=pa z(Z!hpy_U~KEP66!E)Sj49=b?$irL{1fi3e{GbU62deaxA1SI~4UIty^jEaq`eLGOM zrf{L^ep=E|`$t~ZM04B5BWVMeP9M81#|lhQ5!p@@VKaoe3TGVU&LXzvF~E-sCuccB zO)^dZo0O-^{1aKKv8Ad>fe6T4-v=bx7T8jXQnp&t-#9C4_AV7KmrI;Rwot2g#L1l` z!^c-@`I1yp?#Z=%Lpi6Igm6#c1fTxcB$C!-aAd~PG1yzom0UeZzLwbHn)7c{gR?Ea zl7?_mZuD)&H3!1WnZv>6PO^dKMR>qxzOTJ_3KTnN?iqdSug!7H@&28`#S1~qv(lUz zr!}J&1Ps_rLV|O)rYn*ND@Z*~(8Cmi zX(3Wd3zT1h`p}Y?Fv;~Z3(G?zzzh7@?46bgPld_#hZWdKj=T;MaHxMu72irvO=wc-m@?@vD!&Ofq%El(V9OU5x>c+F+aEQ2K6xSmpNacM;J{~auLib4=`q;kRdjurZ|^{- zNO|d9h&x98dIbdwWX`B}m7gzh9VZ>x!;62jkn*6794Gwi!zM6cd?W7p0O~B|&Q_)>`#`A0M>|1a1Tco097Z*siwYXA3ryb zJVZml!5=%7I%+SnDMii2Gk-iiGane2gDJkaJ41XKo?J}ziOCs7AG1KU(wrxqXm{M? z-@HkfItOQ*!#LweZ~<5@RySSN+GN?7;dq35^@#eG_L<4aNrX|7S5RmV5Jpu4>q%tA zyff8YjemD)bu-=4B2xnTli^)k;z3!e9LdJ;g6$XZju?*XL>brdnaTD0VD;8OmJ=q< zPe3Mu-#;|{Jg3`}K79CqY>t7v4LH~BJ9ip$fl%1c&;UBdi8JRcdx6tD;=9eKk&#g@x*c=Qd-Y03;(>Mf*>bC9%%e6SkGsrFB#1^y2CJqJ^$`F21<#Me)ZPEF z4s8AHk>7g~i&c=>w9`N=APJ@mMO7Qf} zc@8rGR(!4Ua56R?My#43HDU=Y*6VqF;OUF)&6@l^k0Q!_jhI3Y`u%v80ORne3usn! zu7Twfh(T)Cs~4YxEjuz911aAA(QA4A2S*$ZxhMGTfbsP1qF=3L2W=W=0~B~aY)~Ly z-U1tPWlR(Jwl6%xqWtukHlc?L(#H>vMZ=9Z7j-yhby~vLs~N+ ziEm`-?YGrs7hc%G>ohq-fdlzz7U>1S-?`79>u%ru@gy6Q4f7@94t(Rh`mD5;ai!}W zcp6!e(pwN5v-9h9tuMd;afn4d;Ce5jA(lx6gs%1TKR#l#5B14h1^+A}&~xVG z=86MDBjVzzXdtTyZ2E*|WQ?`tC9hHu*;xCichpbI*!cR^Pw@M^FKQp#wwL`Vf50}%z@en#>8rqY9{sRotwFa2D)BZPgB}$22}I% zW?OhGyq|Y7UFjk3(@JU|r?arKj=pgt{rPhzW>2~;Jg=9*lK7TxQkPWlgupVwh4^?@fsY02*3JMGNjEs;ab*FQ%D%JRR8AcJ%7n-X> zJWbh^sAQxz#m((eH{5xi-9&Y5hdR`tQ=o=0HWaxWo|qt)1N$o0czBiHW}jC`xNk*R zKzKql6^}4x;sj`okSh0vSro30hVBp^t+9A!ea;ymjh!(j6n=)>2(&T0+D}MYlc@fO zJN(-!YH4gBfYzJpaE%2g0fPlyKtuGeR{yZA&g#>vsDUCAzm-;wc@H8Kn78Ee=oi+# zE3LV6D5inSaCUj3S@+QxxYHTb`ucprZBlzi>As!#lM^##b@5%-5iHGO9>h+C1f>%)7$}hpS9|Zv~heb4u(}MbaM!!P3 zy!~gOuiP^*GI}_B!DR;3gxlBF)~1s--jyM5-&*S51`HfXxAx2;V?UEMw)FhN2YWw1 zXLomJbMv{LXR}gLX(Y*~t8Z?N^)Ewpt0S|cSP zA&Ch&+h_6R3k^MepnW;(RtrOS>0UtnBhzcTE*gK6T1#cGh)3Y|PW|Eiakw5pzX)w4EPh0NPcD8q_h#%)(@D7P zOfRS5j%5=oMA_Eyx%Cd}B{Lee5}Y{2_R$ayhNx_Xn6*k;=&F#&`SYMdp~W7Kh#lEN z@fG5hv>c8z#xboro~%H{#L~9|)$T!4rabj&+;xr(u0Z6rdmnTAL*I;IwLWsmIjUt2 zUn+jXylDVLk_f4}oOP|J6Km6KUP$jC6~6TjFUeZFR%KS&ADBi@b|yK%62~1Fshwz8 z)S4AngVA9#qZbK!8RR`Xi1~Q!@9o;(D+x%t*jqyej20=yn&0+oKQGY4ARgyWI&XHO z({F%R`tMaYzjZfoY-tir&qV?y5-TPi?u{|+jXiLu;Pj7FyYs=sLNTnQJJelVUv1#x&$G6rV zQE-QgLdS7wv_5FZ{pw*OI3A}Yr)sZr)T|}8xzFtb!0c*k*LR-z)8S{pb01vhx|U{k`!>CRPssu3bZ&5vvMqtD@2>!hp3CfGf z5$WILl7=~wh!)IJG!8TRHq=An9CRilI7iO#h{d$pn7O{|0H5TDMu`)$WacY(bj-rO z1Xv2jpN4m=TyVd|mm!Yu^;2E=>?9^8E^cu7s)h&Aox{{(D=vEchPUYI>Y|Gp#znjF z5ljcBQ0($hL)Zj2-JuVhk~~6ZW~_}k^NUCLt^yTZh7}x^6iko?unld>t~ru{bAjfU zPw4vufq~xMbXY~pUK<0uR#cV;EX7I>^HT#26YbT(d<0JSkvs=HW6!XYwqIumU*V~~ zZ`(ea*Ax<%I<+NpNP%6$4X^|6~!SMI&1w4GZYl&c?v#*AQdqUbl8+`#I>HK)%06?7Rv6g29aU~PEhri0h`thA1q8Te*dD^f2cE@;h4+uQ8Tm2`sg$BJhN-Uis$ zQ<3D{K6Wfm5`Si55iS%WD*8ij;dx!X_QhM;kGYGMq%2sD!Np~7cHq6%s6a|z#M2-7 zg*7j$v+|2BoR``i;443vGx3s+wxZ4P*)(PAocY&hSCMAyV+2$Mz0xBI;GLHhj4(HU z%Pp}+N@n_AxnF61M5ZxY{V`-Bz6I}v8p;LGKSE-rIz1U4?kL_-Xu|JwwXC8tvg+R7n|Jk2W}w^ok{zu&xOfH^4*!ED{KIPoJFim(o0> zJ1ftRb&P;v`6=ZzysWR6CqwjTi)_^!77JG$EioR9j(}gPFG||z21ff?Zf8WTmd@a>l;UhUNyKcBCaM(oK9Ln z0V$(GOONE9M=0+*czwa07}yL6JK~WRLT0!o^UmMWRBr4qSq&spmqH$4?iF>Ig=5~tGzg$lLP>G zWr`sD6u)XQIzc}o|1JY*Oa27dEu*AM`j|mnLq@<+g zE7i(f{MK#K$y@~Cg8=$=exqY#%pUtznF!H@;G7YYdk5#^;2@Er@a8=pg2Vig0QA-z zQUh67L{uxojWCzsU!@Eo<;-K>*_3|1$4;k%M+9LE>0P*_OampzAU)asT~#z9!y+~9 z3Ii^naH)~&ANwenk=NND@)$-|l%#J%$*j=A`*ANiI@(GkG~=nP=B20~C)W5QGd^9` z*0g9za})Q*{c(`J7*Y8qRNK9xT0t z+1XlcptXr?^1LyPUu_Twlf)V6_n; zKz;F*JbRlrnquKWKPbq)eaVrzBdL|a!`*yxmPo(lu_zTZj!$Em4;jKKCrRq!nBuap z8n>iG(3H1i5$L&o97XOR9zme-l_bpT9#-_V8BJ|4Qp2Jue?{KeU82<&Tojn(f)G%V zRDzyk+?w^T^;EEj7X9Ji)Y5;ee=Mb~X(|191OD!J+`2I^vk{Bs*3{P0dI50_;(dF>d0oL5x>x%-MoH&$-F)kQ_L61A*?B@1F%Ijq8 z@hP~`fA1~+u5p|qn&M&v!(VWMR8DI+4p&4ZTGkU@tAG7{3XQ9`7AhCZUca{cQpQJ3 zV%Gn#_Sv&%%@GV}j49Xv2tlk%UY<4lf8uRW0K}31|SDFNDe&4 z+}ze-P6pFcgKO8qY{7591NQD9aR7oH=)uGmRyQM{Yk=rB5ND(Zjx09ICUOq+^<{hj zgO6@z!!Fvvi|1-Lr|IaEQc_5Q5-#-7FubzINEU-cNpMg^?iM7 zCb`t046KV$KBZ#Q#HL*#H~}KE?pzP~V77J9V6(OU!Ke0~PVuAS`rR-id~n80kU`ZEpBy5Z9}Iy&X>; zcc#r%S5^YXBPE(07gim^aYLYUac&}qw_cF$|(W75C%lNrP zFM+_pMAem8{l)zC(Fc!U+8Yezb$9rOo%v>5d@Kn>S4?poH%r#QBg3Cbd&7I2yaF>t z{8i3UiK7{SE3-A z0q{W+W8-6%KQsEuaJ{7L3esf}tSanhy~QoL(;gV!GOSA+i=YK7wCYQQcOk z@pMUiCOwjKBf0o}?iVxKE!u9dTQ(kvziDaN^hr+$`UdaclpWC~ID_AAcHoCx3yNjF z@n~Xbh(5`l#^6oZlc*nkMFq0MY|otk&0thJaN0 zm*7nGKF9-LKI2+`#e)24)+MSlzjn9RnWQ|Op;ExeqL$}2_X$w961PR;(r1nG7eOah zi05}WpbiQjpoL&P_71v9xpWDbP@WeQJe5>{R5_@^fRBQ;&MHLmreSat0C+vUH%>s? z-q~5}zI>|JKiM8KOyw9}MNYUCEZV4jUO@pnm0NT92j)qhI0?~$M<|WK`t|4A8`DG2 z_V$iej0Wovm2A9Quy3RWZL#@DJpoOY zuHzvW1zEIjDM$d#`@@q9ogCuan%8k#(dEq4w<~pYhPswU-(UTlf}y6Nxnt$Nv?fOi z8IzC$AO|@PgS96=nwB=tcXeqAQuA_g)!(JhY;;h|gSr*xul)viL?@(twnV(O`+JV( zkdcp1;}n646a-qgD2LrA9)3&nIuI;h3Lgrn0_xa-P|0jI=s0Yz#= zj=DL-z?xL2QI+CzJGh4>@9GYzkTn{Lc%X6y;r9@pvCSj*h*^z==ULVm0Vkr zRDcvc3Qb9b{46e>#P1Or%b~ddPBeg3JSc#D15|-AcRRa9xNXSj#q5De809+Cn=8XC zXz>y%X#TH$1)8`XMiIaSfQ7b^DZ2KRGinpU23-W^WLZ7-GyVYJel%LNZMCv{R*-Hi zOddM?#KWr{f&icj(rH_$`9lKK^4PT%RPK>@q-fK;EaT9c2>x;EA>s-Tc z#(Tjtv?d~+l`so-kD#mwhZ$-0ib5a9OI4E#gXLE45Z#abyh4_eTycLYHxjpzQ>&I1 zl<_ct54}A7X|U@%2ZdcX<$`gK(0TXA5@n@sz1y@c1%L-{kwMn2-F z9^tqq8_hS4Ye!{kFRoCB@=>noq@|=x>PPG$hW&(!HEBQ}bAwgzU#SQjd9NhcMyz>~ z{vZTmtp`o@_+SbiVbA!V67?5AfQ&R+GY4C?ze^j`vWq^3|Arj}MqusRvd%@ot(kGw zjj*h2pilJP;Q9C5c|rBRNW4Tv@LsW=Q{i5%<>KUeV_>qlzPWSGPI{x%h&1um6A8Ct z!O#?uUz$b7L}A z(|!`F-`*IR-}e|y)Z*V07RkYcRkw;VC||hY`pZ^q2yLuAzqUp_?fFo^!|F|qjQ!8Z{#xWq5C`Cit}Go5!w-Z(X%Il=a)57F#yW0*GQXb}bImMZejJ z-~7n>e%sXq3Rmac+@xjKq_(!@JvnJ1+K0$rXWAn)ydDC~UXAAd*cy8Vpa* zRg^(L!5 z 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 literal 0 HcmV?d00001