2012-04-13 3 views
5

스프링 @Component (또는 사양 중 하나, 예 : @Repository)을 OSGi 서비스로 자동 등록 할 수 있습니까? 그래서 번들 사이에서 통신하기 위해 하나의 번들과 OSGi Service Registry에서 autowiring과 Spring의 다른 모든 이점을 사용할 수 있습니까?스프링 컴포넌트를 OSGi 서비스로 내보내기

업데이트 : this discussion에서 Eclipse Gemini에서만 표준 청사진을 사용하는 것이 가능하지는 않습니다.

답변

5

Eclipse Gemini Blueprint (이전 스프링 동적 모듈, 이전 스프링 OSGi)에 익숙하다고 가정 하시겠습니까?

<service>-tag을 사용하여 빈을 내보내십시오. 나는 모든 @Component 등 주석이 달린 bean을 자동으로 내보낼 수 있는지 잘 모르겠다.

+0

아, 그래서 내가 ''태그를 갖고 있지 않다면 청사진은이 태그를 사용합니다 자체 복사본을 만들지 않고 Spring에 의해 생성됩니다. 이게 옳은 거니? Apache Aries Blueprint와 같은 방식으로 작동합니까? –

+0

''으로 생성되어야한다. 나는 Aries Blueprint – artbristol

+2

및 @artbristol은 OSGi를 매우 좋아합니다. :) –

0

싱글 톤 빈의 경우에만 해당 인스턴스를 생성자의 정적 필드에 저장하고이 필드의 getter를 Blueprint/iPOJO 팩토리 메서드로 사용하십시오.

1

@AlexeyRomanov 해킹없이이를 지원하기위한 가능한 구현은 조각을 통해 Gemini Blueprint의 Extender 번들에 BeanFactoryPostProcessor 구현을 추가하는 것일 수 있습니다.

해당 프로세서는 BeanFactory 내에 필요한 OSGi 내보내기 정의를 생성 할 수 있으며 올바르게 작동해야합니다.

그 모양은 예 : ServiceReferenceInjectionBeanPostProcessor 형태로, @ServiceReference 주석을 통해 OSGi 서비스를 주입 할 수있는 SpringDM/Gemini의 확장입니다. (스프링 DM을 링크했지만 여전히이 클래스는 쌍둥이 자리에 있어야하지만 javadoc에 대한 직접 링크를 찾을 수 없습니다.)

관련 문제