From ba9c394cdfae8d2ace38ab036215ec2c476a09fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=84=9C=EC=B1=84=EC=97=B0?=
<128215774+yeonee911@users.noreply.github.com>
Date: Sat, 15 Mar 2025 22:58:40 +0900
Subject: [PATCH 1/2] week1
---
.gitattributes | 3 +
.gitignore | 43 +++
HELP.md | 27 ++
README.md | 128 ++++++++-
build.gradle | 34 +++
et HEAD~n | 17 ++
gradle/wrapper/gradle-wrapper.properties | 7 +
gradlew | 251 ++++++++++++++++++
gradlew.bat | 94 +++++++
settings.gradle | 1 +
.../com/ceos21/spring_boot/Application.java | 34 +++
.../ceos21/spring_boot/HelloController.java | 14 +
.../java/com/ceos21/spring_boot/Test.java | 14 +
.../ceos21/spring_boot/TestController.java | 22 ++
.../ceos21/spring_boot/TestRepository.java | 5 +
.../com/ceos21/spring_boot/TestService.java | 20 ++
src/main/resources/application.yml | 17 ++
.../ceos21/spring_boot/ApplicationTests.java | 13 +
.../spring_boot/HelloControllerTest.java | 31 +++
19 files changed, 773 insertions(+), 2 deletions(-)
create mode 100644 .gitattributes
create mode 100644 .gitignore
create mode 100644 HELP.md
create mode 100644 build.gradle
create mode 100644 et HEAD~n
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/ceos21/spring_boot/Application.java
create mode 100644 src/main/java/com/ceos21/spring_boot/HelloController.java
create mode 100644 src/main/java/com/ceos21/spring_boot/Test.java
create mode 100644 src/main/java/com/ceos21/spring_boot/TestController.java
create mode 100644 src/main/java/com/ceos21/spring_boot/TestRepository.java
create mode 100644 src/main/java/com/ceos21/spring_boot/TestService.java
create mode 100644 src/main/resources/application.yml
create mode 100644 src/test/java/com/ceos21/spring_boot/ApplicationTests.java
create mode 100644 src/test/java/com/ceos21/spring_boot/HelloControllerTest.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..d70d5a9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,43 @@
+*#
+*.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
\ No newline at end of file
diff --git a/HELP.md b/HELP.md
new file mode 100644
index 0000000..015785b
--- /dev/null
+++ b/HELP.md
@@ -0,0 +1,27 @@
+# Read Me First
+The following was discovered as part of building this project:
+
+* The original package name 'com.ceos21.spring-boot' is invalid and this project uses 'com.ceos21.spring_boot' 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/3.4.3/gradle-plugin)
+* [Create an OCI image](https://docs.spring.io/spring-boot/3.4.3/gradle-plugin/packaging-oci-image.html)
+* [Spring Web](https://docs.spring.io/spring-boot/3.4.3/reference/web/servlet.html)
+
+### 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/README.md b/README.md
index ebeffaf..9125435 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,126 @@
-# spring-tutorial-21st
-CEOS back-end 21st spring tutorial project
+# ๐1์ฃผ์ฐจ ๋ฏธ์
+*์ถ๊ฐ ์กฐ์ฌ
+*์ถ๊ฐ ์ง๋ฌธ
+
+## ๐์์ฝ
+**Spring** : ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ํธํ๊ฒ ํด์ฃผ๋ ์คํ์์ค ๊ฒฝ๋๊ธ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ
+**Spring์ ํน์ง** : ์๋ฐ ๊ฐ์ฒด๋ฅผ ์ง์ ์คํ๋ง ์์์ ๊ด๋ฆฌ, ๊ฐ์ฒด์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ, *์คํ๋ง ์ปจํ
์ด๋์์ ํ์ํ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉ
+**POJO** : Getter, Setter๋ก ๊ตฌ์ฑ๋ ๊ฐ์ฅ ์์ํ ํํ์ ๊ธฐ๋ณธ ํด๋์ค, ๊ฐ์ฒด์งํฅ์ ์ธ ์๋ฆฌ์ ์ถฉ์คํ๋ฉด์, ํน์ ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ ๊ธฐ๋ฅ์ ์ข
์๋์ง ์๊ณ , ํ์์ ๋ฐ๋ผ ์ฌํ์ฉ๋ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ค๊ณ๋ ์ค๋ธ์ ํธ
+**์คํ๋ง ์ผ๊ฐํ** : POJO๋ IoC/DI, AOP, PSA๋ฅผ ํตํด์ ๋ฌ์ฑ
+- AOP : ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ, ๋ก์ง์ ์ฃผ์
+- IoC/DI : ๊ฐ์ฒด์ ์์ฑ๊ณผ ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ์คํ๋ง ์ปจํ
์ด๋๊ฐ ์ํ
+- PSA : ๋ค์ํ ๊ธฐ์ ์ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ์๋น์ค ์ถ์ํ (์ด๋ํฐ ํจํด ์ ์ฉ)
+
+**์์กด์ฑ** : ์ ์ฒด๋ ๋ถ๋ถ์ ์์กดํ๋ค.
+์์กด์ฑ ์ฃผ์
์ ํตํด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ค.
+์์กด์ฑ ์ฃผ์
๋ฐฉ๋ฒ์๋ `=์์ฑ์ ์ฃผ์
`, `setter ์ฃผ์
`, `ํ๋ ์ฃผ์
` 3๊ฐ์ง๊ฐ ์๋ค.
+*๊ทธ๋ผ ์
์ค์์ ์ด๋ค ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ๋์ค์ /ํจ์จ์ ์ธ๊ฐ?
+
+
+## ๐์ถ๊ฐ ์กฐ์ฌ
+### ๐ท์คํ๋ง ์ปจํ
์ด๋(Spring Container)
+#### ๐น๊ฐ๋
+์คํ๋ง ์ปจํ
์ด๋๋ ์๋ฐ ๊ฐ์ฒด์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ, ์์ฑ๋ ์๋ฐ ๊ฐ์ฒด๋ค์๊ฒ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณต
+
+์ฆ, ์คํ๋ง ์ปจํ
์ด๋๋ ๋ด๋ถ์ ์กด์ฌํ๋ ๋น์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ(๋น์ ์์ฑ, ๊ด๋ฆฌ, ์ ๊ฑฐ ๋ฑ)ํ๋ฉฐ, ์์ฑ๋ ๋น์๊ฒ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ.
+
+#### ๐น์ข
๋ฅ
+`Beanfactory`์ `ApplicationContext` ๋ ์ข
๋ฅ์ ์ธํฐํ์ด์ค๋ก ๊ตฌํ
+
+(1)`BeanFactory`
+- ์คํ๋ง ์ปจํ
์ด๋์ ์ต์์ ์ธํฐํ์ด์ค
+- ๋น์ ๋ฑ๋ก, ์์ฑ, ์กฐํ ๋ฑ ๋น์ ๊ด๋ฆฌํ๋ ์ญํ
+
+(2)`ApplicationContext`
+- BeanFactory์ ๊ธฐ๋ฅ์ ์์๋ฐ์ผ๋ฏ๋ก, ๋น์ ๊ด๋ฆฌํ๊ณ ๊ฒ์ํ๋ ๊ธฐ๋ฅ ๋ฟ๋ง ์๋๋ผ ๊ทธ ์ธ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํจ
+
+
+#### ๐นBeanFactory VS ApplicaionContext
+`ApplicaitonContext`๊ฐ `BeanFactory`์ ๊ธฐ๋ฅ์ ๋ฌผ๋ ค ๋ฐ์ ๋น์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ค. ๊ทธ๋ฌ๋ `ApplicationContext`๊ฐ ๋ ๋ง์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค.
+๋ํ ๋น ๊ด๋ฆฌ์ ๊ธฐ๋ฅ์์๋ `BeanFactory`๋ ์ฒ์์ผ๋ก getBean() ๋ฉ์๋๊ฐ ํธ์ถ๋ ์์ ์์ ํด๋น ๋น์ ์์ฑํ๊ณ ,
+`ApplicationContext`๋ Context ์ด๊ธฐํ ์์ ์ ๋ชจ๋ ์ฑ๊ธํค ๋น์ ๋ฏธ๋ฆฌ ๋ก๋ํ ํ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ ํ์๋ ๋น์ ์ง์ฐ์์ด ๋ฐ์ ์ ์๋ค.
+
+๋ฐ๋ผ์ ์ฃผ๋ก ๊ฐ๋ฐ์์๋ `ApplicationContext`์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
+
+#### ๐์ฐธ๊ณ ์๋ฃ
+- [[Spring] ์คํ๋ง ์ปจํ
์ด๋(Spring Container)๋ ๋ฌด์์ธ๊ฐ?](https://ittrue.tistory.com/220)
+- [[Spring] ์คํ๋ง ์ปจํ
์ด๋์ ๋น์ด๋?](https://steady-coding.tistory.com/459)
+
+
+
+### ๐ท๋น(Bean)์ ๊ฐ๋
๊ณผ ๋ผ์ดํ ์ฌ์ดํด
+#### ๐น๋น(Bean) ๊ฐ๋
+์คํ๋ง ์ปจํ
์ด๋๊ฐ ๊ด๋ฆฌํ๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋น(Bean)์ด๋ผ๊ณ ํ๋ค.
+
+#### ๐นBean Life Cycle ํ๋ก์ธ์ค
+1. ์คํ๋ง ์ปจํ
์ด๋ ์์ฑ
+2. ์คํ๋ง ๋น ์ธ์คํด์ค ์์ฑ
+3. ์์กด์ฑ ์ฃผ์
+4. ์ด๊ธฐํ ์ฝ๋ฐฑ : ๋น์ด ์์ฑ๋๊ณ , ๋น์ ์์กด๊ด๊ณ ์ฃผ์
์ด ์๋ฃ๋ ํ ํธ์ถ
+5. ์ฌ์ฉ
+6. ์๋ฉธ์ ์ฝ๋ฐฑ : ๋น์ด ์๋ฉธ๋๊ธฐ ์ง์ ํธ์ถ
+7. ์คํ๋ง ์ข
๋ฃ
+
+#### ๐์ฐธ๊ณ ์๋ฃ
+- [Bean Life Cycle](https://dodokwon.tistory.com/57)
+
+
+
+
+### ๐ท์ด๋
ธํ
์ด์
(Annotation)์ ๊ฐ๋
๊ณผ ๋์ ์๋ฆฌ
+#### ๐น๊ฐ๋
+์ฝ๋์ ๋ฉํ๋ฐ์ดํฐ(์ถ๊ฐ ์ ๋ณด)๋ฅผ ์ ๊ณตํ๋ ๊ธฐ๋ฅ.
+
+#### ๐น๋์ ์๋ฆฌ
+์ด๋
ธํ
์ด์
์ `๋ฆฌํ๋ ์
(Reflection)`์ ํ์ฉํด์ ๋์ํ๋ค.
+์ฆ, ๋ฐํ์(์คํ ์ค)์ ํด๋์ค๋ ๋ฉ์๋์ ์ ๋ณด๋ฅผ ์ฝ์ด์์ ํน์ ๋ก์ง์ ์ํํ๋ค.
+
+### ๐ท์คํ๋ง์์ ์ด๋
ธํ
์ด์
์ ํตํ Bean ๋ฑ๋ก ๊ณผ์
+์คํ๋ง์ `์ปดํฌ๋ํธ ์ค์บ(Component Scan)`๊ณผ์ ์ ํตํด ๋น์ผ๋ก ๋ฑ๋กํ๋ค.
+*์ปดํฌ๋ํธ ์ค์บ : ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋ ํด๋์คํจ์ค๋ฅผ ์ค์บํ์ฌ ๋น์ผ๋ก ๋ฑ๋กํ๋ ๊ณผ์
+1. ์ค์ ์ ๋ณด ํด๋์ค์ `@ComponentScan` ์ด๋
ธํ
์ด์
์ ์ถ๊ฐํด์ค๋ค.
+2. ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ ํด๋์ค์ `@Component` ์ด๋
ธํ
์ด์
์ ์ถ๊ฐํ์ฌ @ComponentScan์ ๋์์ด ๋๋๋ก ์ง์ ํ๊ณ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํด์ค๋ค.
+3. ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ ๋ ํ์ํ DI๋ `@Autowired`๋ฅผ ์ด์ฉํด ์ฒ๋ฆฌํ๋ค.
+
+
+
+### ๐ท๋จ์ ํ
์คํธ์ ํตํฉ ํ
์คํธ
+#### ๐น๊ฐ๋
๋ฐ ํน์ง
+(1) `๋จ์ ํ
์คํธ`
+- ๊ฐ๋
: ํ๋์ ์์ ๋จ์(๋ฉ์๋/ํด๋์ค)๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ํ
์คํธ
+- ํน์ง : ๋น ๋ฅด๊ฒ ์คํ๋๊ณ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์์ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์์ ํ๋๋ฐ ํจ๊ณผ์
+
+(2) `ํตํฉ ํ
์คํธ`
+- ๊ฐ๋
: ๋ ๊ฐ ์ด์์ ๋จ์๊ฐ ํจ๊ป ์ ์์ ์ผ๋ก ๋์ํ๋์ง ํ
์คํธ
+- ํน์ง : ๋จ์ ํ
์คํธ๋ณด๋ค ์คํ์๊ฐ์ด ๋ ๊ธธ๊ณ ๋ณต์กํ๋ค. ๊ฐ๋ฐ์๋ ์์คํ
์ ์ ์ฒด์ ์ธ ๋์์ ๊ฒ์ฆํ ์ ์๋ค.
+
+#### ๐น์ฐจ์ด์
+| ๊ตฌ๋ถ | ๋จ์ ํ
์คํธ | ํตํฉ ํ
์คํธ |
+|:-------------:|:-------------:|:------------------------:|
+| ๋ชฉ์ | ๊ฐ๋ณ ๋ชจ๋์ ์ ํ์ฑ ๊ฒ์ฆ | ์ฌ๋ฌ ๋ชจ๋์ด ์ ์์ ์ผ๋ก ํจ๊ป ๋์ํ๋์ง ๊ฒ์ฆ |
+| ์คํ ์๋ | ๋น ๋ฆ | ๋๋ฆผ |
+| ๋ฌธ์ ๋ฐ์ ์ ์์ธ ํ์
| ์ฌ์ | ์ด๋ ค์ |
+
+#### ๐น๊ฒฐ๋ก
+๋จ์ ํ
์คํธ๋ฅผ ํตํด ๊ฐ๋ณ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๊ณ , ํตํฉ ํ
์คํธ๋ก ์ ์ฒด์ ์ธ ํ๋ฆ์ ์ฒดํฌํ๋ค.
+
+#### ๐์ฐธ๊ณ ์๋ฃ
+- [๋จ์ ํ
์คํธ์ ํตํฉ ํ
์คํธ์ ์ฐจ์ด์ ](https://f-lab.kr/insight/unit-vs-integration-test)
+
+
+
+## ๐งก์ถ๊ฐ ์ง๋ฌธ
+### ๐ค๊ทธ๋ผ ์
์ค์์ ์ด๋ค ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ๋์ค์ /ํจ์จ์ ์ธ๊ฐ?
+**โ
์คํ๋ง์์๋ `์์ฑ์ ์ฃผ์
` ๋ฐฉ์์ ๊ถ์ฅํ๋ค**
+
+#### ๐น์์ฑ์ ์ฃผ์
์ ์ฅ์
+1. ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ ํ๋ณด
+ - ์ค์ ๊ฐ๋ฐ์์ ์์กด ๊ด๊ณ์ ๋ณ๊ฒฝ์ด ํ์ํ ์ํฉ์ด ๊ฑฐ์ ์๋ค.
+ - ์์ฑ์ ์ฃผ์
์ ํตํด ๋ณ๊ฒฝ์ ๊ฐ์ผ์ฑ์ ๋ฐฐ์ ํ๊ณ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ด ์ข๋ค.
+2. ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฐฉ์ง ๊ฐ๋ฅ
+ - ์์ฑ์ ์ฃผ์
์ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ๋ ์์ , ๊ฐ์ฒด์ ์์ฑ ์์ ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
+3. ํ
์คํธ ์ฉ์ด
+ - ๋จ์ ํ
์คํธ๋ฅผ ์งํํ ๋ ์์ ์๋ฐ ์ฝ๋๋ก ํ
์คํธ๊ฐ ๊ฐ๋ฅํ๋ค.
+
+#### ๐์ฐธ๊ณ ์๋ฃ
+- [[Spring] ๋ค์ํ ์์กด์ฑ ์ฃผ์
๋ฐฉ๋ฒ๊ณผ ์์ฑ์ ์ฃผ์
์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ](https://mangkyu.tistory.com/125)
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..b731a84
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,34 @@
+plugins {
+ id 'java'
+ id 'org.springframework.boot' version '3.2.9'
+ id 'io.spring.dependency-management' version '1.1.7'
+}
+
+group = 'com.ceos21'
+version = '0.0.1-SNAPSHOT'
+
+java {
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(17)
+ }
+}
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'org.springframework.boot:spring-boot-starter-web'
+
+ implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
+ compileOnly 'org.projectlombok:lombok'
+ annotationProcessor 'org.projectlombok:lombok'
+ runtimeOnly 'com.h2database:h2'
+
+ testImplementation 'org.springframework.boot:spring-boot-starter-test'
+ testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
+}
+
+tasks.named('test') {
+ useJUnitPlatform()
+}
diff --git a/et HEAD~n b/et HEAD~n
new file mode 100644
index 0000000..158d467
--- /dev/null
+++ b/et HEAD~n
@@ -0,0 +1,17 @@
+[33mcommit 6f5c39a1af9ff97223780080d88cb76ba55cfd53[m[33m ([m[1;36mHEAD[m[33m -> [m[1;32mmaster[m[33m)[m
+Author: ์์ฑ์ฐ <128215774+yeonee911@users.noreply.github.com>
+Date: Sat Mar 15 20:52:45 2025 +0900
+
+ week 1
+
+[33mcommit 749e652fb1b931d95220118e8df98f8c189a7a9d[m[33m ([m[1;31morigin/yeonee911[m[33m, [m[1;31morigin/wlqgkrry[m[33m, [m[1;31morigin/mirupio[m[33m, [m[1;31morigin/master[m[33m, [m[1;31morigin/limdodod[m[33m, [m[1;31morigin/leerura[m[33m, [m[1;31morigin/hyesuhan[m[33m, [m[1;31morigin/challonsy[m[33m, [m[1;31morigin/WithFortuna[m[33m, [m[1;31morigin/SeoyeonPark1223[m[33m, [m[1;31morigin/HEAD[m[33m, [m[1;31morigin/Gothax[m[33m, [m[1;32myeonee911[m[33m)[m
+Author: limgahyun <114561842+limgahyun@users.noreply.github.com>
+Date: Fri Mar 7 13:46:35 2025 +0900
+
+ Update README.md
+
+[33mcommit 41f542373cec9dbc0526f2cc9e87a309fcc81bed[m
+Author: limgahyun <114561842+limgahyun@users.noreply.github.com>
+Date: Fri Mar 7 13:45:41 2025 +0900
+
+ Initial commit
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..37f853b
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000..faf9300
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,251 @@
+#!/bin/sh
+
+#
+# Copyright ยฉ 2015-2021 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
+#
+
+##############################################################################
+#
+# Gradle 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 Gradle
+#
+# 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/HEAD/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
+
+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
+ 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" )
+ 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
+
+
+# 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" \
+ -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/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..9d21a21
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,94 @@
+@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 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=.
+@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
+
+goto fail
+
+: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
+
+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/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/ceos21/spring_boot/Application.java b/src/main/java/com/ceos21/spring_boot/Application.java
new file mode 100644
index 0000000..deae1f6
--- /dev/null
+++ b/src/main/java/com/ceos21/spring_boot/Application.java
@@ -0,0 +1,34 @@
+package com.ceos21.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);
+ }
+
+ };
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ceos21/spring_boot/HelloController.java b/src/main/java/com/ceos21/spring_boot/HelloController.java
new file mode 100644
index 0000000..c49e699
--- /dev/null
+++ b/src/main/java/com/ceos21/spring_boot/HelloController.java
@@ -0,0 +1,14 @@
+package com.ceos21.spring_boot;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class HelloController {
+
+ @GetMapping("/")
+ public String index() {
+ return "Greetings from Spring Boot!";
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ceos21/spring_boot/Test.java b/src/main/java/com/ceos21/spring_boot/Test.java
new file mode 100644
index 0000000..2ab1c4c
--- /dev/null
+++ b/src/main/java/com/ceos21/spring_boot/Test.java
@@ -0,0 +1,14 @@
+package com.ceos21.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/ceos21/spring_boot/TestController.java b/src/main/java/com/ceos21/spring_boot/TestController.java
new file mode 100644
index 0000000..22e0b27
--- /dev/null
+++ b/src/main/java/com/ceos21/spring_boot/TestController.java
@@ -0,0 +1,22 @@
+package com.ceos21.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();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ceos21/spring_boot/TestRepository.java b/src/main/java/com/ceos21/spring_boot/TestRepository.java
new file mode 100644
index 0000000..b90d2ed
--- /dev/null
+++ b/src/main/java/com/ceos21/spring_boot/TestRepository.java
@@ -0,0 +1,5 @@
+package com.ceos21.spring_boot;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface TestRepository extends JpaRepository {}
\ No newline at end of file
diff --git a/src/main/java/com/ceos21/spring_boot/TestService.java b/src/main/java/com/ceos21/spring_boot/TestService.java
new file mode 100644
index 0000000..523f226
--- /dev/null
+++ b/src/main/java/com/ceos21/spring_boot/TestService.java
@@ -0,0 +1,20 @@
+package com.ceos21.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();
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
new file mode 100644
index 0000000..e02c51d
--- /dev/null
+++ b/src/main/resources/application.yml
@@ -0,0 +1,17 @@
+spring:
+ datasource:
+ url: jdbc:h2:tcp://localhost/~/ceos21
+ username: sa
+ password:
+ driver-class-name: org.h2.Driver
+
+ jpa:
+ hibernate:
+ ddl-auto: create
+ properties:
+ hibernate:
+ format_sql: true
+
+logging:
+ level:
+ org.hibernate.SQL: debug
\ No newline at end of file
diff --git a/src/test/java/com/ceos21/spring_boot/ApplicationTests.java b/src/test/java/com/ceos21/spring_boot/ApplicationTests.java
new file mode 100644
index 0000000..cfbe7af
--- /dev/null
+++ b/src/test/java/com/ceos21/spring_boot/ApplicationTests.java
@@ -0,0 +1,13 @@
+package com.ceos21.spring_boot;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class ApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/src/test/java/com/ceos21/spring_boot/HelloControllerTest.java b/src/test/java/com/ceos21/spring_boot/HelloControllerTest.java
new file mode 100644
index 0000000..94db221
--- /dev/null
+++ b/src/test/java/com/ceos21/spring_boot/HelloControllerTest.java
@@ -0,0 +1,31 @@
+package com.ceos21.spring_boot;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+public class HelloControllerTest {
+
+ @Autowired
+ private MockMvc mvc;
+
+ @DisplayName("DisplayName : ํ
์คํธ ์ด๋ฆ์ ์ค์ ํ ์ ์์ต๋๋ค")
+ @Test
+ public void getHello() throws Exception {
+ mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(content().string(equalTo("Greetings from Spring Boot!")));
+ }
+}
\ No newline at end of file
From b60202b8ae56c9bab7b4ea9bb07ee235bc654857 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=84=9C=EC=B1=84=EC=97=B0?=
<128215774+yeonee911@users.noreply.github.com>
Date: Sat, 15 Mar 2025 23:05:21 +0900
Subject: [PATCH 2/2] =?UTF-8?q?=EC=84=B1=EA=B3=B5=20=ED=99=94=EB=A9=B4=20?=
=?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 5 ++++-
.../static/\354\204\261\352\263\265!.png" | Bin 0 -> 119915 bytes
2 files changed, 4 insertions(+), 1 deletion(-)
create mode 100644 "src/main/resources/static/\354\204\261\352\263\265!.png"
diff --git a/README.md b/README.md
index 9125435..58b9eac 100644
--- a/README.md
+++ b/README.md
@@ -123,4 +123,7 @@
- ๋จ์ ํ
์คํธ๋ฅผ ์งํํ ๋ ์์ ์๋ฐ ์ฝ๋๋ก ํ
์คํธ๊ฐ ๊ฐ๋ฅํ๋ค.
#### ๐์ฐธ๊ณ ์๋ฃ
-- [[Spring] ๋ค์ํ ์์กด์ฑ ์ฃผ์
๋ฐฉ๋ฒ๊ณผ ์์ฑ์ ์ฃผ์
์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ](https://mangkyu.tistory.com/125)
\ No newline at end of file
+- [[Spring] ๋ค์ํ ์์กด์ฑ ์ฃผ์
๋ฐฉ๋ฒ๊ณผ ์์ฑ์ ์ฃผ์
์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ](https://mangkyu.tistory.com/125)
+
+## ๐์ฑ๊ณต
+
\ No newline at end of file
diff --git "a/src/main/resources/static/\354\204\261\352\263\265!.png" "b/src/main/resources/static/\354\204\261\352\263\265!.png"
new file mode 100644
index 0000000000000000000000000000000000000000..65acc297e3fe7d5b9b5590ab6f6fe05eb8ad6a75
GIT binary patch
literal 119915
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
z
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