๋ชฉ์ฐจ
Spring ํ์ ๋ฐฐ๊ฒฝ
๊ธฐ์
๋ค์ ๊ธฐ์
์ฉ ๋๊ท๋ชจ ๋ฐ์ดํฐ, ๋ถ์ฐ ์์คํ
์ ๊ฐ๋ฐํด์ผ ํ๋๋ฐ,
JAVA SE(Java Standard Edition)๋ง์ผ๋ก๋ ๋ถ์กฑํ์.
์ด์ Oracle์ด JAVA EE๋ฅผ ์ถ์ํ์์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ด ์กด์ฌํจ.
- Java EE ์ ํ๋ฆฌ์ผ์ด์ → ๋ณต์กํ๊ณ ๋ฌด๊ฑฐ์
- EJB(Enterprise Java Beans) → Java EE์์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ชจ๋ํํ๋ ๊ธฐ์ ์ด์ง๋ง ์ค์ ์ด ๋ณต์ก
Spring → Java EE์ ๋จ์ ๋ณด์
Spring์ Java EE์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํ์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ.
- ์ค์ ํ์ผ, ์ปจํ ์ด๋, ๋น ๋ฑ๋ก, ์์กด์ฑ ์ค์ ๋ฑ์ ์ง์ ์ฒ๋ฆฌํด์ผ ํจ
- ๋ฐฐํฌ๊ฐ ์ด๋ ค์ → WAR ํ์ผ์ ๋ง๋ค์ด์ผ ํจ
- ๋ด์ฅ ์น ์๋ฒ๊ฐ ์์ → ๋ณ๋๋ก ์ถ๊ฐํด์ผ ํจ
Spring Boot → Spring์ ๋ ์ฝ๊ฒ ์ฌ์ฉ
Spring Boot๋ Spring์ ๋ณด๋ค ๊ฐํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํ ํ๋ ์์ํฌ๋ก, ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง.
- ์ค์ ํ์ผ ์์ฑ ๋ถํ์ → ํ๋ก์ ํธ ์ค์ + ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ์๋ ์ฒ๋ฆฌ
- ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ ์ค์ ๊ฐ๋ฅ
- spring-boot-starter-* ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ์์กด์ฑ ๊ด๋ฆฌ ํธ๋ฆฌ
- ๋ด์ฅ ์น ์๋ฒ ์ง์ (Tomcat, Jetty, Undertow ๋ฑ)
- ์คํ ๊ฐ๋ฅํ JAR ํ์ผ ์์ฑ ๊ฐ๋ฅ
- Spring Boot๋ Spring MVC, JPA, Security ๋ฑ ๊ธฐ๋ฅ์ ์๋ ์ค์
โ
์ฆ, ๋น ๋ฅธ ๊ฐ๋ฐ์ Spring Boot,
โ
์ธ๋ฐํ ์ ์ด์ ์ค์ ์ด ํ์ํ ๊ฐ๋ฐ์ Spring์ ์ง์ ํ์ฉํ๋ ๊ฒ์ด ์ ํฉํจ.
Spring ํต์ฌ ๊ธฐ๋ฅ
์ ์ด์ ์ญ์ (Inversion of Control, IoC)
์ ์ด์ ์ญ์ (IoC)์ ๊ฐ์ฒด์ ์์ฑ ๋ฐ ํ๋ฆ ์ ์ด๋ฅผ ๊ฐ๋ฐ์๊ฐ ์๋ ํ๋ ์์ํฌ(Spring)๊ฐ ๋ด๋นํ๋ ๊ฐ๋
์ฆ, ๊ฐ์ฒด์ ์์ฑ, ๊ด๋ฆฌ, ์๋ช
์ฃผ๊ธฐ ๋ฑ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ์ง ์๊ณ , ํ๋ ์์ํฌ๊ฐ ๋์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
DI(Dependency Injection) - ์์กด์ฑ ์ฃผ์
๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ํ๋ ์์ํฌ๊ฐ ๊ด๋ฆฌํ์ฌ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ ์ฐ์ฑ์ ๋์
- `@Component` `@Service` `@Controller`→ ๋น(Bean) ๋ฑ๋ก
- `@Autowired` `@Beans` → ๊ฐ์ฒด ์ฃผ์
โ Spring์์ IoC๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์ผ๋ก DI(์์กด์ฑ ์ฃผ์ )์ ์ฌ์ฉํจ.
https://hyejux.tistory.com/709
[Spring] IoC (์ ์ด์์ญ์ ), DI (์์กด์ฑ์ฃผ์ )
๐ป IoC (Inversion of Control) ์ ์ด์ ์ญ์ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์์กด์ฑ ๊ด๋ฆฌ์ ์ ์ด๋ฅผ ํ๋ ์์ํฌ / ์ปจํ ์ด๋์ ๋งก๊น (๊ฐ๋ฐ์๋ ๊ด์ฌํ์ง ์๋๋ค)๊ฐ์ฒด๋ฅผ ํ์ํ ๋ ์์ฑํด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋ฏธ๋ฆฌ ์์ฑํด
hyejux.tistory.com
AOP(Aspect-Oriented Programming) - ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ
๊ณตํต ๊ธฐ๋ฅ(๋ก๊น , ํธ๋์ญ์ , ๋ณด์ ๋ฑ)์ ๋ถ๋ฆฌํ์ฌ ๋ชจ๋ํํจ์ผ๋ก์จ ์ฌ์ฌ์ฉ์ฑ์ ๋์.
- `@Aspect`, `@Before`, `@After`, `@Around`
ํธ๋์ญ์ ๊ด๋ฆฌ(Transaction Management)
๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํธ๋์ญ์ ์ ๋กค๋ฐฑ ๋ฐ ์ปค๋ฐํ๋ ๊ธฐ๋ฅ ์ ๊ณต.
- @Transactional
MVC ์น ํ๋ ์์ํฌ
Spring MVC๋ฅผ ํตํด ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ง์ํ๋ ํ๋ ์์ํฌ ์ ๊ณต.
- `@Controller`, `@RestController`, `@RequestMapping`, `@GetMapping`, `@PostMapping`
๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ฒฐ์ ์ฝ๊ฒ ๋์์ฃผ๋ ๊ธฐ๋ฅ ์ ๊ณต.
- JDBC, JPA, Hibernate ๋ฑ
- `@Repository`