BlazeDS를 이용하여 Remote Object Service를 이용할 때 스프링과 연동할 수는 없을까 라는 의문을 가지고
자료를 찾아보았습니다. 역시 이미 연동해서 사용하는 방법이 있더군요
다음의 remoting-config.xml 파일을 봅시다.
<destination id="simpleLoadService">
<properties>
<factory>springfactory</factory>
<source>simpleLoadDao</source>
</properties>
</destination>
일반적인 destination을 정의하는 부분과 다릅니다. 바로 <factory>라는 부분인데요, springfactory 라는
새로운 factory를 정의해서 스프링과 remote object를 연결시실수 있습니다.
그러면 springfactory 가 정의된 부분이 있어야 겠죠?
바로 services-config.xml 파일에 정의합니다.
<factories>
<factory id="springfactory" class="flex.messaging.factory.SpringFactory" />
</factories>
위의 내용이 springfactory를 정의한 부분입니다.
이제 이 factory를 통해서 스프링과 remote object가 연결됩니다.
그러면 flex.messaging.factory.SpringFactory 는 원래 flex package에 존재하는 클래스일까요?
그렇지 않습니다. 스프링과의 연동을 위해 따로 제작된 클래스죠. 저도 외국 사이트에서 다운로드 했습니다.
첨부파일로 올리니 다운 받아서 lib에 등록해서 사용하시면 됩니다..
remoting-config.xml 에서 source로 설정되어 있는 simpleLoadDao도 마저 살펴봅시다.
스프링의 bean설정파일인 applicationContext.xml 파일에 등록되어 있겠죠.
applicationContext.xml
<bean id="simpleLoadDao" class="flexintegration.spring.sample.SimpleLoadDao">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
<!-- SqlMap setup for iBATIS Database Layer : 스프링 프레임워크와 iBATIS의 연동 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/ibatis/sql-map-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
이렇게 설정이 되면 Remote Object로 바로 스프링의 DI(Dependency Injection)를 이용하는 bean을
사용할수가 있게 됩니다. ( iBatis를 이용하고 있어서 iBatis에 대한 경험이 없으시면 약간 이해하기
힘들수도 있겠네요 )
여기까지 Remote Object로 스프링 bean을 연동해서 사용하는 방법에 대해서 알아보았습니다.
Remote Object로 스프링의 강력한 DI를 바로 사용할 수 있다는 건 대단한 장점이죠.
참고로 AOP도 Remote Object 사용시 제대로 동작합니다. ( 테스트 해 보았죠 )
스프링과의 연동을 생각하셨던 분들에게 도움이 되셨기를...
blazeds-spring-beta1.jar
이올린에 북마크하기
댓글을 달아 주세요
우와 감사합니다 ㅠㅠ 한번 해보겠습니다.
저는 그냥 스프링에 있는 클래스를 그냥 가져오려고 했는데
자꾸 Dao가 null에러가 나길래 applicationContext에서 정의된 DI가 안되어있는건가 라고 생각을 했었는데 그래서 검색을 하니 바로 나오네요^^
감사합니다~ ^^
도움이 되시면 좋겠네요. 저도 요즘 spring+blazeDS로 이것저것 해보느라 정신없네요
감사합니다.
저도 spring+blazeDS로 이것저것 해보고 있는데, 많은 참고가 되었습니다.
그런데
"참고로 AOP도 Remote Object 사용시 제대로 동작합니다. ( 테스트 해 보았죠 )"
라고 하셨는데... 어떻게 설정을 하셨는지... ㅠ.ㅠ
여러가지 방법으로 해봤는데... AOP가 동작되지 않아서...
혹 알려 주실수 있는지... 아님... 힌트라도...
혹시나 해서 메일 주소도 남겨봅니다. ( zzuni27@nate.com )
그럼 꾸뻑~~ (^^)(__)
좋은 자료를 만났네요 ^^
Flex를 공부하고 있는데 BlazeDS를 찾다보니 여기까지 왔네요..
바쁘더라도 시간을 쪼개서 한번 해봐야겠습니다..
소중한 글 잘 읽고 갑니다..