복붙노트

[SPRING] 스프링에서 인스턴스화에 대한 자동 와이어 링

SPRING

스프링에서 인스턴스화에 대한 자동 와이어 링

저는 최근에 Spring을 사용하기 시작했습니다. 그리고 봄 mvc 프로젝트를 만들고 있습니다. 그래서 내 질문에 인터페이스를 만들고 특정 구현 봄 또는 그냥 클래스 인스턴스를 사용하여 경우 해당 인터페이스 중 하나의 구현을 가지고 autowire 것이 좋습니다?

예 :

@Controller

public class MyController {
    @Autowired
    MyService myService;

    @RequestMap("/")
    public String mainPage() {
        ...
    }
}

또는

@Controller

public class MyController {
    @RequestMap("/")
    public String mainPage() {
        MyService myService = new MyServiceImpl();
        ...
    }
}

MyService 인터페이스의 구현이 1 개 뿐인 경우?

해결법

  1. ==============================

    1.대부분의 경우 다음과 같은 이유로 주사해야합니다.

    대부분의 경우 다음과 같은 이유로 주사해야합니다.

    서비스에 인터페이스가 없더라도 두 번째 이유 때문에 주입을 고려해야합니다.

    Spring을 건너 뛰고 싶을 유일한 경우는 클래스가 종속성이없고 상태가없는 경우입니다. 그러나 그러한 클래스는 정적 멤버 만 있기 때문에 인스턴스를 전혀 필요로하지 않는 유틸리티입니다.

  2. ==============================

    2.MyService가 상태를 보유하고있는 bean인지 아닌지에 달려 있습니다. MyService가 상태를 유지하지 않으면 새로운 인스턴스를 생성 할 필요가 없으며 위에서 설명한 장점을 가진 Spring을 삽입하도록 Spring을 허용 할 수있다.

    MyService가 상태를 보유하고있는 bean인지 아닌지에 달려 있습니다. MyService가 상태를 유지하지 않으면 새로운 인스턴스를 생성 할 필요가 없으며 위에서 설명한 장점을 가진 Spring을 삽입하도록 Spring을 허용 할 수있다.

  3. from https://stackoverflow.com/questions/7362555/autowiring-vs-instantiating-in-spring by cc-by-sa and MIT license