Flex和Spring的集成 -- 实例(一)

本文介绍了一种将Flex与Spring框架集成的方法,并通过一个具体示例详细展示了集成过程。包括配置文件remoting-config.xml和服务配置文件services-config.xml的设置,以及如何在web.xml中初始化Spring上下文。
Flex和Spring的集成 -- 实例(一)

=============================================

remoting-config.xml:

<destination id="TestSpring">

         <properties>

             <factory>spring</factory>

             <source>springTest</source> <!--此处注入IOC注入-->

         </properties>

     </destination>

 

==============================================================

services-config.xml:

     <factories>

       <factory id="spring" class="flex.samples.factories.SpringFactory" />

     </factories>

==============================================================

web.xml: 和struts整合spring一样

     <context-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>/WEB-INF/applicationContext.xml</param-value>

     </context-param>

     <listener>

       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

     </listener>

============================================================

 

applicationContext.xml

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
 <bean id="springTest" class="flex.samples.SpringTest">
     <property name="description">
      <value>Hello </value>
     </property>
 </bean>
</beans>

============================================================

 

 

 

 

SpringFactory.java文件

 

package flex.samples.factories;

import org.springframework.context.ApplicationContext;

import org.springframework.web.context.support.WebApplicationContextUtils;

import org.springframework.beans.BeansException;

import org.springframework.beans.factory.NoSuchBeanDefinitionException;

 

import flex.messaging.FactoryInstance;

import flex.messaging.FlexFactory;

import flex.messaging.config.ConfigMap;

import flex.messaging.services.ServiceException;

 

 

public class SpringFactory implements FlexFactory

{

     private static final String SOURCE = "source";

 

     public void initialize(String id, ConfigMap configMap) {}

 

     public FactoryInstance createFactoryInstance(String id, ConfigMap properties)

     {

          SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);

          instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));

         return instance;

     }

     public Object lookup(FactoryInstance inst)

     {

          SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;

         return factoryInstance.lookup();

     }

 

 

     static class SpringFactoryInstance extends FactoryInstance

     {

          SpringFactoryInstance(SpringFactory factory, String id, ConfigMap properties)

         {

             super(factory, id, properties);

         }

 

 

         public String toString()

         {

             return "SpringFactory instance for id=" + getId() + " source=" + getSource() + " scope=" + getScope();

         }

 

         public Object lookup()

         {

              ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(flex.messaging.FlexContext.getServletConfig().getServletContext());

             String beanName = getSource();

 

             try

             {

                 return appContext.getBean(beanName);

             }

             catch (NoSuchBeanDefinitionException nexc)

             {

                  ServiceException e = new ServiceException();

                 String msg = "Spring service named '" + beanName + "' does not exist.";

                  e.setMessage(msg);

                  e.setRootCause(nexc);

                  e.setDetails(msg);

                  e.setCode("Server.Processing");

                 throw e;

             }

             catch (BeansException bexc)

             {

                  ServiceException e = new ServiceException();

                 String msg = "Unable to create Spring service named '" + beanName + "' ";

                  e.setMessage(msg);

                  e.setRootCause(bexc);

                  e.setDetails(msg);

                  e.setCode("Server.Processing");

                 throw e;

             }

         }

       

     }

}

 

=============================================

SpringTest.java

 

package flex.samples;

public class SpringTest {

private String description;


public String getDescription(String name) {
    return description + name;
}


public void setDescription(String description) {
    this.description = description;
}
}

=============================================

 

 

Flex.mxml:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
 <![CDATA[
  import mx.rpc.events.ResultEvent;
  function gg(evnet:ResultEvent):void{
   var ff:String = evnet.result as String;
   ggg.text = ff;
  }
  function remotingSayHello():void{
   var sname:String = nameInput.text;
   myspring.getDescription();
  }
  ]]>
</mx:Script>

<mx:RemoteObject id="myspring" destination="TestSpring"  result="gg(event)"  endpoint="http://localhost:8081/felx_spring/messagebroker/amf" />

<mx:TextArea id="ggg" x="109" y="122"/>
<mx:Button label="say hello" click="remotingSayHello();" x="144" y="193"/>
<mx:TextInput id="nameInput" x="109" y="73"/>
<mx:Label text="name" x="47" y="75"/>
</mx:Application>

 

 

=============================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值