μŠ€ν”„λ§

μ œμ–΄μ˜ μ—­μ „ ( IoC )

KIMHYEYUN 2022. 9. 1. 13:25
λ°˜μ‘ν˜•

μ œμ–΄μ˜ μ—­μ „ IoC ( Inversion of Control )

일반적인 μžλ°” 개발의 경우 객체λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ•„λž˜μ™€ 같은 μ½”λ“œ μ‚¬μš©

@RestController
public class NoDIController{

    private MyService service = new MyServiceImpl();

    @GetMapping("/no-di/hello")
    public String getHello(){
        return service.getHello();
    }
}

즉, μ‚¬μš©ν•˜λ €λŠ” 객체λ₯Ό μ„ μ–Έν•˜κ³  ν•΄λ‹Ή 객체의 μ˜μ‘΄μ„±μ„ μƒμ„±ν•œ ν›„ κ°μ²΄μ—μ„œ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ‚¬μš©
객체λ₯Ό μƒμ„±ν•˜κ³  μ‚¬μš©ν•˜λŠ” 일련의 μž‘μ—…μ„ κ°œλ°œμžκ°€ 직접 μ œμ–΄ν•˜λŠ” ꡬ쑰

ν•˜μ§€λ§Œ, μ œμ–΄μ˜ μ—­μ „(IoC)을 νŠΉμ§•μœΌλ‘œ ν•˜λŠ” μŠ€ν”„λ§μ€ κΈ°μ‘΄ μžλ°” 개발 방식과 λ‹€λ₯΄κ²Œ λ™μž‘
IoCλ₯Ό μ μš©ν•œ ν™˜κ²½μ—μ„œλŠ” μ‚¬μš©ν•  객체λ₯Ό 직접 μƒμ„±ν•˜μ§€ μ•Šκ³  객체의 생λͺ…μ£ΌκΈ° 관리λ₯Ό 외뢀에 μœ„μž„ν•¨
μ—¬κΈ°μ„œ μ™ΈλΆ€λŠ” μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ(Spring Container) λ˜λŠ” IoC μ»¨ν…Œμ΄λ„ˆλ₯Ό 의미
객체의 관리λ₯Ό μ»¨ν…Œμ΄λ„ˆμ— 맑겨 μ œμ–΄κΆŒμ΄ λ„˜μ–΄κ°„ 것을 μ œμ–΄μ˜ 역전이라고 λΆ€λ₯΄λ©°, μ œμ–΄μ˜ 역정을 톡해 μ˜μ‘΄μ„± μ£Όμž…(DI; Dependency Injection), 관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(AOP; Aspect-Oriented Programming)등이 κ°€λŠ₯해짐

βœ… μŠ€ν”„λ§μ„ μ‚¬μš©ν•˜λ©΄ 객체의 μ œμ–΄κΆŒμ„ μ»¨ν…Œμ΄λ„ˆλ‘œ λ„˜κΈ°κΈ° λ•Œλ¬Έμ— κ°œλ°œμžλŠ” λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μž‘μ„±ν•˜λŠ” 데 더 집쀑 κ°€λŠ₯

728x90
λ°˜μ‘ν˜•