์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Android Studio
- di
- Dialog
- http method
- 2024-08-21
- 2024-08-20
- ์ฝ๋์
- OOP
- Kotlin
- Factory Method Pattern
- ๊ธฐ์ด100์
- uri
- reflection
- url
- AndroidStudio
- ์ฑ์ฉํ์ ํ
- udp
- Python
- OpenAPI
- menutab
- fontstyle
- URN
- tcp
- datepicker
- FACTORY
- ์ด๋ ธํ ์ด์
- swagger
- ํ๋ IT&E
- IOC
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
๋ชฉ๋ก๐Spring/Basic (9)
dingdong coding
Bean Scope ๋ ๋ง๊ทธ๋๋ก ๋น์ด ์กด์ฌํ๋ ๋ฒ์๋ฅผ ๋ปํฉ๋๋ค. Bean Life Cycle ์์ ์ดํด๋ดค๋ฏ์ด ๋น์ ์ปจํ ์ด๋์ ์์๊ณผ ํจ๊ป ์์ฑ๋์ด์ Container๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ์ ์ง๋ฉ๋๋ค. ๋ํ Spring Container๋ ๋น์ ๋ฑ๋กํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด ์ธ์คํด์ค(Bean)๋ฅผ ์ฑ๊ธํค์ผ๋ก ๋ฑ๋กํ๊ณ ์ฑ๊ธํค ์ค์ฝํ๋ก ์์ฑ๋ฉ๋๋ค. ( ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋น์ ์ค์ฝํ๊ฐ ๋ช ์์ ์ผ๋ก ์ง์ ๋์ง ์์ผ๋ฉด ์ฑ๊ธํค์ด๋ค ) ๋์ ํด๋์ค์ @Scope( ) ์ด๋ ธํ ์ด์ ์ ํตํด ์ค์ฝํ ์ง์ //์ปดํฌ๋ํธ ์ค์บ ์๋ ๋ฑ๋ก @Scope("prototype") // @Scope(”singletone”) @Component public class HelloBean {} //์๋๋ฑ๋ก @Scope("prototype") // @Scope(..
Spring Container๋ ์๋ฐ ๊ฐ์ฒด(Bean)์ ์์ฑ๊ณผ ์๋ฉธ ๊ฐ์ ์๋ช ์ฃผ๊ธฐ(Life Cycle)๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์์ฑ๋ ์๋ฐ ๊ฐ์ฒด๋ค์๊ฒ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค. Bean Life Cycle • Spring์ Bean์ Java ๋๋ XML bean ์ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ์ธ์คํด์คํ ๋์ด์ผ ํฉ๋๋ค. • Bean์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๋ก ๋ง๋ค๊ธฐ ์ํด ์ฌ์ , ์ฌํ ์ด๊ธฐํ ๋จ๊ณ๋ฅผ ์ํํด์ผํ ์๋ ์์ต๋๋ค. • ๊ทธ ํ Bean์ด ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฉด Ioc Container์์ ์ ๊ฑฐ๋ฉ๋๋ค. • ๋ค๋ฅธ ์์คํ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๊ธฐ ์ํด ์ฌ์ ๋ฐ ์ฌํ ์๋ฉธ ๋จ๊ณ๋ฅผ ์ํํด์ผํ ์๋ ์์ต๋๋ค. ์ฆ, Bean์ Life Cycle์ด๋ ํด๋น ๊ฐ์ฒด๊ฐ ์ธ์ , ์ด๋ป๊ฒ ์์ฑ๋์ด ์๋ฉธ๋๊ธฐ ์ ๊น์ง ์ด๋ค ์..
Spring์์ ์ฌ์ฉ๋๋ Singleton ํจํด์ ํน์ง์ ์์๋ณด๊ธฐ ์ Spring Container์ Application Context์ ๋ํด ๋ณด๊ณ ์ค๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. Singleton Pattern ๋ฌธ์ ์ ๋จผ์ ์ฑ๊ธํค ํจํด์ ๊ตฌํํ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ Spring Container ์์ด ์ฑ๊ธํค ํจํด์ ์ ์ฉ์์ผฐ์ ๋ ๋ฌธ์ ์ ์ ๋ํด ์ดํด๋ด ์๋ค. public class Singleton { private static final Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; } private Singleton(){ } public void logic(){ System.out.println(..
JDBC (Java Database Connectivity) • JDBC๋ DB์ ์ ๊ทผํ ์ ์๋๋ก Java์์ ์ ๊ณตํ๋ ํ์ค API์ ๋๋ค. • ์ฆ, ๋ชจ๋ Java DataAccess ๊ธฐ์ ์ ๊ทผ๊ฐ์ด๋ฉฐ ๋ชจ๋ Persistence Framework๋ ๋ด๋ถ์ ์ผ๋ก JDBC API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์์ฑ(Persistence) build.gradle ์ค์ implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' ๊ทธ ๋ค์ ์ด๋ค DBMS๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ ์ฐ๊ฒฐ ์ค์ ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค. JDBC๋ฅผ ์ด์ฉํด ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ์ฝ๋ Connection์ผ๋ก ์ฐ๊ฒฐํ๊ธฐ ์ฟผ๋ฆฌ๋ฅผ ์์ฑ ํ PreparedStateme..
Spring ? • ์๋ฐ ์ธ์ด ๊ธฐ๋ฐ( ๊ฐ์ฒด์งํฅ ์ธ์ด )์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ ํ๋ ์์ํฌ • ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ๊ณผ์ ์ ๋น ๋ฅด๊ณ ํธ๋ฆฌํ๋ฉฐ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋ค. • ์ด๊ธฐ์ ๊ธฐ๋ณธ ์ค์ ๊ณผ ๊ธฐ์ ์ ์ ์ค์ ํ๋ฉด ์คํ๋ง๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ API์ ๋ํด ๊ฐ๋ฐ์๊ฐ ๊ฑฐ์ ์ ๊ฒฝ ์ธ ์ผ์ด ์๋ค. • ์ด๋ Spring Boot, Spring Framework์ ๋ํด ์์๋ณธ๋ค๋ฉด Spring์ด ์ผ๋ง๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋์ง ์ ์ ์๋ค. • spring framework, spring boot๋ฅผ ๋ชจ๋ ํฌํจํ ์คํ๋ง ์ํ๊ณ • ๊ฐ์ฒด์งํฅ ์ธ์ด๊ฐ ๊ฐ์ง ํน์ง์ ์ด๋ ค๋ด ์ข์ ๊ฐ์ฒด์งํฅ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋ค. • Spring์ ํต์ฌ ํน์ง์ธ ์ ์ด์ ์ญ์ (Ioc), ์์กด๊ด๊ณ ์ฃผ์ (DI)์ ์ด์ฉํด ๋คํ์ฑ์ ์ ์งํค๋ฉฐ..
์คํ๋ง ๋น(Spring Bean) ์ด๋? ๋น ( Bean ) Spring Ioc ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ์๋ฐ ๊ฐ์ฒด. ์ฆ, ์คํ๋ง ์ปจํ ์ด๋์ ์ํด์ ์๋ฐ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด ์ง๊ฒ ๋๋ฉด ์ด ๊ฐ์ฒด๋ฅผ ์คํ๋ง์ ์คํ๋ง ๋น์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ ๋๋ค. ์ ์ด์ ์ญ์ Ioc ๊ธฐ์กด์ Java ํ๋ก๊ทธ๋๋ฐ์์๋ ํด๋์ค๋ฅผ ์์ฑํ๊ณ new๋ก ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ์ฌ ์ฌ์ฉํ์ต๋๋ค. ํ์ง๋ง Spring์์๋ new๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ ๊ฐ์ฒด๊ฐ ์๋, Spring์ ์ํด ๊ด๋ฆฌ๋์ด์ง๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ, Spring์ ์ํด ์์ฑ๋๊ณ ๊ด๋ฆฌ๋๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ Bean์ด๋ผ ํฉ๋๋ค. Spring Bean, Ioc Container์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ 1. Annotation ์ด์ฉ • @Component ์ ๋ ธํ ์ด์ ์ด ์๋ค๋ฉด ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก ๋ฉ..
MVC๋? MVC ํจํด์ ์ํคํ ์ณ๋ฅผ ์ค๊ณํ๊ธฐ ์ํ ๋์์ธ ํจํด์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ ๊ตฌ์ฑ์์๋ฅผ 3๊ฐ์ง๋ก ๋๋๋๋ค. ์ด๋ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ๋ถ์์ผ ์๋ก ์ํฅ์์ด ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. • M ( Model ) "๋ฌด์์" - ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปดํฌ๋ํธ - ์ปจํธ๋กค๋ฌ๊ฐ ํธ์ถํ ๋, ์์ฒญ์ ๋ง๋ ์ญํ ์ ์ํํฉ๋๋ค. - ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ์์ญ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋๋ค. • V ( View ) - ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI) ์ปดํฌ๋ํธ - Controller๋ก ๋ถํฐ ๋ฐ์ ๋ชจ๋ธ์ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ๊ณ ์ถ๋ ฅํ ํ๋ฉด์ ๋ง๋๋ ์ผ์ ํฉ๋๋ค. - ์์ฑ๋ ํ๋ฉด์ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์กํ๊ณ ์ถ๋ ฅํ๊ฒ ๋ง๋ญ๋๋ค. - ์ฌ์ฉ์์ ์ํธ์์ฉ(๋ฐ์ดํฐํ์, ์ ๋ ฅ ํผ ๋ฑ)์ ์ํ ์ธํฐํ์ด์ค๋ฅผ ..
์ด๋ ธํ ์ด์ ์ด๋? • @ ์ฌ์ธ ํ๋๋ก ๋ง์ ์ปจํ ์คํธ๋ค์ ์ ๊ณต ๋ฐ์ ์ ์๊ฒ ํ๋ค. • @ ์ฌ์ธ์ผ๋ก ์์ํ๋ ๊ฒ์ ์ด๋ ธํ ์ด์ ์ด๋ผ๊ณ ํ๋ค. Spring์ผ๋ก ๊ฐ๋ฐํ ๋ ์ด๋ ธํ ์ด์ ์์ด ๊ฐ๋ฐํ๋ ๊ฒ์ ๊ฑฐ์ ๋ณผ ์ ์๋ค. Controller ๋ฑ๋ก์ด๋ Service, Repository, Test ๋ฑ ์์ฐ์ด๋ ๊ณณ์ด ์์ ์ ๋๋ค. ๋ง์ด ์ฐ์์๋ ๊ฐ๋ฐํ๋ค๊ฐ ๊ฐ๋ ์๊ฐ์ด ์๋๊ฑฐ๋ ๊น๋จน์ ๋๊ฐ ์๊ธฐ์ ์ง๊ธ์ด๋ผ๋ ์กฐ๊ธ์ฉ ์ ๋ฆฌํ ์๊ฐ์ด๋ค. ํฌ์คํธ์ ์ฒ๋ผ ๊ณ์ ์ถ๊ฐํ ์์ โ๏ธ @AfterEach : ๊ฐ ํ ์คํธ๊ฐ ์ข ๋ฃ๋ ๋๋ง๋ค ์คํ 1) Test Case๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ : ๋ฉ๋ชจ๋ฆฌ DB์ ๋จ์์๋ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ค. (์ง์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํด์ค) clearStore ๋ฉ์๋ public void clearStore(){ st..
์ผ๋ฐ์ ์ธ ์๋ฐ ํ๋ก๊ทธ๋จ์์๋ ๊ฐ ๊ฐ์ฒด๋ค์ด ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฒฐ์ ํ๊ณ ๊ฐ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑ ๋ฐ ์กฐ์ํ๋ ์์ ์ ํ์ต๋๋ค. ( ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ์ฌ ๋ฉ์๋ ํธ์ถ ) ์ฆ, ๋ชจ๋ ์์ ์ ์ฌ์ฉ์๊ฐ ์ ์ดํ๋ ๊ตฌ์กฐ์ ๋๋ค. ํ์ง๋ง ์ ์ด์ ์ญ์ ์ด ์ ์ฉ๋ ๊ฒฝ์ฐ, ๊ฐ์ฒด์ ์์ฑ์ ํน๋ณํ ๊ด๋ฆฌ ์์ ์ฃผ์ฒด์๊ฒ ๋งก๊น๋๋ค. 1. ์ ์ด์ ์ญ์ ( Ioc, Inversion of Control ) : ์ ์ด์ ์ญ์ ์ด๋, ๋ง ๊ทธ๋๋ก '์ญ์ผ๋ก ์ ์ดํ๋ ๊ฒ'์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ๋๊ฐ ์ด๋ค ๊ฒ์ ์ ์ดํ๋์ง ์์๋ด ์๋ค. ๊ธฐ์กด = ๊ตฌํ ๊ฐ์ฒด ์ค์ค๋ก, ๊ฐ๋ฐ์๊ฐ ์ญ์ ๋ ์ฃผ์ฒด = ์ธ๋ถ ์กฐ๋ฆฝ๊ธฐ (assembler) + Spring FrameWork์์๋ Ioc Container ๋ฌด์์ ์ ์ด = ๊ตฌํ ๊ฐ์ฒด์ ์์ฑ ๋ฐ ์ฐ๊ฒฐ, ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ, ์ ์ด ํ๋ฆ์ ๋ํ ๊ถํ..