Flex Spring整合

内容如下

 

  • 关于Adobe Flex
  • 关于Spring
  • 为什么使用Flex和Spring
  • Flex和Spring的整合

关于Flex

Adobe Flex是一套创建富客户端应用(RIAs)的框架.Flex生成的swf文件可以直接运行在Flash Player之中。相比较基于时间轴的Flash开发,Flex框架更适合那些用传统方式开发应用程序的开发人员。Flex应用可以使用Flex builder来开发。这套IDE是基于Eclipse平台开发的。Action Script3语言是用来访问数据和创建用户接口组件的。Flex框架也用到了一种XML语言叫做MXML,它是用来简化Flex开发和布局的。

 

关于Spring

Spring是目前最受欢迎的创建企业级应用的Java框架。不像传统的J2EE开发,Spring提供了轻量级的容器。使用Spring会使应用 的测试和开发更为简单。虽然Spring依赖注入的功能最出名,但是它也提供了其他服务端企业程序所需要的功能。如安全和事务处理。

 

为什么使用Flex和Spring

Flex技术本身和Java就有很强的关联性,它提供了一个基于Eclipse的IDE和BlazeDS.BlazeDS是个基于服务端的Java 远程调用和Web消息的一个开源的技术。有许多应用都是以Java为后端处理的。Flex用于前端。由于Java和Flex一起频繁的使用。人们很容易就 想到Flex和Spring的整合。有许多企业和组织已经着手开始使用Flex作为用户接口了。在2008年末,Spring社区已经着手Spring BlazeDS整合的项目。为Java和Spring添加更好的Flex支持。

 

默认的情况下BlazeDS创建了一个服务端Java对象的实例,用它们来完成远程对象的请求。但是这种方法并不适用于Spring.因为整个框架 使用的服务的对象都是用Spring容器所创建的。Spring和BlazeDS的整合,Flex就可以使用Spring中的对象了。

 

整合Flex和Spring

为了使用BlazeDS,服务端的Java应用应打包为WAR文件。这部分的代码实例是使用Eclipse来创建和编辑的。步骤如下

 

  • 设置服务端的BlazeDS Java工程以及Spring框架。
  • 在BlazeDS中配置Spring的bean
  • 写一个Flex应用去使用Spring/BlazeDS的服务。

所需要的开发环境如下
首先设置服务端的JAVA工程,用blazeds.war(在blazeds的压缩包中)创建一个WEB工程。步骤如下
  • Choose File>import
  • 选择WAR选项。指定blazedsWAR文件的位置。输入工程名test-server
  • 点击完成
现在就可以创建一个服务器来运行这个WEB应用。
  • File>New>Other
  • 选择Server>Server
  • 点击Next
  • 选择Apache>Tomcat6 Server
  • 点击Next
  • 指定Tomcat的安装位置以及JRE(5以上版本)
  • 点击Next
  • 在Availble Projects list中选择test-server
  • 点击Add添加到Configured Project list
  • 点击Finish
接下来就可以创建Java类了。这个类在Java和Flex之间传输
Java代码
  1. public   class  MyEntity {  
  2.  private  String frstName;  
  3.  private  String lastName;  
  4.  private  String emailAddress;  
  5.    
  6.  public  String getFirstName() {  
  7.   return  frstName;  
  8.  }  
  9.  public   void  setFirstName(String frstName) {  
  10.   this .frstName = frstName;  
  11.  }  
  12.  public  String getLastName() {  
  13.   return  lastName;  
  14.  }  
  15.  public   void  setLastName(String lastName) {  
  16.   this .lastName = lastName;  
  17.  }  
  18.  public  String getEmailAddress() {  
  19.   return  emailAddress;  
  20.  }  
  21.  public   void  setEmailAddress(String emailAddress) {  
  22.   this .emailAddress = emailAddress;  
  23.  }  
  24. }  
public class MyEntity {
 private String frstName;
 private String lastName;
 private String emailAddress;
 
 public String getFirstName() {
  return frstName;
 }
 public void setFirstName(String frstName) {
  this.frstName = frstName;
 }
 public String getLastName() {
  return lastName;
 }
 public void setLastName(String lastName) {
  this.lastName = lastName;
 }
 public String getEmailAddress() {
  return emailAddress;
 }
 public void setEmailAddress(String emailAddress) {
  this.emailAddress = emailAddress;
 }
}
 
Java服务接口
Java代码
  1. import  java.util.List;  
  2. public   interface  MyService {  
  3.  public  List<MyEntity> getMyEntities();  
  4. }  
import java.util.List;
public interface MyService {
 public List<MyEntity> getMyEntities();
}
 
Java服务的实现
Java代码
  1. import  java.util.ArrayList;    
  2. import  java.util.List;    
  3. public   class  MyServiceImpl  implements  MyService {    
  4.  public  List<MyEntity> getMyEntities() {    
  5.   List<MyEntity> list = new  ArrayList<MyEntity>();    
  6.   MyEntity entity = new  MyEntity();    
  7.   entity.setFirstName("Hello" );    
  8.   entity.setLastName("World" );    
  9.   entity.setEmailAddress("hello@world.com" );    
  10.   list.add(entity);    
  11.   MyEntity entity2 = new  MyEntity();    
  12.   entity2.setFirstName("Hello" );    
  13.   entity2.setLastName("Space" );    
  14.   entity2.setEmailAddress("hello@space.com" );    
  15.   list.add(entity2);    
  16.   MyEntity entity3 = new  MyEntity();    
  17.   entity3.setFirstName("Hello" );    
  18.   entity3.setLastName("Neighbor" );    
  19.   entity3.setEmailAddress("hello@neighbor.com" );    
  20.   list.add(entity3);    
  21.   return  list;    
  22.  }    
  23. }    
import java.util.ArrayList;  
import java.util.List;  
public class MyServiceImpl implements MyService {  
 public List<MyEntity> getMyEntities() {  
  List<MyEntity> list = new ArrayList<MyEntity>();  
  MyEntity entity = new MyEntity();  
  entity.setFirstName("Hello");  
  entity.setLastName("World");  
  entity.setEmailAddress("hello@world.com");  
  list.add(entity);  
  MyEntity entity2 = new MyEntity();  
  entity2.setFirstName("Hello");  
  entity2.setLastName("Space");  
  entity2.setEmailAddress("hello@space.com");  
  list.add(entity2);  
  MyEntity entity3 = new MyEntity();  
  entity3.setFirstName("Hello");  
  entity3.setLastName("Neighbor");  
  entity3.setEmailAddress("hello@neighbor.com");  
  list.add(entity3);  
  return list;  
 }  
}  
 

这三个类对于例子足够了。在实战中,这个服务类可能要连接到数据库。为了方便我们学习,这个例子中就返回的是个list的硬编码了。

基本的java工程算是完工了。。

接下来我们要做Spring的配置了。
  • 把Spring的库以及Spring BlazeDS整合的库,还有ANTLR库文件放到项目/WEB-INF/lib下。
  • 创建一个Spring配置文件。鼠标右键点击WebContent/WEB-INF以及选择New>File,文件名输入application-config.xml.点击完成。配置文件内容如下。
Xml代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>     
  2. < beans   xmlns = "http://www.springframework.org/schema/beans"     
  3.  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"     
  4.  xsi:schemaLocation ="    
  5.  http://www.springframework.org/schema/beans    
  6.  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">     
  7.  <!-- Spring Beans’s -->     
  8.  < bean   id = "myService"   class = "MyServiceImpl"   />     
  9. </ beans >     
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 xsi:schemaLocation="  
 http://www.springframework.org/schema/beans  
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
 <!-- Spring Beans’s -->  
 <bean id="myService" class="MyServiceImpl" />  
</beans>  
 
懂Spring的人看这配置最熟悉不过了。。

通过这一步,已经有了一个BlazeDS默认配置的Java web工程。下面我们就更改BlazeDS默认配置,去使用新创建的Spring中的bean.

为了配置Spring BlazeDS的整合,更新web.xml。
Xml代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < web-app   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   
  3.     xmlns = "http://java.sun.com/xml/ns/javaee"   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"   
  4.     xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"   
  5.     id = "WebApp_ID"   version = "2.5" >   
  6.     < display-name > test-server </ display-name >   
  7.     < servlet >   
  8.         < servlet-name > Spring MVC Dispatcher Servlet </ servlet-name >   
  9.         < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >   
  10.         < init-param >   
  11.             < param-name > contextConfigLocation </ param-name >   
  12.             < param-value > /WEB-INF/application-config.xml </ param-value >   
  13.         </ init-param >   
  14.         < load-on-startup > 1 </ load-on-startup >   
  15.     </ servlet >   
  16.     <!-- Map /spring/* requests to the DispatcherServlet -->   
  17.     < servlet-mapping >   
  18.         < servlet-name > Spring MVC Dispatcher Servlet </ servlet-name >   
  19.         < url-pattern > /spring/* </ url-pattern >   
  20.     </ servlet-mapping >   
  21. </ web-app >   
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>test-server</display-name>
	<servlet>
		<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/application-config.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- Map /spring/* requests to the DispatcherServlet -->
	<servlet-mapping>
		<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
		<url-pattern>/spring/*</url-pattern>
	</servlet-mapping>
</web-app>
 
创建的Servlet可以处理这个请求,http://localhost:8080/test-server/spring
这是访问BlazeDS的基本的URL。当然这也是Spring标准的DispatcherServlet.

现在已经把Spring整合到Java web工程中了。要整合BlazeDS,就要修改下Spring的配置文件。
application-config.xml文件如下
Xml代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < beans   xmlns = "http://www.springframework.org/schema/beans"   
  3.  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   
  4.  xmlns:flex = "http://www.springframework.org/schema/flex"   
  5.  xsi:schemaLocation ="  
  6.  http://www.springframework.org/schema/beans  
  7.  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.  http://www.springframework.org/schema/flex  
  9.  http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">     
  10.  <!-- Spring Beans’s -->   
  11.  < bean   id = "myService"   class = "MyServiceImpl"   />   
  12.  <!-- Simplest possible message broker -->    
  13.  < flex:message-broker />   
  14.   <!-- exposes myService as BlazeDS destination -->   
  15.  < flex:remoting-destination   ref = "myService"   />   
  16. </ beans >   
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:flex="http://www.springframework.org/schema/flex"
 xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/flex
 http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">  
 <!-- Spring Beans’s -->
 <bean id="myService" class="MyServiceImpl" />
 <!-- Simplest possible message broker --> 
 <flex:message-broker/>
  <!-- exposes myService as BlazeDS destination -->
 <flex:remoting-destination ref="myService" />
</beans>
 
通过配置,使BlazeDS接口开放。首先要添加Flex的namespace。添加之后,使用message-broker标签创建 MessageBrokerFactoryBean。看下配置只是个简单标签。配置是默认的。要确保WEB-INF/flex 下有service-config.xml这个配置文件。 remoting-destination标签使Spring bean变为远程目标。

接下来修改默认的BlazeDS service-config.xml文件。代码如下
Xml代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < services-config >   
  3.     < services >   
  4.         < default-channels >   
  5.             < channel   ref = "my-amf"   />   
  6.         </ default-channels >   
  7.     </ services >   
  8.     < channels >   
  9.         < channel-definition   id = "my-amf"   
  10.             class = "mx.messaging.channels.AMFChannel" >   
  11.             < endpoint   
  12.                 url = "http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amf"   
  13.                 class = "flex.messaging.endpoints.AMFEndpoint"   />   
  14.         </ channel-definition >   
  15.         < channel-definition   id = "my-polling-amf"   
  16.             class = "mx.messaging.channels.AMFChannel" >   
  17.             < endpoint   
  18.                 url = "http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amfpolling"   
  19.                 class = "flex.messaging.endpoints.AMFEndpoint"   />   
  20.             < properties >   
  21.                 < polling-enabled > true </ polling-enabled >   
  22.                 < polling-interval-seconds > 4 </ polling-interval-seconds >   
  23.             </ properties >   
  24.         </ channel-definition >   
  25.     </ channels >   
  26. </ services-config >   
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
	<services>
		<default-channels>
			<channel ref="my-amf" />
		</default-channels>
	</services>
	<channels>
		<channel-definition id="my-amf"
			class="mx.messaging.channels.AMFChannel">
			<endpoint
				url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amf"
				class="flex.messaging.endpoints.AMFEndpoint" />
		</channel-definition>
		<channel-definition id="my-polling-amf"
			class="mx.messaging.channels.AMFChannel">
			<endpoint
				url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amfpolling"
				class="flex.messaging.endpoints.AMFEndpoint" />
			<properties>
				<polling-enabled>true</polling-enabled>
				<polling-interval-seconds>4</polling-interval-seconds>
			</properties>
		</channel-definition>
	</channels>
</services-config>
 
看一下 endpoint标签的的url.唯一可以修改的就是content.root之后的spring.所有远程目标配置都应该配置在application-config.xml文件中。

现在我们完成了Spring/BlazeDS Java应用。可以启动Tomcat来查看配置是否出错。

接下来我们就可以新建一个Flex来远程调用Spring服务。步骤如下
  • File>New>Other
  • 选择Flex Project
  • 填写工程名称test-flex
  • 用默认的地址
  • 选择Web application(运行在Flash player)
  • Application Type 选择None
  • 点击Next
  • 指定Output的文件夹。如   C:\workspace\test-server\WebContent\
  • 点击Finish
工程创建完毕,我们会看到一个main.mxml的文件。修改代码如下
Xml代码
  1. <? xml   version = "1.0"   encoding = "utf-8" ?>   
  2. < mx:Application   xmlns:mx = "http://www.adobe.com/2006/mxml"    
  3.     layout = "absolute"    
  4.     creationComplete = "srv.getMyEntities()" >   
  5.     < mx:AMFChannel   id = "myamf"   uri = "/test-server/spring/messagebroker/amf" />     
  6.  < mx:ChannelSet   id = "channelSet"   channels = "{[myamf]}" />     
  7.  < mx:RemoteObject   id = "srv"    
  8.    destination = "myService"   channelSet = "{channelSet}" />     
  9.  < mx:DataGrid   dataProvider = "{srv.getMyEntities.lastResult}" />   
  10. </ mx:Application >   
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="absolute" 
	creationComplete="srv.getMyEntities()">
	<mx:AMFChannel id="myamf" uri="/test-server/spring/messagebroker/amf"/>  
 <mx:ChannelSet id="channelSet" channels="{[myamf]}"/>  
 <mx:RemoteObject id="srv" 
   destination="myService" channelSet="{channelSet}"/>  
 <mx:DataGrid dataProvider="{srv.getMyEntities.lastResult}"/>
</mx:Application>

 
以上代码的AMFChannel访问了Spring的服务。
要注意的是RemoteObject标签中的destination的 destination要和spring的application-config.xml中remote-service标签的ref所设置的值保持一致。通过代码可以看出Flex并没有包含关于Spring的东西。编写Flex的
开发人员不必知道关于Spring的知识。

要更新test-server的程序。可以Refresh这个工程。

下面测试一下。启动Tomcat.http://localhost:8080/test-server/main.html


 

为了在Flex builder中调试运行。可以做如下设置

 

  • 右键点击test-flex工程。
  • 选择Properties,之后是Flex build path
  • Output Folder URL 填写  http://localhost:8080/test-server/
  • 点击OK
之后直接运行就可以了。整合完成。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot Mybatis Flex是一个用于在Spring Boot项目中集成Mybatis Flex的工具。根据提供的引用内容,可以看出Mybatis Flex提供了不同的依赖项,以适应不同的场景。 如果只使用了Mybatis,而没有使用Spring,可以使用以下依赖项: ```xml <dependency> <groupId>com.mybatis-flex</groupId> <artifactId>mybatis-flex-core</artifactId> <version>1.2.0</version> </dependency> ``` \[1\] 如果使用了Spring,可以使用以下依赖项: ```xml <dependency> <groupId>com.mybatis-flex</groupId> <artifactId>mybatis-flex-spring</artifactId> <version>1.2.0</version> </dependency> ``` \[2\] 如果使用了Spring Boot,可以使用以下依赖项: ```xml <dependency> <groupId>com.mybatis-flex</groupId> <artifactId>mybatis-flex-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> ``` \[3\] 此外,根据提供的代码片段,可以看出创建了一个名为`tb_account`的数据库表,并定义了一个名为`Account`的实体类和Mapper接口。`Account`类中包含了`id`、`userName`、`age`和`birthday`等属性。 综上所述,Spring Boot Mybatis Flex是一个用于在Spring Boot项目中集成Mybatis Flex的工具,可以根据不同的场景选择相应的依赖项,并通过实体类和Mapper来操作数据库。 #### 引用[.reference_title] - *1* *2* *3* [Mybatis-Flex快速入门教程](https://blog.csdn.net/qq_19309473/article/details/130417630)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值