복붙노트

[SPRING] 인터페이스에 대한 Spring 의존성 삽입

SPRING

인터페이스에 대한 Spring 의존성 삽입

글쎄, 스프링 의존성 주입과 MVC에 관한 튜토리얼을 보았지만 클래스를 구체적으로 인스턴스화 할 수있는 방법을 아직 이해하지 못한 것 같습니다.

예를 들어 변수가있는 경우

@Autowired
ClassA someObject;

클래스를 확장하는 ClassB의 인스턴스로 someObject를 생성하는 방법은 무엇입니까? someObject = 새로운 ClassB ();

Spring에서 작동하는 방식을 실제로 이해하지 못한다. ContextLoaderListener가 자동으로 수행 할 것인가, 아니면 어떤 종류의 구성 클래스를 만들어야 봄에 정확히 어떤 클래스가 그 클래스를 인스턴스화해야 하는지를 지정해야 하는가? (이 경우 튜토리얼의 어느 부분에서도 본 적이 없다) 그렇다면 우리는 어떻게 지정하고 어떻게 보이게 할 것인가? web.xml 등에서 작동하도록 구성하는 방법은 무엇입니까?

해결법

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

    1.다음과 같이 할 수 있습니다.

    다음과 같이 할 수 있습니다.

    인터페이스 :

    package org.better.place
    
    public interface SuperDuperInterface{
        public void saveWorld();
    }
    

    이행:

    package org.better.place
    
    import org.springframework.stereotype
    
    @Component
    public class SuperDuperClass implements SuperDuperInterface{
         public void saveWorld(){
              System.out.println("Done");
         }
    }
    

    고객:

    package org.better.place
    
    import org.springframework.beans.factory.annotation.Autowire;
    
    public class SuperDuperService{
           @Autowire
           private SuperDuperInterface superDuper;
    
    
           public void doIt(){
               superDuper.saveWorld();
           }
    
    }
    

    이제 인터페이스 정의, 구현 작성 및 구성 요소로 표시 - docs. 이제는 컴포넌트를 찾을 수있는 곳을 스프링에 알려서 자동 와이어 링에 사용할 수 있습니다.

    <beans ...>
    
         <context:component-scan base-package="org.better.place"/>
    
    </beans>
    
  2. ==============================

    2.applicationContext.xml 파일에 객체를 만들 클래스의 유형을 지정하거나 최신 버전의 Spring을 사용하는 경우 @Component, @Service 또는 @Repository로 해당 클래스에 직접 주석을 추가 할 수 있습니다. web.xml에서 xml 기반 구성을 사용하는 경우 xml 파일의 경로를 servlet에 대한 context-param으로 지정해야합니다.

    applicationContext.xml 파일에 객체를 만들 클래스의 유형을 지정하거나 최신 버전의 Spring을 사용하는 경우 @Component, @Service 또는 @Repository로 해당 클래스에 직접 주석을 추가 할 수 있습니다. web.xml에서 xml 기반 구성을 사용하는 경우 xml 파일의 경로를 servlet에 대한 context-param으로 지정해야합니다.

  3. ==============================

    3.예, 인스턴스를 지정하는 context.xml 파일을 제공해야합니다. ApplicationContext에 넘겨 주면 모든 필드가 자동으로 자동 완성됩니다.

    예, 인스턴스를 지정하는 context.xml 파일을 제공해야합니다. ApplicationContext에 넘겨 주면 모든 필드가 자동으로 자동 완성됩니다.

    http://alvinalexander.com/blog/post/java/load-spring-application-context-file-java-swing-application

  4. from https://stackoverflow.com/questions/13815139/spring-dependency-injection-for-interfaces by cc-by-sa and MIT license