migrating from spring applications to java ee 6 [chinese version]
TRANSCRIPT
这是说给谁听的?您正在使用老版本的 Spring ,却不知怎样向前发展Java EE 好像又火起来了,您应当赶上这样的趋势吗?您喜欢《 J2EE Design and Development 》这本书,但它仍没有过时吗?
3
为什么要倾听我们的意见?我们不为任何一家应用服务器供应商 工作我们也不是 Rod Johnson 的追随者我们广泛使用 J2EE 、 Spring 和新的 Java EE 技术针对 Java EE 和 Spring 展开过无数次讨论……
4
Java EE 是否过于庞大了?部署了应用后的平台启动时间
JBoss AS 7 约 2 秒Glassfish V3 约 4 秒Tomcat 6 + Spring 约 4 秒
Java EE 6 WAR 文件 < 100kb
9
功能比较功能 Spring JavaEE
依赖注入 Spring 容器 CDI
事务 AOP/ 批注 EJB
Web 框架 Spring Web MVC JSF
AOP AspectJ (限于 Spring bean ) 拦截器
消息处理 JMS JMS / CDI
数据访问 JPA / JDBC 模板 / 其他 ORM JPA
RESTful Web 服务 Spring Web MVC (3.0) JAX-RS
集成测试 Spring 测试框架 Arquillian *
* 不是 Java EE 规范的一部分 13
典型的老版本 Spring 应用大量复杂的 XML 配置文件,无法使用注解
旧式 / 过时的 ORM 解决方案
( JDBC 模板、 Kodo 、 Toplink 等)
过时的基于 Web MVC 的扩展
( SimpleFormController 等)
17
迁移路径1. 升级 Spring 版本2. 替换 Spring 内的旧框架( ORM 、 Web 框
架)3. Spring 和 Java EE 容器并存4. 完全替换 Spring
5. 移除 Spring 容器18
迁移路径1.升级 Spring 版本2. 替换 Spring 内的旧框架( ORM 、 Web 框
架) 3. Spring 和 Java EE 容器并存4. 完全替换 Spring
5. 移除 Spring 容器19
迁移路径1. 升级 Spring 版本 2.替换 Spring 内的旧框架( ORM 、 Web 框架)
3. Spring 和 Java EE 容器并存4. 完全替换 Spring
5. 移除 Spring 容器21
替换 Spring 内的旧框架 表示层
数据 / 集成层
Web MVC
任务
Spring JDBC 模板Kodo
@AutoWired
业务层
JMS bean
@AutoWired
@AutoWired
JPA
JSF尚未触碰特定于 Spring 的 API
Spring bean
22
迁移路径1. 升级 Spring 版本 2. 替换 Spring 内的旧框架( ORM 、 Web 框
架)3. Spring 和 Java EE 容器并存4. 完全替换 Spring
5. 移除 Spring 容器23
Java EE 6 应用服务器
CDI / EJB 容器
myapp.war
CDI bean会话 bean
TX
T
X
管理器
管理器
安全性
安全性
拦截器
拦截器
JPA
JPA
Java EE 应用程序
25
Java EE 6 应用服务器
CDI / EJB 容器myapp.war
CDI bean会话 bean
TX
T
X
管理器
管理器
安全性
安全性
拦截器
拦截器
JPA
JPA Spring 容器
Spring bean
Spring bean
TX
TX
管理器
管理器
AO
PA
OP
OR
MO
RM
混合在一起
26
在 Java EE 容器内运行 Spring
表示层
数据 /集成层
Spring bean 任务
Spring JDBC 模板
业务层
JMS bean
@AutoWired
@AutoWired
JPA
JSF
27
Spring 和 Java EE 容器并存表示层
数据 /集成层
Spring bean 任务
Spring JDBC 模板
业务层
JMS bean
@AutoWired
@AutoWired
JPA
JSF
EJB CDI
@Inject
@Inject
28
迁移路径1. 升级 Spring 版本 2. 替换 Spring 内的旧框架( ORM 、 Web 框架)3. Spring 和 Java EE 容器并存4.完全替换 Spring
5. 移除 Spring 容器34
完全替换 Spring
表示层
数据 /集成层
Spring bean 任务
Spring JDBC 模板
业务层
JMS bean
@AutoWired
@AutoWired
JPA
JSF
EJB CDI
@Inject
@Inject
35
完全替换 Spring
表示层
数据 /集成层
EJB 计时器业务层
MDB
@AutoWired
@AutoWired
JPA
JSF
EJB CDI
@Inject
@Inject
Spring JDBC 模板
36
迁移路径1. 升级 Spring 版本 2. 替换 Spring 内的旧框架( ORM 、 Web 框架)3. Spring 和 Java EE 容器并存4. 完全替换 Spring
5.移除 Spring 容器48
还有更多!
• JBoss 网站上的 4 部分文章系列• Pet Clinic 示例应用程序的逐步迁移• http://www.howtojboss.com
57