๋ ์ง:2025-10-22
ํ์ต ๋ชฉํ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)์ ๊ฐ๋
๊ณผ ํน์ง ์ดํด
- ํ๋ ์์ํฌ(Framework)์ ๊ฐ๋
๊ณผ ํน์ง ์ดํด
- ์คํ๋ง ํ๋ ์์ํฌ(Spring Framework)์ ์ญํ ๊ณผ ์ค์์ฑ ์ดํด
โ
๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋?
-
์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ํ์ํ ํด๋์ค, ํจ์ ๋ฑ์ ๋ชจ์๋์ ์ฝ๋์ ๋ชจ์์
๋๋ค.
-
๋ง์น ๋์๊ด์์ ํ์ํ ์ฑ
์ ๊บผ๋ด ๋ณด๋ฏ, ๊ฐ๋ฐ์๊ฐ ํ์ํ ๊ธฐ๋ฅ๋ง ๊ฐ์ ธ๋ค ์ฐ๋ ๋๊ตฌ ์ญํ ์ ํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฅ์
- ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ ์ฝ๋๋ฅผ ์ง์ ์์ฑํ์ง ์์๋ ๋จ โ ๊ฐ๋ฐ ์์ฐ์ฑ ํฅ์
- ๊ฒ์ฆ๋ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ด ์์ ์ฑ๊ณผ ํ์ง์ด ๋์
- ์ปค๋ฎค๋ํฐ๋ ๋ฌธ์ ์ง์์ด ํ๋ถํ ๊ฒฝ์ฐ, ์ ์ง๋ณด์๊ฐ ์ฌ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋จ์
- ์
๋ฐ์ดํธ ์ค๋จ ๋๋ ์ง์ ์ข
๋ฃ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
- ๋ฒ์ ์ถฉ๋, ์์กด์ฑ ๋ฌธ์ ๋ฑ ํธํ์ฑ ์ด์๊ฐ ์์ฃผ ๋ฐ์
- ๋ถํ์ํ ๊ธฐ๋ฅ์ ํฌํจํ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋นํจ์จ์
- ๋ด๋ถ ๊ตฌํ์ ์์ ํ๊ธฐ ์ด๋ ค์ ํน์ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์ปค์คํฐ๋ง์ด์ง์ด ์ ํ์
โ
ํ๋ ์์ํฌ(Framework)
ํ๋ ์์ํฌ๋?
-
์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ฐํธํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๊ฐ๋ฐ ํ๊ฒฝ(ํ)์
๋๋ค.
-
Frame(ํ) + Work(์ผํ๋ค) โ โ์ผํ๊ธฐ ์ํ ํโ
-
์ฆ, ๊ฐ๋ฐ์๋ ํ๋ ์์ํฌ๊ฐ ์ ๊ณตํ๋ ๊ตฌ์กฐ์ ๊ท์น ์์์ ๊ฐ๋ฐ์ ์งํํด์ผ ํฉ๋๋ค.
ํ๋ ์์ํฌ์ ์ฅ์
- ์ผ๊ด๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ์ฌ ์ฝ๋ ๊ฐ๋
์ฑ๊ณผ ํ์
ํจ์จ์ด ๋์
- ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์ค ๊ฐ๋ฅ (๋ฐ๋ณต์ ์ธ ์ค์ ์์
๊ฐ์)
- ๊ธฐ๋ณธ์ ์ธ ๋ณด์ ๊ธฐ๋ฅ๊ณผ ํ
์คํธ ํ๊ฒฝ ์ ๊ณต
-๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉํ๋ฉฐ, ์ปค๋ฎค๋ํฐ์ ๋ฌธ์ ์ง์์ด ํ๋ถ
ํ๋ ์์ํฌ์ ๋จ์
- ๊ตฌ์กฐ๊ฐ ๋ณต์กํ์ฌ ์ฒ์ ํ์ต ๊ณก์ ์ด ๊ฐํ๋ฆ
- ๋ฒ์ ์ด ๋ฐ๋ ๋ ๊ธฐ์กด ์ฝ๋ ํธํ์ฑ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
- ์ ํด์ง ๊ท์น๊ณผ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ์ผ ํ๋ฏ๋ก ์์ ๋๊ฐ ์ ํ๋จ
โ
์ ๋ฆฌ: ํ๋ ์์ํฌ vs ๋ผ์ด๋ธ๋ฌ๋ฆฌ
| ๊ตฌ๋ถ | ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library) | ํ๋ ์์ํฌ(Framework) |
|---|
| ์๋ฏธ | ๊ธฐ๋ฅ์ ์ํํ๋ ์ฝ๋ ๋ฌถ์ | ๊ฐ๋ฐ์ ์ํ ๊ตฌ์กฐ์ ํ |
| ์ ์ด ํ๋ฆ | ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ด | ํ๋ ์์ํฌ๊ฐ ์ ์ด (IoC, ์ ์ด์ ์ญ์ ) |
| ์ฌ์ฉ ๋ชฉ์ | ํ์ํ ๊ธฐ๋ฅ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉ | ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฐ์ ๊ตฌ์ฑ |
| ์์ | Gson, Lombok, JUnit ๋ฑ | Spring, Django, React ๋ฑ |
- ๐ฌ ์ฆ, โํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ชจ์์ด๋ฉฐ, ๊ฐ๋ฐ์ ์ํ ๊ตฌ์กฐ์ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.โ
-ํ๋ ์์ํฌ ์์๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋์ด ์๊ณ ,์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์๋ก ํธํ๋๋๋ก ๊ตฌ์ฑ๋์ด ์์ด ๊ฐ๋ฐ์๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์์ต๋๋ค.
โ
์คํ๋ง ํ๋ ์์ํฌ (Spring Framework)
Spring์ด๋?
- Java ๊ธฐ๋ฐ์ ์คํ ์์ค ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ์
๋๋ค.
- โ์๋ฐ ๊ฐ๋ฐ์ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํ ํ๋ ์์ํฌโ
์ Spring์ด ์ค์ํ๊ฐ์?
-
Spring์ ๋ณต์กํ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค ์ ์๋๋ก ๊ฐ๋ ฅํ๊ณ ํฌ๊ด์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
-
๋ณต์กํ ์ธํ๋ผ ์ค์ ์ ์๋ํ
-
๊ฐ์ฒด ๊ฐ ์์กด์ฑ ๊ด๋ฆฌ (IoC, DI)
-
๋ณด์, ํธ๋์ญ์
, AOP ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ ๋ด์ฅ
-
๐ก ํต์ฌ ํฌ์ธํธ
- โ๊ฐ๋ฐ์๋ ์คํ๋ง์ ์ฌ์ฉํด ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์๋ค.โ
- ๊ธฐ์ ์ ์ธ๋ถ ์ฌํญ์ ์คํ๋ง์ด ๋์ ์ฒ๋ฆฌํด์ค๋ค.
์์๋ก ๋ณด๋ ์ฐจ์ด
Before (Spring ์ฌ์ฉ ์ ):
public class UserService {
private UserRepository repository = new UserRepository();
public void register() {
repository.save();
}
}
After (Spring ์ฌ์ฉ ํ):
@Service
public class UserService {
private final UserRepository repository;
public UserService(UserRepository repository) {
this.repository = repository;
}
public void register() {
repository.save();
}
}
- ๐ Spring์ด ๊ฐ์ฒด๋ฅผ ๋์ ๊ด๋ฆฌํ๊ณ ์ฃผ์
(DI) ํด์ฃผ๋ฏ๋ก, ๊ฐ๋ฐ์๋ ์ฝ๋์ โ๋น์ฆ๋์ค ๋ก์งโ์๋ง ์ง์คํ ์ ์์ต๋๋ค.
์ ๋ฆฌ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ํ์ํ ๊ธฐ๋ฅ์ ๊ฐ์ ธ๋ค ์ฐ๋ ์ฝ๋ ๋ชจ์
- ํ๋ ์์ํฌ: ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๋ ๊ฐ๋ฐ ๊ตฌ์กฐ(ํ)
- Spring: ์๋ฐ ๊ธฐ๋ฐ ํ๋ ์์ํฌ๋ก, ๊ฐ๋ฐ์๊ฐ ํต์ฌ ๋ก์ง์ ์ง์คํ ์ ์๊ฒ ๋๋ ๋๊ตฌ