2012-04-02 5 views
0

지정된 리소스 리졸버를 사용하기 위해 스프링 애플리케이션 컨텍스트를 조작하는 방법을 아는 사람은 누구나 알고있다. 아마존 s3의 보안 컨텍스트와 s3 : // ... 유형 URL에서 이러한 "리소스"를 생성하기위한 리소스 확인자로부터 컨텐트를 가져 오기위한 s3 리소스를 작성했으며 로컬 응용 프로그램 컨텍스트는로드시 올바른 보안 자격 증명을 사용합니다 구성된 amazons3client에서. 새로 생성 된 s3 리소스에 대해 AmazonS3 클라이언트를 미리 구성하는 s3 ResourceLoader를 작성했습니다.Springframework 애플리케이션 컨텍스트 리소스 리졸버

"s3 : // ..."과 같이 컨텍스트 구성에서 이러한 리소스를 지정할 수 있으면 좋겠지 만이 리소스 분석기를 사용하여 올바른 리소스 유형을 만들 수는 있지만 지금까지는 재정의가 필요합니다 Spring 고유의 resourceResolver 구현을 사용하기 위해 DefaultResourceLoader에서 상속받은 ApplicationContext의 getResource 메소드.

"s3 : // ..."구성표와 일치하는 리소스에 대해 변수 확인자를 구성하여 해당 리소스 확인자로 리소스 유형을 확인하는 것도 한 가지 방법입니다.

내 S3 보안 요구 사항을 쉽게 처리 할 수 ​​있도록 스프링 애플리케이션 컨텍스트 (ClasspathXMLAC for argument)의 인프라를 조작하는 더 좋은 방법을 알고있는 스프링 전문가가되기를 희망합니다.

기타 제안을 환영합니다.

답변

1

#setResourceLoader 메소드를 제공하는 Spring의 GenericApplicationContext 구현을 사용하십시오.

GenericApplicationContext가 아닌 ClassPathXmlApplicationContext에 대해 언급했습니다. 즉, 우회적 인 재정의 경로를 사용해야합니다.

GenericXmlApplicationContext는 CPXAC 대신 일반적으로 선호되는 것으로, 이름에서 알 수 있듯이 GenericApplicationContext입니다.

그래서 당신이 다음을 수행 할 수 있어야한다 : 참고 분명히

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); 
ctx.setResourceLoader(new S3ResourceLoader()); 
ctx.load("s3:///some.bucket.name/path/to/my/spring.xml"); 
ctx.refresh(); 
... 

의 S3ResourceLoader는 S3ResourceLoader 아마 픽업하기 위해 DefaultResourceLoader을 연장해야한다는 등, 키 파라미터해야합니다 모든 다른 기능을 사용할 수 있습니다. 처리 "classpath :"및 기타 리소스 접두사.

위의 예제에서 호출 순서는 중요한 이유 때문에 #load가 s3 : resource 접두어로 호출되기 전에 제공되어야합니다.

+0

나는이 기능이 콩으로 인해 선택 될 것으로 기대했다. 현재 내가하고있는 일은 AmazonS3Client 빈을 설정하고 DefaultResourceLoader를 확장 한 종속 ApplicationContextAware S3Loader 빈을 설정 한 다음 setApplicationContext를 사용하여 "GenericApplication 컨텍스트의 응용 프로그램 인스턴스이면 s3Loader로 resourceLoader를 설정합니다. 리소스 로더는 s3 및 MongoDBs GridFS를 지원해야하므로 새 이름이 필요합니다. P – gbegley

+0

N ResourceLoader 인스턴스에 위임하는 CompositeResourceLoader를 작성한 다음 개별 S3-, Mongo- 및 GridFS 기반 ResourceLoader를 가져 와서 집계하십시오 모두 하나의 CompositeResourceLoader 아래에 배치하고 GenericApplicationContext # setResourceLoader 메소드로 넘겨 준다. –

관련 문제