??xml version="1.0" encoding="utf-8" standalone="yes"?> Spring的横I出世完全颠覆了传统Java服务端的开发方式。它鼓励通过依赖注入的方式来装配POJOQ这极大地简化了应用的开发与试?/p>
Spring的核心配|是通过Java bean实现的。借助于beanQQ何Javac都能被公开成ؓ服务?br />
IoC是Spring的核心。IoC的作用: 一般有两种最常见的对象配|方法: 而利用IOCQ你可在一个独立层中实例化应用E序要用到的对象Qƈ传入它们所需的依赖。具体来_最常见的实现方法也有两U: 一个IOC框架Q通常由如下三个部分组成:配置、工厂和注入机制? 我们可以在配|中描述对象之间的关pR最常用的配|描q方法是在文件中声明。这L文g有时候也被称Z下文文gQcontext fileQ。也可以用元数据/注释Qmetadata/annotationQ,甚至直接在程序中描述配置?
工厂负责配置的解析和所有对象的准备工作Q程序一旦运行,可以根据需要取得这些对象?/p>
在经典的Spring框架Q最行的Java IOC框架Q中Q所有对象(我称其ؓ客户对象Q都由IOC容器负责准备Qƈ且它们以接口形式声明自己的依赖。在配置文g中,被声明的依赖都被讄为对应的实现cR? 所谓注入机Ӟ是指如何工厂创建的对象实例注入到应用或其他对象?/p>
Spring
Web应用而言Q注入方法是通过web.xml来实现的。Spring会监听Web应用上下文的加蝲事gQƈ利用钩子捕获cd载器的行为,从而分dM
需被创建的对象。此后,若有需要,工厂实例化对象Qƈ填充它所需的依赖。当然在向应用返回对象之前,q些依赖本n也可能需要实例化。这个过E即所谓的
“Q将依赖与对象)捆绑在一?#8221;?/p>
在Flex中,cȝ加蝲原理有所不同Q因此捆l方法也׃同。目前有两种ҎQ?/p>
q两个项目让你在客户端的Actionscript~码中以及服务端的Java~码中,都能够用Spring的各U优UҎ?/p>
两者的不容之处在于 Spring BlazeDS Integeration 允许你在服务端用Spring容器来组l你的代码,l护的你代码依赖。ƈ且,把你的服务通过相应的配|暴露给客户端?/p>
Spring Actionscript则是一个基于Actionscript代码的Ioc容器Q目前还不支持AOPQ?可以让你在客L使用Ioc理依赖注入. 下面分别看下Q首先来探讨下Spring Actionscript以及其它的IoC框架?/p>
Spring ActionScript前n为PranaQ因其成熟度高,成ؓ了一个知名框架?/p>
M使用qSpring的Java?NET版本的hQ都会很快熟悉Spring ActionScript。你在运行时加蝲的配|文Ӟ可以l工厂提供够信息,用于实例化被应用h的Q何对象?/p>
在标准例子工E中使用Spring ActionScriptQ需如下三个基本步骤Q?/p>
在Spring ActionScript中,对象声明在应用可讉K的XML文gQ通常命名为application-context.xmlQ中。此配置文g由XMLApplicationContextQ是ObjectFactory的子c)加蝲?/p>
Spring ActionScript是一个优U的、成熟的、开发活动十分活跃的IOC框架QQ何用qSpring框架的h都熟悉的?/p>
以XML形式声明对象存在一个问题,卛_XML中声明一个类Qƈ且这个类没被包含在SWF中(因ؓ在你的应用中没有对它的直接引用)ӞFlash
Player会在q行时抛出异常。其解决办法是创Z个ActionScriptc,声明它对上下文XML的依赖,q将此类包含在应用中?/p>
Parsley也是一个成熟的IOC框架Q最初灵感来源于Spring。它q期l历q一ơ较大规模的重写。新版本支持一些本地FlexҎ,如绑定和元数据,使你在配|你的工E时有更多更好的选择?/p>
Parsley的核心概忉|源自于Spring的上下文Q也卛_用的依赖注入的配|?/p>
Parsley的配|现在支持多UŞ式,其中包括XML和MXML。你可以使用本地的MXML标记或Parsley库提供的自定义MXML标签。Parsley使用元数据标{֮现对注入机制的支持,q和Swiz框架是类似的?/p>
Parsleyq支持消息模式。基本不需代码q预Q你p你的对象配|ؓ事g源或事g处理器。在q个例子中,我会用这个特性替代Controller模式?/p>
Parsley的配|分三个基本步骤Q?/p>
准备配置文g的方法有多种Q不q在q个例子中,我用支持本地标记和Parsley标签的MXML文g。这U方法的好处是在~译时就类引入Q当然这样一来,也就不能直接修改已被~译的应用的配置了?/p>
在Config.mxml中,你能看到应用中用到的从域模型C理的所有对象。声明这些对象的方式有两U: 在后面的内容中,我将详细介绍q种Ҏ?/p>
Load B
Flex ?Spring 框架 http://www.riameeting.com
Spring BlazeDS Integration介与入门 http://www.infoq.com/cn/articles/spring-blazeds-integration
Spring与IOC现在是开发h员的常识了,IOCQInversion of ControlQ也成ؓ软g开发中非常行的一U设计模式?br />
借助IOCQ可用一个独立的对象为其他对象的数据成员填充正确的实玎ͼ而不是由q些对象自己负责此项工作。这样做的好处有两个?br />
W一Q可对象的数据成员
声明为接口,从而将对象与其具体实现分离Q即契约式设计,design by
contractQ?br />
W二Q可从对象中删除创徏逻辑Q可以对象的用途更为明?br />
实现Q?br />
var myObject = registry.getMyObject()
Q?/li>
instance.myObject = new Object()
Q?/li>
instance = new Instance( new Object() )
Q?/li>
配置
工厂
注入机制
看了一些文章之后发现还是不能够很好的了解Flex IOC框架比如spring Actionscript与Spring BlazeDS Integeration 到底有何不同?br />
到spring官方|站一看究竟,目前Spring官方|站上有两个目Q?br />
Spring BlazeDS Integration
Spring Ationscript
Spring ActionScript
核心概念
基本配置
对象工厂和对象配|?/h3>
Parsley
核心概念
基本配置
对象工厂和对象配|?/h3>
ȝ
l过其他一些框架的不断启发Q新版本的Parsley已发展成Z个完整的IOC框架。它q支持模块式开发和上下文卸载。在模块化Flex应用开发日益盛行的今天Q这无疑是一个十分重要的Ҏ?br />
Spring BlazeDS Integration
其目标是Q开发者可以利用Spring开发模型通过Adobe
Flex、BlazeDS、Spring以及Java技术创建RIA。这h们就可以通过BlazeDS公开Spring理的服务而无需额外的配|文
件。其优势在于Spring的易用性与Flex、BlazeDS以及Java整合h以共同创建应用?br />
Spring的核心配|是通过Java bean实现的。借助于beanQQ何Javac都能被公开成ؓ服务?br />
Z这些bean公开成ؓFlex客户端所用的q程服务QIntegration目采用了Spring Web MVC。Spring Web
MVCDispatcherServlet作ؓ一个中央分发器Q用以处理Q何类型的HTTPh或是ZHTTP的远E服务。我们可以通过相同?
JavaBean配置方式来配|该DispatcherServlet以将h转发l相应的处理器进行后l处理?br />
]]>public class B extends Object{
static{System.out.println("Load B");
}
public B(){
System.out.println("Create B");
}
}
public class A extends B{
static {
System.out.println("Load A");
}
public A(){
System.out.println("Create A");
}
}
public class testClass {
public static void main(String[] args){
new A();
}
}
写出E序q行l果Q?br />
Load A
Create B
Create A
Ƣ迎大家留言发散讨论
]]>
比如一个是class 一个是video
每次都是一对多的关p~每一ơ插入的Video的classID是相同的
video表中有个字段是classId 对应的是的class中的主键 ID
ID是sequence生成?br />
那我扚w插入video的时候怎样获取class_ID_sequence生成的id值呢Q?br />
思\Q?br />
我观察到Hibernate做插入的时候每ơ插入记录的时候会首先查询sequence
select CLASS_ID_SEQ.nextval from dual
那怎样获取到这个select的值呢Q?br />
获取到这个值可以直接给
video.setClassID(classID)
请大家讨论ƈ指教~
问题解决了,在action中定义成List<String> 可?/pre>
]]>
cosmos框架 是一个对于底层数据库、Web服务、JNDI{进行统一界面装的框Ӟ提供l一的调用接口,q用命令设计模式,所有需要调用的命o攄到数据库Q或 者其他域Q中去,从而可以改变传l的j2ee应用调试的流E:开?部v-试或者开?部v-重新启动-试Q达到像PHP、PERL那样的开? ->试的模式。有效地提高了开发速度?
׃其抛弃了所有的中间层次Q包括像Struts、Spring、Hibernateq样的框Ӟ调用数据库应用直接用JDBC的方式进行,因此有效地提高了q行性能? ׃开发的代码可以完全攄到数据库中,因此Q可以比较容易地实现׃n开发,从而有效地调动起开发h员的U极性? 在cosmos框架中开发一个数据库应用的流E是Q开发SQL语句或者存储过E或者函敎ͼ然后开发JSP面q行展示Q最后测试结果。完全地省略了开发Java代码的过E,因此Q有效地提高了开发速度? cosmos框架是一个能有效地应用于中小目的框Ӟ可以供开发h员快速徏立原型,从而实现敏捷开发的目的? 在框架中q包括权限和认证的部分框Ӟ因此Q用户可以简单地实现用户认证和系l权限的功能?
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>pȝ</display-name>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<!-- ContextConfigLocation -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/vbm_action.xml,/WEB-INF/vbm_hibernate.xml,/WEB-INF/vbm_dao.xml</param-value>
</context-param>
<!-- 著名 Character Encoding filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,struts.xml,struts_books.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 加入jpaFilterQ是Z不让hibernate的sessionq早关闭Q因为有的action会通过ajax动态调?-->
<filter>
<filter-name>jpaFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
<init-param>
<param-name>entityManagerFactory</param-name>
<param-value>entityManagerFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jpaFilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
<!-- Listener contextConfigLocation -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Listener log4jConfigLocation -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- Spring hIntrospector防止内存泄露 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- session时定义,单位为分?-->
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<!-- The Welcome File List -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
今天MyEclipse中可以连到数据库上,q且可以昄各个表,可是写个Junit test 抛出异常
Javava.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
JUnit控制台输出是q样?br />
奇怪的是我用笔记本写个试q接没问题Q?br />
不知道是MyeclipseZ问题q是pȝZ问题Q之前装各种服务器把pȝ搞的有点毛病Q?br />
希望q里有高人看Cl指点下q个问题原因在哪里~弟先谢q?br />