[SPRING] 인터페이스에 대한 Spring 의존성 삽입
SPRING인터페이스에 대한 Spring 의존성 삽입
글쎄, 스프링 의존성 주입과 MVC에 관한 튜토리얼을 보았지만 클래스를 구체적으로 인스턴스화 할 수있는 방법을 아직 이해하지 못한 것 같습니다.
예를 들어 변수가있는 경우
@Autowired
ClassA someObject;
클래스를 확장하는 ClassB의 인스턴스로 someObject를 생성하는 방법은 무엇입니까? someObject = 새로운 ClassB ();
Spring에서 작동하는 방식을 실제로 이해하지 못한다. ContextLoaderListener가 자동으로 수행 할 것인가, 아니면 어떤 종류의 구성 클래스를 만들어야 봄에 정확히 어떤 클래스가 그 클래스를 인스턴스화해야 하는지를 지정해야 하는가? (이 경우 튜토리얼의 어느 부분에서도 본 적이 없다) 그렇다면 우리는 어떻게 지정하고 어떻게 보이게 할 것인가? web.xml 등에서 작동하도록 구성하는 방법은 무엇입니까?
해결법
-
==============================
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.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.예, 인스턴스를 지정하는 context.xml 파일을 제공해야합니다. ApplicationContext에 넘겨 주면 모든 필드가 자동으로 자동 완성됩니다.
예, 인스턴스를 지정하는 context.xml 파일을 제공해야합니다. ApplicationContext에 넘겨 주면 모든 필드가 자동으로 자동 완성됩니다.
http://alvinalexander.com/blog/post/java/load-spring-application-context-file-java-swing-application
from https://stackoverflow.com/questions/13815139/spring-dependency-injection-for-interfaces by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 최대 절전 모드 트랜잭션 로깅 (0) | 2019.04.07 |
---|---|
[SPRING] Eclipse에서 비어있는 웹 앱 라이브러리 - "jars"가 없습니다. (0) | 2019.04.07 |
[SPRING] Spring MVC에서 UUID 바인딩하기 (0) | 2019.04.07 |
[SPRING] 이클립스와 maven2를 사용하여 아파치 공유 로깅을 추가하는 방법은 무엇입니까? (0) | 2019.04.07 |
[SPRING] 스프링 보안 동시성 제어 (0) | 2019.04.07 |