๋ค์ด๊ฐ๊ธฐ์ ์์...
๐ง Spring Framework์ SpringBoot์ ์ฐจ์ด๋ฅผ ์์๋์....?
Spring Framework
- ์๋ฐ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ๋ ์์ํฌ๋ก ์์กด์ฑ ์ฃผ์
(DI, Dependency Injection)๊ณผ ์ ์ด์ญ์ (IOC, Inversion Of Control), ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(AOP, Aspect Oriented Programming)์ด ๊ฐ์ฅ ์ค์ํ ์์
- ์ ์์๋ค์ ํตํด ๋์จํ ๊ฒฐํฉ(Loose Coupling)์ ๋ฌ์ฑํ ์ ์์
- ์์ ๊ฐ์ด ๋์จํ ๊ฒฐํฉ์ผ๋ก ๊ฐ๋ฐํ ์ดํ๋ฆฌ์ผ์ด์
๋จ์ ํ
์คํธ๋ฅผ ์ํํ๊ธฐ ์ฉ์ดํจ
์์กด์ฑ ์ฃผ์
(DI, Dependency Injection)
์์ ์ฝ๋
์์กด์ฑ ์ฃผ์
์ ์ฌ์ฉํ์ง ์์ ์ฝ๋
@RestController
public class NoDIController {
private MyService service = new MyServiceImpl();
@GetMapping("/hello")
public String getHello(){
return service.getHello();
}
}
- ์์ ์ฝ๋์ ๊ฐ์ด DI๋ฅผ ์ฌ์ฉํ์ง ์์ ์ฝ๋์ ๊ฒฝ์ฐ
- Controller๋
MyService
๊ฐ์ฒด์ ์์กดํ๊ฒ ๋จ
- ์์ ์ฝ๋์ฒ๋ผ ๊ฐ์ฒด์ ์ธ์คํด์ค๋ฅผ ์ป๊ฒ ๋๋ฉด ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ์ฌ๋ผ๊ฐ
- ์ด๋ฐ ์ฝ๋ ์์ฑ์ ๋จ์ํ
์คํธ๋ฅผ ์ํด Mock ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋จ
์์กด์ฑ ์ฃผ์
์ ์ฌ์ฉํ ์ฝ๋
@Service
public class MyServiceImpl implements MyService {
@Override
public String getHello(){
retunr "Hello";
}
}
@RestController
public class DIController{
My Service = myService;
@Autowired
public DIController(MyService myService){
this.myService = myService;
}
@GetMapping("/hello")
public Sting getHello(){
retunr mySerVice.getHello();
}
}
๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(AOP, Aspect Oriented Programming)
- ์คํ๋ง ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ค ํ๋
- AOP๋ ์ฝ๊ฒ ๋งํด, OOP๋ฅผ ๋ณด์ํ๋ ์๋จ์ผ๋ก, ์ฌ๋ฌ ๊ณณ์ ์ฐ์ด๋ ๊ณตํต ๊ธฐ๋ฅ์ ๋ชจ๋ํํ์ฌ ํ์ํ ๊ณณ์ ์ฐ๊ฒฐํจ์ผ๋ก์จ ์ ์ง๋ณด์ ๋๋ ์ฌ์ฌ์ฉ์ ์ฉ์ดํ๋๋ก ํ๋๊ฒ
- AOP๋ฅผ ํตํด ๊ธฐ์กด ํ๋ก์ ํธ์ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ก์ง ์์ ์์ด ์ถ๊ฐํ ์ ์์
- ์ด๋ฐ ๊ฐ๋ฐ ๋ฐฉ์์ ํตํด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํจ
SpringBoot
- Spring ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ ์ฝ๊ฒ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ๋๋ ๋๊ตฌ
- Spring Boot๋
Convention Over Configuration
์ ์์น์ ๋ฐ๋ผ, ์ต์ํ์ ์ค์ ์ผ๋ก Spring ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์ ํ๊ณ ์คํํญ ์ ์๊ฒ ํจ
- ๋ด์ฅ ์๋ฒ, ์๋ ์ค์ , ์คํํฐ ์ข
์์ฑ ๋ฑ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ธํ๋ผ์ ์ ๊ฒฝ ์ฐ๋ ์๊ฐ์ ์ค์ด๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์๋๋ก ๋์์ค
- ์๋์ค์ (AutoConfiguration)
- ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋ ๋ํ๋์(Dependency)๋ฅผ ํ๋ ์์ํฌ์์ ๊ด๋ฆฌ
- jarํ์ผ์ด ํด๋์ค ํจ์ค์ ์๋ ๊ฒฝ์ฐ ์คํ๋ง ๋ถํธ๋ Dispatcher Servlet์ผ๋ก ์๋ ๊ตฌ์ฑ
- ์คํ๋ง ๋ถํธ๋ ๋ฏธ๋ฆฌ ์ค์ ๋์ด ์๋ Starter ํ๋ก์ ํธ๋ฅผ ์ ๊ณต
- xml ์ค์ ์์ด ์๋ฐ ์ฝ๋๋ฅผ ํตํด ์ค์ ํ ์ ์์
- Spring boot starter denpendency๋ฅผ ํตํด ๋ค์ํ ํจํค์ง๋ฅผ ์์ฉํ๊ณ ์์, ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ dependency ๊ด๋ฆฌ(ํธํ์ฑ ์ฒดํฌ ๋ฑ)์ ๋ํด ๊ณ ๋ คํ ํ์๊ฐ ์์
์ ๋ฆฌ