๐Spring
Spring์ด๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด ๋ชจ๋ ๊ธฐ๋ฅ์ ์ข ํฉ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒฝ๋ํ๋ ์๋ฃจ์ ์ด๋ค. ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ๊ณ ์ค์ํ๊ธฐ ์ฌ์ด Low Level์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ Business Logic ๊ฐ๋ฐ์ ์ ๋ ํ ์ ์๋๋ก ํด์ค๋ค.
์ฃผ์ ํน์ง
Spring์ด๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด ๋ชจ๋ ๊ธฐ๋ฅ์ ์ข ํฉ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒฝ๋ํ๋ ์๋ฃจ์ ์ด๋ค. ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ๊ณ ์ค์ํ๊ธฐ ์ฌ์ด Low Level์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ Business Logic ๊ฐ๋ฐ์ ์ ๋ ํ ์ ์๋๋ก ํด์ค๋ค.
์ฃผ์ ํน์ง
1. ๊ฒฝ๋ ์ปจํ ์ด๋
์คํ๋ง์ ์๋ฐ๊ฐ์ฒด๋ฅผ ๋ด๊ณ ์๋ ์ปจํ ์ด๋์ด๋ค.
์คํ๋ง ์ปจํ ์ด๋๋ ์๋ฐ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ๊ณผ ๊ฐ์ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ค.
์ธ์ ๋ ์ง ์คํ๋ง ์ปจํ ์ด๋๋ก๋ถํฐ ํ์ํ ๊ฐ์ฒด๋ค์ ๊ฐ์ ธ์์ ์ฌ์ฉํ ์ ์๋ค.
2. POJO(Plain Old Java Object)
- ํน์ ํ๊ฒฝ์ด๋ ๊ธฐ์ ์ ์ข ์์ ์ด์ง ์์ ๊ฐ์ฒด์งํฅ ์๋ฆฌ์ ์ถฉ์คํ ์๋ฐ ๊ฐ์ฒด
- ํ ์คํธํ๊ธฐ ์ฉ์ดํ๋ฉฐ, ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ์์ ๋กญ๊ฒ ์ ์ฉํ ์ ์๋ค.
3. PSA(Portable Service Abstraction)
- ํ๊ฒฝ๊ณผ ์ธ๋ถ๊ธฐ์ ์ ๋ณ๊ฒฝ๊ณผ ๊ด๊ณ์์ด ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ๊ธฐ์ ์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ ์ค๊ณ ์์น
- ํธ๋์ญ์ ์ถ์ํ, ๋ฐ์ดํฐ ์ก์ธ์ค์ Exception ๋ณํ ๊ธฐ๋ฅ.. ๋ฑ ๊ธฐ์ ์ ์ธ ๋ณต์กํจ์ ์ถ์ํ๋ฅผ ํตํด Low Level์ ๊ธฐ์ ๊ตฌํ ๋ถ๋ถ๊ณผ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌ
- ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๊ณ์์ด ๋์ผํ๊ฒ ์ ์ฉํ ์ ์๋ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฐฉ์
4. IoC(Inversion of Control) / DI(Dependency Injection)
- IoC๋ ์คํ๋ง์ด ๊ฐ๊ณ ์๋ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์ด๋ค.
- ๊ฐ์ฒด์งํฅ ์ธ์ด์์ Object ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์์ ๊ฒฐ์ ํ๋ ๊ฒ
- ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๊ฐ ๋์จํ๊ฒ ์ฐ๊ฒฐ๋๋ค(loose coupling)
- IoC์ ๊ตฌํ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ DI์ด๋ค.
- ์๋ฐ์ ๊ฐ์ฒด ์์ฑ ๋ฐ ์์กด๊ด๊ณ์ ์์ด ๋ชจ๋ ์ ์ด๊ถ์ ๊ฐ๋ฐ์์๊ฒ ์์๋ค.
- Servlet๊ณผ EJB๊ฐ ๋ํ๋๋ฉด์ ๊ธฐ์กด์ ์ ์ด๊ถ์ด Servlet Container ๋ฐ EJB Container์ ๋์ด๊ฐ๊ฒ ๋์๋ค.
- ์คํ๋ง์์๋ ๊ฐ์ฒด์ ๋ํ ์์ฑ๊ณผ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณ ํ๊ณ ์๋๋ฐ ์ด๋ฌํ ์ด์ ๋ก Spring Container, IoC Container๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
DI๋ ์ ์ฐํ๊ฒ ํ์ฅ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋๊ณ ๊ฐ์ฒด ๊ฐ์ ์์กด๊ด๊ณ๋ ์ธ๋ถ์์ ๋ค์ด๋๋ฏนํ๊ฒ ์ค์
์คํ๋ง์ ์ค์ ํ์ผ์ด๋, ์ด๋ ธํ ์ด์ ์ ํตํด์ ๊ฐ์ฒด ๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ์ค์ ํ ์ ์๋ค.
๋ฐ๋ผ์ ๊ฐ์ฒด๋ ์์กดํ๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๊ฑฐ๋ ๊ฒ์ํ ํ์๊ฐ ์๋ค.
5. AOP(Aspect Oriented Programming)
- ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ฅผ ํตํด์ ์ํํธ์จ์ด์ ๋ชจ๋์ฑ์ ํฅ์
- ๊ณตํต ๋ชจ๋์ ์ฌ๋ฌ ์ฝ๋์ ์ฝ๊ฒ ์ ์ฉ ๊ฐ๋ฅ
6. ๊ธฐํ
- ์คํ๋ง์ ์์์ฑ๊ณผ ๊ด๋ จ๋ ๋ค์ํ API๋ฅผ ์ง์ํ๋ค. JDBC๋ฅผ ๋น๋กฏํ์ฌ iBatis, myBatis, Hibernate, JPA ๋ฑ DB ์ฒ๋ฆฌ๋ฅผ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๋์ ์ง์ํ๊ณ ์๋ฐ.
- ์คํ๋ง์ ๋ค์ํ API์ ๋ํ ์ฐ๋์ ์ง์ํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ๋ค์ํ API๋ฅผ ์ค์ ํ์ผ๊ณผ ์ด๋ ธํ ์ด์ ์ ํตํด์ ์์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๊ณ ์๋ค.
Spring Core | ์คํ๋ง ํ๋ ์์ํฌ์ ํต์ฌ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, Core์ปจํ ์ด๋์ ์ฃผ์์ปดํฌ๋ํธ๋ BeanFactory์ด๋ค. |
Spring Context | ๊ตญ์ ํ๋ ๋ฉ์์ง, Application ์๋ช ์ฃผ๊ธฐ ์ด๋ฒคํธ, ์ ํจ์ฑ ๊ฒ์ฆ ๋ฑ์ ์ง์ํจ์ผ๋ก์จ, BeanFactory์ ๊ฐ๋ ์ ํ์ฅํ๋ค. |
Spring AOP | ์ค์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํตํด AOP๊ธฐ๋ฅ์ ์คํ๋งํ๋ ์์ํฌ๊ณผ ์ง์ ํตํฉ์ํจ๋ค. |
Spring DAO | Spring JDBC DAO์ถ์๋ ์ด์ด๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒค๋๋ค์ ์์ธ ํธ๋ค๋ง๊ณผ ์ค๋ฅ๋ฉ์์ง๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ํ ์์ธ๊ณ์ธต์ ์ ๊ณตํ๋ค. |
Spring ORM | ์คํ๋งํ๋ ์์ํฌ๋ ์ฌ๋ฌ ORMํ๋ ์์ํฌ์ ํ๋ฌ๊ทธ์ธ๋์ด, Object Relarional ํด(JDO,IBatis)์ ์ ๊ณตํ๋ค. |
Spring Web | Web Context module์ Application Context module ์์์ ๊ตฌํ๋์ด, Web๊ธฐ๋ฐ Application context๋ฅผ ์ ๊ณตํ๋ค. |
Spring Web MVC | ์คํ๋ง ํ๋ ์์ํฌ๋ ์์ฒด์ ์ผ๋ก MVC์ํฌ๋ฅผ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ, ์คํ๋ง๋ง ์ฌ์ฉํด๋ MVC๊ธฐ๋ฐ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ด๋ ต์ง ์๊ฒ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค. |
๐Container
Container๋?
- ๊ฐ์ฒด์ ์์ฑ, ์ฌ์ฉ, ์๋ฉธ์ ํด๋นํ๋ ๋ผ์ดํ์ฌ์ดํด์ ๋ด๋น
- ๋ผ์ดํ์ฌ์ดํด์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ฉ์ ํ์ํ ์ฃผ์ ๊ธฐ๋ฅ์ ์ ๊ณต
Container์ ๊ธฐ๋ฅ
- ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ
- Dependency ๊ฐ์ฒด ์ ๊ณต
- Thread ๊ด๋ฆฌ
- ๊ธฐํ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ ํ๊ฒฝ
ํ์์ฑ
- ๋น์ฆ๋์ค ๋ก์ง ์ธ์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ๋ค์ ๋ํด์๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๋๋ก ํ๊ธฐ ์ํจ
- ์๋น์ค ๊ฐ์ฒด๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฐ๊ฐ Factory ๋๋ Singleton ํจํด์ ์ง์ ๊ตฌํํ์ง ์์๋ ๋จ
https://sujin7837.tistory.com/416
https://java-is-happy-things.tistory.com/37
'๐ป์น(Web)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฝ๋ ๋ฆฌํฉํ ๋ง (1) | 2024.12.20 |
---|---|
JSP(Jakarta Server Pages) (0) | 2024.12.01 |
Servlet (0) | 2024.12.01 |
[๊ณตํตํ๋ก์ ํธ]5์ฃผ์ฐจ: React Openvidu ๊ตฌํ (0) | 2024.08.11 |
[React]์ด๊ธฐ์ธํ (0) | 2024.07.18 |