Spring๐ฑ
EJB (Enterprise Java Beans) ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ๋ฎ์ ๊ฐ๋ฐ์์ฐ์ฑ์ ์ธํด ๋ง๋ ๊ฒ์ด Spring ์ด๋ค.
๋ค์ํ ํธ์์ฑ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์ ํธํ๊ฒ ํด์ฃผ๋ ์ํฐํ๋ผ์ด์ฆ์ฉ ๊ฒฝ๋๊ธ ํ๋ ์์ํฌ์.
๐ ๊ฒฝ๋๊ธ
- ํ๋ ์์ํฌ ์์ฒด๋ ๋ฌด๊ฒ์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ง์ ์ธํฐํ์ด์ค๋ก ๊ตฌํ์ด ๋์ด ์๊ธฐ ๋๋ฌธ์
์ค์ ์์ฑ ์ฝ๋๊ฐ ์ ์ด ๊ฒฝ๋๊ธ์ผ๋ก ์นญํจ.
ํน์ง
POJO (plain Old Java Object) : ์์ํ Java ๋ง์ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ๋ปํจ.
Spring์ด ํ์ํ๊ฒ๋ ์ด์ .
EJB (Enterprise Java Beans) ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ๋ฎ์ ๊ฐ๋ฐ์์ฐ์ฑ์ ์ธํด ๋ง๋ ๊ฒ์ด Spring ์ด๋ค.
์์ํ ์๋ฐ๊ฐ์ฒด๋ก ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๊ฒฝ, ํ๋ ์์ํฌ์ ์์กดํ์ง ์๊ณ ์ข ์๋์ง ์๊ฒ ํด์ผํ๋ ๊ฐ๋ฐ๋ก .
IoC (Inversion of Control) : "์ ์ด์ ์ญ์ " / DI (dependency Injection) : "์์กด์ฑ ์ฃผ์ "
์์กด๊ด๊ณ๋ก ์ฌ์ฉ๋ ํด๋์ค๋ฅผ ์ง์ ์์ฑํ๋๊ฒ ์๋ ์ธ๋ถ๋ก๋ถํฐ ํ์ํ ๋์ ์์ฑํ๋๊ฒ. IoC ์ปจํ ์ด๋์์ ๊ด๋ฆฌ๋๋ค.
- DI์ ๊ฐ์ ์์ ์ ๊ฐ๋ฐ์๊ฐ ํ๋๊ฒ ์๋ ํ๋ ์์ํฌ๊ฐ ํด์ค๋ค.
- ๋ณดํต 3๊ฐ์ง ๋ฐฉ๋ฒ์ ํตํด DI๋ฅผ ํ ์ ์๋ค.
- ์์ฑ์ ์ฃผ์ : ์์ฑ์๋ฅผ ํตํ ์์กด์ฑ ์ฃผ์ . ์คํ๋ง์์ ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ
class A {
private final B b;
// ์์ฑ์๋ฅผ ํตํ ์ฃผ์
public A(B b){
this.b = b;
}
}
- ํ๋ ์ฃผ์ : ํ๋์ @Autowired ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ ์ฃผ์ .
class A {
@Autowired
private B b;
}
- Setter ์ฃผ์ : ๊ฐ๋ณ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํด์ผํ ์ํฉ์์ ์ฌ์ฉ๋จ / ๊ฑฐ์ ์์
class A {
@Autowired
public void setB(B b){
this.b = b;
}
}
โ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ์ ์ฃผ์ ์ด ๊ถ์ฅ๋๋ค.
์ํ์ฐธ์กฐ ์๋ฐฉ
**Application ์๋์์ **์์ ์ํ์ฐธ์กฐ๋ฅผ ํ์ธํ ์ ์๋ค. โป Spring Boot 2.6 ๋ถํฐ๋ ์ํ์ฐธ์กฐ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ดํ ๋ฒ์ ์์๋ง ํจ๊ณผ๊ฐ ์๋ค.
๋ถ๋ณ์ฑ ๋ณด์ฅ
Application ์คํ ์์ ์์ ์์กด์ฑ์ด ์ฃผ์ ๋๊ณ final ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ฐฉ๋ฒ๊ณผ ๋ฌ๋ฆฌ ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ ์ ๋ณด์ฅํ ์ ์๋ค.
ํ ์คํธ์ ํธ๋ฆฌํจ
์ปดํ์ผ ์์ ์ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ์ ํ ์คํธ ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅํ๊ณ , ๋๋ฝ ๊ฐ์ฒด๊ฐ ์์ ๊ฒฝ์ฐ ์ปดํ์ผ ์์ ์์ ํ์ธ๋๊ธฐ ๋๋ฌธ์ ํ ์คํธ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ํ ์ ์๋ค.
AOP (Aspect Oriented Programming) : "๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ"
๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ ํน์ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ฌ์ฌ์ฉ, ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๊ฒ ํ๋๊ฒ.
@Aspect ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉฐ@Aspect class A{ // Around: ํ์ผ์ ์คํ ์ ํ๋ก ์ฒ๋ฆฌ ๋จ @Around("b()") public void test(){ // b() ๋ฉ์๋์ ์ ์ฉ๋ ์ฝ๋ } // Before: ํ์ผ์ด ์คํ ์ ์ฒ๋ฆฌ ๋จ @Before("b()") public void test2(){ // ์๋ต } // After Returning: ํ๊ฒ์ด ์คํ ํ ์ฒ๋ฆฌ ๋จ @After Returning("b()") public void test3(){ // ์๋ต } // After Throwing: ํ๊ฒ์ด ์์ธ๋ฅผ ๋ฐ์์ํค๋ฉด ์ฒ๋ฆฌ ๋จ @After Throwing("b()") public void test4(){ // ์๋ต } }
์ด์ ๊ฐ์ด ์คํ, ์์ธ์ฒ๋ฆฌ ์ด๋ฒคํธ ๋ฐ์์ ์ฒ๋ฆฌ๋๊ฒ ํ ์ ์๋ค.
PSA (Portable Service Abstraction) : "๊ฐํธํ ์ถ์ํ ์๋น์ค"
๊ฐ์ ์ถ์ํ ๊ณ์ธต๋ด์ ๋ค๋ฅธ ์๋น์ค๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์์ ์์ด ๊ต์ฒด๊ฐ ๊ฐ๋ฅํ๋ค.
์์กด์ฑ์ spring-boot-starter-web > spring-boot-starter-webflux๋ก ๋ณ๊ฒฝ๋ง ํด๋ tomcat์ด ์๋ netty๋ก ์คํ์ด ๊ฐ๋ฅํ๋ค. โณ ์คํ๋ง์์ ์๋น์ค๊ฐ ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ
์ฅ์
์ ํํ :
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ถ์ํ ์ธํฐํ์ด์ค ๋ฑ ์ ํํ๋ ๋ถ๋ถ์ผ๋ก ์ผ์ ์์ค ์ด์์ ํ์ง์ ์ ์งํ๊ณ ์์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค.
IoC / DI :
- ๊ฐ๋ฐ์๊ฐ ํด์ผํ ๋ถ๋ถ์ ํ๋ ์์ํฌ๊ฐ ํด์ค์ผ๋ก์จ ์์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค.
Spring Boot ๐ผ
์ค์ ์ด ๊ฐํธํ ์คํ๋ง๊ธฐ๋ฐ ํ๋ ์์ํฌ
๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ์ ์คํ๋ง๊ณผ ๋์ผํจ.
spring initializr ๋ฅผ ํตํด ๋ง๋ค๊ฑฐ๋ InteillJ์ ๊ฐ์ IDE๋ฅผ ํตํด ํ๋ก์ ํธ ์์ฑ๊ฐ๋ฅ
์ฅ์
๋ด์ฅ WAS :
- ํ๋ก์ ํธ๋ด์ WAS๋ฅผ ๊ฐ์ง๊ณ ์์ด ๊ฐํธํจ.
- spring-boot-starter-web์ด Tomcat์ ๋ด์ฅ
โณ spring-boot-starter-webflux์ ๊ฒฝ์ฐ netty๋ก ์ค์ ๊ฐ๋ฅ
์๋ ํ๊ฒฝ์ค์ :
- application.properties์ DB, View, logging ๋ฑ ๊ฐํธํ๊ฒ ์ค์ ํ ์ ์์.
๋ฐฐํฌ :
- Jar๋ก ํ๋ก์ ํธ ๋น๋๊ฐ ๊ฐ๋ฅํ๋ค.Jar๋ก ๋น๋ํ์ฌ ๊ฐ๋จํ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํจ.
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring์ ํต์ฌ ๊ฐ๋ (POJO, IoC/DI, AOP, PSA) (0) | 2023.06.14 |
---|---|
Spring Boot ๐ผ ๊ตฌ๋ ๋ฐ ํ ์คํธ (0) | 2023.06.14 |
Spring Boot ๐ผ ํ๋ก์ ํธ ๊ตฌ์กฐ (0) | 2023.06.14 |
Spring Boot๐ผ ํ๋ก์ ํธ ์์ฑํ๊ธฐ (0) | 2023.06.14 |
Spring Boot ๐ผ ํ๊ฒฝ ์ค์ (0) | 2023.06.14 |