Arthur's Blog
DI(Dependency Injection)๋? ๋ณธ๋ฌธ
๐ ์ ์
์์กด์ฑ ์ฃผ์ ์ด๋ผ๊ณ ๋งํ๋ฉฐ, ์ถ์ํ๋ฅผ ํด์น์ง ์๊ณ ์์กด์ฑ์ ์ธ์๋ก ๋๊ฒจ์ฃผ๋ ๊ฒ์ ๋งํ๋ค.
๐ ์์
Spring Boot๋ฅผ ์์๋ก ๋ค์๋ฉด, Service ๊ตฌํ์ฒด์์๋ Repository์ ๊ฐ์ด ์์กด์ฑ์ ๊ฐ๋๋ค. ํ์ง๋ง ํด๋น Service๋ฅผ ์ถ์ํ ํ interface๋ Repository๊ฐ ์ธ์๋ก ๋์ด๊ฐ๋ ์ ๋ณด๋ฅผ ์ ํ ๋ด๊ณ ์์ง ์๋ค.
interface UserService {
void removeUser(Long userId);
}
@Service
@RequiredArgsConstructor
class UserServiceImpl implements UserService {
private final UserRepository userRepository;
}
์ ์ฝ๋๋ ์์ ๋ง์ ๋ฐ๋ผ์ UserServiceImpl์ ์ถ์ํ ๊ฐ์ฒด์ธ UserService์๋ UserRepository์ ์ ๋ณด๋ฅผ ์ ํ ๋ด๊ณ ์์ง์์ ๊ฒ์ ๋ณผ ์ ์๋ค.
โ ์ฃผ์์
์ฌ๊ธฐ์ ์ฐฉ๊ฐํ๋ ๋ถ๋ถ์ ๋ด๊ฐ ์์์ ์ค๋ช ํ ๊ฒ์ ๋ณด๊ณ DI๋ฅผ ๊ตฌํํ๋ ค๋ฉด interface๋ฅผ ๊ผญ ๊ฐ์ ธ์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ํผ๋ํ ์ ์๋ ๊ฐ๋ ์ด DIP(Dependency Injection Principle)์ธ๋ฐ DIP์๋ ๋ช ๋ฐฑํ๊ฒ ๋ค๋ฅธ ๊ฒ์ด๋ค. ์์ธํ ๋ด์ฉ์ DI vs IoC vs DIP๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
'OOP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Coupling์ด๋ (0) | 2023.07.01 |
---|---|
DI vs IoC vs DIP (0) | 2023.07.01 |
์๋น์ค ๋ก์ผ์ดํฐ(SL)๋? (0) | 2023.07.01 |
๋์ ์์ง๋์ ๋ฎ์ ๊ฒฐํฉ๋ (0) | 2023.06.28 |
๊ฐ์ฒด์งํฅ 5๋ ์์น (0) | 2023.06.26 |