整合Flash Builder4.0+MyEclipse 8.6+BlazeDS+Sping 3.0+Hibernate3.3+MySQL5.5+Tomcat+JDK1.6

  [b],设置好环境变量。 [/b]
  [b]Tomcat 6.0[/b][b]。 [/b][b]去官方下载[/b][b]MyEclipse 8.6[/b][b]。下载完毕,我先问候它妈一下--那么鬼难用! [/b][b]在弹出的对话框的左侧栏,点[/b][b]General-->[/b][b]点[/b][b]Capabilities[/b][b],然后把[/b][b]Classic Update[/b][b]前的框选上;其次是对于[/b][b]Flash Builder[/b][b]的网页模版[/b][b]js[/b][b]报错,解决方法是:[/b][b]在[/b][b]window--preferences--MyEclipse--Validation[/b][b]然后把[/b][b]JavaScript Validator[/b][b]这一项的[/b][b]Manual [/b][b]和[/b][b] Build[/b][b]的勾去掉。 [/b]
  [b]设置一下[/b][b]Tomcat[/b][b]。 [/b]
  [b]去官方网站下载[/b][b]Flash Builder 4.0[/b][b]插件版以及[/b][b]BlazeDS[/b][b]。安装前者以及解压后者。 [/b]
  [b]下载[/b][b]MySQL[/b][b]以及[/b][b]GUI[/b][b](本人比较懒)和[/b][b]jdbc[/b][b]的[/b][b]jar[/b][b]包。 [/b]
  [b]Spring[/b][b]和[/b][b]Hibernate[/b][b]均使用[/b][b]MyEclipse[/b][b]内置即可。 [/b]
  [b]为了可以调试,还必须下载调试版的[/b][b]Flash player. [/b]
  [b] [/b][b]现在开始我们的整合之旅。 [/b]
  [b]我们将会写一个登录验证的例子。我们遵循从底层到上层的开发模式,由数据库开始。打开[/b][b]MySQL[/b][b]的[/b][b]GUI[/b][b]工具,创建一个叫做[/b][b]MyFlexDB[/b][b]的数据库。再创建一个叫做"[/b][b]User[/b][b]"的表,表的字段包含了[/b][b]id[/b][b],[/b][b]username[/b][b],[/b][b]password[/b][b]三个字段,其中[/b][b]id[/b][b]为自增并且为表主键。脚本如下: [/b]
  [b] [/b][b]CREATE TABLE `myflexdb`.`User` ( [/b]
  [b] [/b][b]`id` INTEGER NOT NULL DEFAULT NULL AUTO_INCREMENT, [/b]
  [b] [/b][b]`username` VARCHAR(45), [/b]
  [b] [/b][b]`password` VARCHAR(45), [/b]
  [b] [/b][b]PRIMARY KEY (`id`) [/b]
  [b]) [/b]
  [b]ENGINE = InnoDB; [/b]
  [b] [/b][b]接着,我们创建一个[/b][b]Flex[/b][b]工程,名字叫做[/b][b]MyFlex[/b][b]。截屏如下: [/b]
  [b]输出配置信息,上下文根目录和内容文件夹如下: [/b]
  [b]令人很不爽的是[/b][b]context[/b][b]竟然不可以修改,真的不爽,搞到得硬编码指定[/b][b]endpoint[/b][b]值。点击[/b][b]next[/b][b],看到 [/b][b]最后点击[/b][b]finish. [/b]
  [b] [/b][b]在服务端编写一个测试类[/b][b]Test[/b][b],在客户端进行调用,配置[/b][b]remoting-config.xml[/b][b](位于[/b][b]WEB-INF[/b][b]文件夹下面的[/b][b]Flex[/b][b]文件夹)。 [/b]
  [b] [/b][b]Test[/b][b]类如下: [/b]
  [b]/** [/b]
  [b] [/b][b]* @author [/b][b]黄记新 [/b]
  [b] [/b][b]* [/b]
  [b] [/b][b]*/ [/b]
  [b]public class Test { [/b]
  [b] [/b][b]public String testStr() { [/b]
  [b] [/b][b]return "hello,[/b][b]黄记新[/b][b]"; [/b]
  [b] [/b][b]} [/b]
  [b]} [/b]
  [b] [/b][b]配置文件修改成为: [/b]
  [b] [/b]
  [b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b][/b][b]Test[/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b]
  [b]默认使用[/b][b]my-amf[/b][b]通道即可。 [/b]
  [b] [/b][b]前端主程序文件如下: [/b]
  [b] [/b][b]flex/spark[/b][b]" [/b][b] [/b][b] [/b][b]xmlns:mx="[/b][b]library://ns.adobe.com/flex/mx[/b][b]" minWidth="[/b][b]955[/b][b]" minHeight="[/b][b]600[/b][b]"[/b][b]> [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b]
  [b] [/b]
  [b] [/b][b]用[/b][b]MyEclipse[/b][b]部署一下,启动服务器。 [/b]
  [b] [/b][b]允许之后我们可以看到这样的画面: [/b]
  [b]点击按钮可以看到界面报错了,如下图: [/b][b]原因是上下文错误。我们必须显式地指出[/b][b]endpoint[/b][b]的值。修改一下主文件,在远程类里面加上[/b][b]:[/b][b] endpoint[/b][b]='http://127.0.0.1:8080/MyFlex/messagebroker/amf' [/b]
  [b]再次运行可以看到: [/b]
  [b]接下来测试一下调试环境,使用调试的方式运行程序。 [/b]
  [b]就是喜欢[/b][b]MyEclipse[/b][b]这种简单的调试环境。调试也成功了。 [/b]
  [b] [/b][b]到此我们开始进入第二阶段的整合。 [/b]
  [b]首先为工程加入[/b][b]Spring[/b][b]的[/b][b]jar[/b][b]包。如图所示,一般也别管什么东西了就一股脑加上吧。 [/b][b]点击[/b][b]next[/b][b]可以看到 [/b][b]此处主要是让用户是否对工程加入[/b][b]AOP[/b][b]支持和新建上下文配置文件的目录。 [/b]
  [b] [/b][b]打开[/b][b]Hibernate[/b][b]的视图,新建数据库链接。 [/b]
  [b]新建此链接等下我们在加入[/b][b]Hibernate[/b][b]支持的时候会使用到。 [/b]
  [b]此处我们使用[/b][b]Spring[/b][b]来管理[/b][b]Hibernate[/b][b]链接。 [/b]
  [b]此时[/b][b]Spring[/b][b]的上下文配置文件如下: [/b]
  [b] [/b]
  [b] [/b]
  [b] [/b][b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b]org.hibernate.dialect.MySQLDialect [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b]新建三个包:[/b][b]com.myflex.model[/b][b],[/b][b]com.myflex.service,[/b][b]com.myflex.dao [/b]
  [b]接下来我们做数据库映射,从数据库生成[/b][b]VO[/b][b],[/b][b]dao[/b][b]。打开[/b][b]Hibernate[/b][b]视图。映射生成结果如图: [/b][b]将[/b][b]dao[/b][b]文件拖拽到另外一个包中。 [/b]
  [b]系统自动更新配置文件和引用位置。 [/b]
  [b] [/b][b]我们做一下测试,顺便加几条数据到数据库当中。修改前面的[/b][b]Test[/b][b]类如下: [/b]
  [b]import java.util.List; [/b]
  [b] [/b][b]import org.springframework.context.ApplicationContext; [/b]
  [b]import org.springframework.context.support.ClassPathXmlAp plicationContext; [/b]
  [b] [/b][b]import com.myflex.dao.UserDAO; [/b]
  [b]import com.myflex.model.User; [/b]
  [b] [/b][b]/** [/b]
  [b] [/b][b]* [/b]
  [b] [/b][b]*/ [/b]
  [b] [/b][b]/** [/b]
  [b] [/b][b]* @author [/b][b]黄记新 [/b]
  [b] [/b][b]* [/b]
  [b] [/b][b]*/ [/b]
  [b]public class Test { [/b]
  [b] [/b][b]public String testStr() { [/b]
  [b] [/b][b]return "hello,[/b][b]黄记新[/b][b]"; [/b]
  [b] [/b][b]} [/b]
  [b] [/b][b] [/b][b]public static void main(String[] args) { [/b]
  [b] [/b][b]User user=new User(); [/b]
  [b] [/b][b]user.setUsername("[/b][b]黄记新[/b][b]"); [/b]
  [b] [/b][b]user.setPassword("123456"); [/b]
  [b] [/b][b] [/b][b]//[/b][b]使用上下文获得[/b][b]dao[/b][b]对象; [/b]
  [b] [/b][b]ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext .xml"); [/b]
  [b] [/b][b]UserDAO userDao=(UserDAO)context.getBean("UserDAO"); [/b]
  [b] [/b][b] [/b][b]userDao.save(user); [/b]
  [b] [/b][b] [/b][b]//[/b][b]查找输出数据库对象 [/b]
  [b] [/b][b]List list=userDao.findAll(); [/b]
  [b] [/b][b] [/b][b]for (User user2 : list) { [/b]
  [b] [/b][b]System.out.println(user2.getId()+" "+user2.getUsername()+" "+user2.getPassword()); [/b]
  [b] [/b][b]} [/b]
  [b] [/b][b] [/b][b]} [/b]
  [b]} [/b]
  [b] [/b][b]运行之后可以看到: [/b]
  [b]log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlA pplicationContext). [/b]
  [b]log4j:WARN Please initialize the log4j system properly. [/b]
  [b]1 [/b][b]黄记新[/b][b] 123456 [/b]
  [b]2 [/b][b]韩冰[/b][b] 123456 [/b]
  [b] [/b][b]接下来我们进入第三阶段,配置[/b][b]web.xml.[/b][b]主要是配置日志文件,[/b][b]Spring[/b][b]启动侦听器等。配置完毕后它的文件内容如下: [/b]
  [b] [/b]
  [b] [/b]
  [b] [/b][b][/b][b]MyFlex[/b][b] [/b]
  [b] [/b][b] [/b][b] [/b][b][/b][b]flex.class.path[/b][b] [/b][b] [/b][b][/b][b]/WEB-INF/[/b][b]flex[/b][b]/[/b][b]hotfixes[/b][b],/WEB-INF/[/b][b]flex[/b][b]/jars[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]contextConfigLocation[/b][b] [/b][b] [/b][b][/b][b]/WEB-INF/classes/applicationContext.xml[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]log4jConfigLocation[/b][b] [/b][b] [/b][b][/b][b]/WEB-INF/log4j.properties[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]webAppRootKey[/b][b] [/b][b] [/b][b][/b][b]webApp.root[/b][b] [/b][b] [/b][b] [/b][b] [/b][b]Flex[/b][b] Session attribute and binding listener support --> [/b][b] [/b][b] [/b][b] [/b][b][/b][b]flex.messaging.HttpFlexSession[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]org.springframework.web.context.ContextLoaderListe ner[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]org.springframework.web.util.Log4jConfigListener[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]MessageBrokerServlet[/b][b] [/b][b] [/b][b][/b][b]flex.messaging.MessageBrokerServlet[/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]services.configuration.file[/b][b] [/b][b] [/b][b][/b][b]/WEB-INF/[/b][b]flex[/b][b]/services-config.xml[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]flex.write.path[/b][b] [/b][b] [/b][b][/b][b]/WEB-INF/[/b][b]flex[/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]1[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]MessageBrokerServlet[/b][b] [/b][b] [/b][b][/b][b]/[/b][b]messagebroker[/b][b]/*[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]index.html[/b][b] [/b][b] [/b][b][/b][b]index.htm[/b][b] [/b][b] [/b][b][/b][b]index.jsp[/b][b] [/b][b] [/b][b][/b][b]default.html[/b][b] [/b][b] [/b][b][/b][b]default.htm[/b][b] [/b][b] [/b][b][/b][b]default.jsp[/b][b] [/b][b] [/b][b][/b][b]/MyFlex.html[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]BASIC[/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b] [/b][b][/b][b]Flex[/b][b] Messaging WorkManager [/b][b] [/b][b][/b][b]wm[/b][b]/MessagingWorkManager [/b][b] [/b][b]com.ibm.websphere.asynchbeans.WorkManager [/b][b] [/b][b]Container [/b][b] [/b][b][/b][b]Shareable[/b][b] [/b][b] [/b][b] [/b][b] [/b][b]接下来我们增加一个工程类以及修改配置文件: [/b]
  [b]在服务端增加一个工程类,代码如下: [/b]
  [b]package com.myflex.factory; [/b]
  [b] [/b][b]import org.springframework.context.ApplicationContext; [/b]
  [b]import org.springframework.web.context.support.WebApplica tionContextUtils; [/b]
  [b]import org.springframework.beans.BeansException; [/b]
  [b]import org.springframework.beans.factory.NoSuchBeanDefini tionException; [/b]
  [b] [/b][b]import flex.messaging.FactoryInstance; [/b]
  [b]import flex.messaging.FlexFactory; [/b]
  [b]import flex.messaging.config.ConfigMap; [/b]
  [b]import flex.messaging.services.ServiceException; [/b]
  [b] [/b][b]/** [/b]
  [b]* This interface is implemented by factory components which provide [/b]
  [b]* instances to the [/b][b]flex[/b][b] messaging framework.[/b][b] [/b][b]To configure [/b][b]flex[/b][b] data services [/b]
  [b]* to use this factory, add the following lines to your services[/b][b]-[/b][b]config.xml [/b]
  [b]* file (located in the WEB[/b][b]-[/b][b]INF/[/b][b]flex[/b][b] directory of your web application). [/b]
  [b]* [/b]
  [b]* [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]* [/b]
  [b]* You also must configure the web application to use spring and must copy the spring.jar [/b]
  [b]* file into your WEB[/b][b]-[/b][b]INF/[/b][b]lib[/b][b] directory.[/b][b] [/b][b]To configure your [/b][b]app[/b][b] server to use spring, [/b]
  [b]* you add the following lines to your WEB[/b][b]-[/b][b]INF/web.xml file: [/b]
  [b]* [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b]contextConfigLocation [/b]
  [b]*[/b][b] [/b][b]/WEB[/b][b]-[/b][b]INF/applicationContext.xml [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]* [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b]org.springframework.web.context.ContextLo aderListener [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]* [/b]
  [b]* Then you put your spring bean configuration in WEB[/b][b]-[/b][b]INF/applicationContext.xml (as per the [/b]
  [b]* line above).[/b][b] [/b][b]For example: [/b]
  [b]* [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b]
  [b]* Now you are ready to define a destination in [/b][b]flex[/b][b] that maps to this existing service. [/b]
  [b]* To do this you'd add this to your WEB[/b][b]-[/b][b]INF/[/b][b]flex[/b][b]/[/b][b]remoting[/b][b]-[/b][b]config.xml: [/b]
  [b]* [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b]spring [/b]
  [b]*[/b][b] [/b][b]weatherBean [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]*[/b][b] [/b][b] [/b]
  [b]* [/b]
  [b]* @author[/b][b]Jeff[/b][b]Vroom [/b]
  [b]*/ [/b]
  [b]public class[/b][b] SpringFactory implements[/b][b] FlexFactory [/b]
  [b]{ [/b][b] [/b][b]private[/b][b] static[/b][b] final[/b][b] String [/b][b]SOURCE[/b][b] = [/b][b]"source"[/b][b]; [/b][b] [/b][b]/** [/b][b] [/b][b]* This method can be used to initialize the factory itself.[/b][b] [/b][b]It is called with configuration [/b][b] [/b][b]* parameters from the factory tag which defines the id of the factory.[/b][b] [/b][b] [/b][b]*/ [/b][b] [/b][b]public[/b][b] void[/b][b] initialize(String id, ConfigMap configMap) {} [/b][b] [/b][b]/** [/b][b] [/b][b]* This method is called when we initialize the definition of an instance [/b][b] [/b][b]* which will be looked up by this factory.[/b][b] [/b][b]It should validate that [/b][b] [/b][b]* the properties supplied are valid to define an instance. [/b][b] [/b][b]* Any valid properties used for this configuration must be accessed to [/b][b] [/b][b]* avoid warnings about unused configuration elements.[/b][b] [/b][b]If your factory [/b][b] [/b][b]* is only used for application scoped components, this method can simply [/b][b] [/b][b]* return a factory instance which delegates the creation of the component [/b][b] [/b][b]* to the FactoryInstance's lookup method. [/b][b] [/b][b]*/ [/b][b] [/b][b]public[/b][b] FactoryInstance createFactoryInstance(String id, ConfigMap properties) [/b][b] [/b][b]{ [/b][b] [/b][b]SpringFactoryInstance instance = new[/b][b] SpringFactoryInstance(this[/b][b], id, properties); [/b][b] [/b][b]instance.setSource(properties.getPropertyAsString([/b][b]SOURCE[/b][b], instance.getId())); [/b][b] [/b][b]return[/b][b] instance; [/b][b] [/b][b]} [/b][b]// end method createFactoryInstance() [/b][b] [/b][b]/** [/b][b] [/b][b]* Returns the instance specified by the source [/b][b] [/b][b]* and properties arguments.[/b][b] [/b][b]For the factory, this may mean [/b][b] [/b][b]* constructing a new instance, optionally registering it in some other [/b][b] [/b][b]* name space such as the session or JNDI, and then returning it [/b][b] [/b][b]* or it may mean creating a new instance and returning it. [/b][b] [/b][b]* This method is called for each request to operate on the [/b][b] [/b][b]* given item by the system so it should be relatively efficient. [/b][b] [/b][b]* [/b][b] [/b][b] [/b][b]* If your factory does not support the scope property, it [/b][b] [/b][b]* report an error if scope is supplied in the properties [/b][b] [/b][b]* for this instance. [/b][b] [/b][b]*/ [/b][b] [/b][b]public[/b][b] Object lookup(FactoryInstance inst) [/b][b] [/b][b]{ [/b][b] [/b][b]SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst; [/b][b] [/b][b]return[/b][b] factoryInstance.lookup(); [/b][b] [/b][b]} [/b][b] [/b][b]static[/b][b] class[/b][b] SpringFactoryInstance extends[/b][b] FactoryInstance [/b][b] [/b][b]{ [/b][b] [/b][b]SpringFactoryInstance(SpringFactory factory, String id, ConfigMap properties) [/b][b] [/b][b]{ [/b][b] [/b][b]super[/b][b](factory, id, properties); [/b][b] [/b][b]} [/b][b] [/b][b]public[/b][b] String toString() [/b][b] [/b][b]{ [/b][b] [/b][b]return[/b][b]"SpringFactory instance for id="[/b][b] + getId() + [/b][b]" source="[/b][b] + getSource() + [/b][b]" scope="[/b][b] + getScope(); [/b][b] [/b][b]} [/b][b] [/b][b]public[/b][b] Object lookup() [/b][b] [/b][b]{ [/b][b] [/b][b]ApplicationContext appContext = WebApplicationContextUtils.[/b][b]getWebApplicationContext[/b][b](flex.messaging.FlexContext.[/b][b]getServletConfig[/b][b]().getServletContext()); [/b][b] [/b][b]String beanName = getSource(); [/b][b] [/b][b]try [/b][b] [/b][b]{ [/b][b] [/b][b]return[/b][b] appContext.getBean(beanName); [/b][b] [/b][b]} [/b][b] [/b][b]catch[/b][b] (NoSuchBeanDefinitionException nexc) [/b][b] [/b][b]{ [/b][b] [/b][b]ServiceException e = new[/b][b] ServiceException(); [/b][b] [/b][b]String msg = [/b][b]"Spring service named '"[/b][b] + beanName + [/b][b]"' does not exist."[/b][b]; [/b][b] [/b][b]e.setMessage(msg); [/b][b] [/b][b]e.setRootCause(nexc); [/b][b] [/b][b]e.setDetails(msg); [/b][b] [/b][b]e.setCode([/b][b]"Server.Processing"[/b][b]); [/b][b] [/b][b]throw[/b][b] e; [/b][b] [/b][b]} [/b][b] [/b][b]catch[/b][b] (BeansException bexc) [/b][b] [/b][b]{ [/b][b] [/b][b]ServiceException e = new[/b][b] ServiceException(); [/b][b] [/b][b]String msg = [/b][b]"Unable to create Spring service named '"[/b][b] + beanName + [/b][b]"' "[/b][b]; [/b][b] [/b][b]e.setMessage(msg); [/b][b] [/b][b]e.setRootCause(bexc); [/b][b] [/b][b]e.setDetails(msg); [/b][b] [/b][b]e.setCode([/b][b]"Server.Processing"[/b][b]); [/b][b] [/b][b]throw[/b][b] e; [/b][b] [/b][b]} [/b][b] [/b][b]} [/b][b] [/b][b]} [/b][b]} [/b][b]在[/b][b]services-config.xml[/b][b]文件当中增加如下标签: [/b]
  [b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b]在[/b][b]remoting-config.xml[/b][b]文件当中增加: [/b]
  [b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b][/b][b]springFactory[/b][b] [/b]
  [b] [/b][b][/b][b]UserDAO[/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b]修改主文件: [/b]
  [b] [/b]
  [b]flex/spark[/b][b]" [/b]
  [b] [/b][b] [/b][b]xmlns:mx="[/b][b]library://ns.adobe.com/flex/mx[/b][b]" [/b]
  [b] [/b][b] [/b][b]minWidth="[/b][b]955[/b][b]" minHeight="[/b][b]600[/b][b]" [/b]
  [b] [/b][b] [/b][b]pageTitle="[/b][b]MyFlex[/b][b]"[/b][b]> [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b][b] [/b][b]最后阶段了,就是为[/b][b]DAO[/b][b]加入事务能力。 [/b]
  [b][/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b][b][/b][b]PROPAGATION_REQUIRED[/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
  [b] [/b][b] [/b][b] [/b]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值