Last updated
Last updated
ResourceLoaderAware 인터페이스는 ResourceLoader 레퍼런스를 제공하는 오브젝트들을 식별하는 특별한 마커 인터페이스이다. ResourceLoaderAware 인터페이스의 정의를 보여준다.
클래스는 ResourceLoaderAware를 확장하고 어플리케이션 컨텍스트(스프링이 관리하는 빈으로서) 로 디플로이될 때 어플리케이션 컨텍스트에 의해 ResourceLoaderAware를 인식한다. 그리고나서 어플리케이션 컨텍스트는 setResourceLoader(ResourceLoader)를 주입하고 인자로서 적용한다.(스프링에서 모든 어플리케이션 컨텍스트는 ResourceLoader 인터페이스를 확장하는 것을 기억하자.)
ApplicationContext는 ResourceLoader이기 때문에 빈은 ApplicationContextAware 인터페이스를 확장할 수 있고 리소스를 직접적으로 로드하기 위해 어플리케이션 컨텍스트를 사용한다. 하지만 일반적으로 만약 필요하다면 특정 ResourceLoader 인터페이스를 사용하는 것이 좋다. 코드는 (유틸리티 인터페이스가 고려될 수 있는) 인터페이스를 로드하는 리소스에 결합되고 전체 스프링 ApplicationContext인터페이스는 아니다.
특정 Application context는 특정 ResourceLoader를 확장하니까 확장하는 리소스 로더를 사용할 수 있지만, 원하는 리소스 로더 인터페이스를 따로 쓰는게 더 좋다는 이야기
스프링 2.5에서 ResourceLoaderAware 인터페이스를 확장하는 것을 대신하는 것으로서 ResourceLoader를 자동연결하는 것에 의존할 수 있다. "전통적으로" contructor 와 byType 자동연결 모드( 설명된) 는 이제 생성자 인자 뿐 아니라 setter 메소드 파라미터 각각을 위해 ResourceLoader 타입의 의존성을 제공할 가능성이 있다. 더 좋은 유연성을 위해(자동 연결하는 필드 사용 가능성과 여러 파라미터 메소드를 포함하여), 어노테이션 기반의 자동연결된 기능을 사용하는 것을 고려하자. 그런 경우에 ResourceLoader는 필드, 생성사, @Autowired 어노테이션이 붙어진 메소드에서 기대하는 필드, 생성자 인자, 메소드 파라미터에 자동연결된다. 더 심층 정보는 .보자.
참조 :
예제: