没有合适的资源?快使用搜索试试~ 我知道了~
通向架构师的道路(第十八天)万能框架Spring(一).docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 44 浏览量
2023-10-27
10:06:23
上传
评论
收藏 752KB DOCX 举报
温馨提示
试读
54页
通向架构师的道路(第十八天)万能框架Spring(一)
资源推荐
资源详情
资源评论
一、前言
前一阵列刚换了个新的工作环境,然后自己的 baby 也刚出生,一直没有时间去做工作以后
的其它事了,担搁了一段日子。
今天儿子满一周了,我内人她家帮着照顾着,总算我可以喘口气休息一下,因此决定将这个
系列的博文继续下去,同时也将此篇献给我刚出生一周的儿子和幸苦了 10 个月的爱人。
二、基本概念
Spring,作为一个流行框架它给我们在日常工程中的框架搭建提供了太多的便利了,它就像
一个骨架一样,你可以在上面自己去塑出肌肤与血肉并赋于它灵魂。
从今天开始我们将要连续几天基于 Spring 的基础上来讲软件开发框架,由于 Spring 被应用
的太广泛太广泛了,因此此系列教程可以作为 Spring 开发的一套基础教程也可以称其为“典
范或者公式化教程”吧.
此套教程会覆盖以下内容:
1) Spring+Struts1+jdbctemplate;
2) Spring+Struts1+Hibernate;
3) Spring+Struts2+ibatis;
4) Spring+Struts1、2+任意 DAO 层的 Unit Test;
5)甚至还会讲到如何使用 Spring 来构建应用程序,对,你没听错使用 Spring 可以构建单
独运行的 java 应
用程序,尤其在银行、保险业中有一种叫“批处理”的业务,就是应用程序,那么我们使用
Spring 会为
我们的批处理作业带来什么样的好处呢?敬请期待!
三、Spring+Struts+jdbctemplate
3.1 框架介绍
作为架构师,同时你也必须为“框架师”,架构是从广意上来讲的,它的知识需要覆盖到硬件、
软件、协议甚至业务背景。
但是一个架构师在项目中时它又必须是一个“框架师”,就和造房子一样,框架搭的好,房子
造出来才能坚固。
我们就先来看我们第一幢房子的脚手加架-Spring 在我们项目中的使用吧,先来看架构图,
一般我喜欢用 Visio 来画架构图,画完后直接在 Visio 的 workspace 里 ctrl+a 全选后回到
word 后按 ctrl+v,这样你的 word 文本中就有了一幅 visio 的图了,而你在 word 文档中双击
这个 visio 图它会自动在当前的文档中打开 visio 的 workspace 以便于你来编辑你的 visio 图,
这样你就不用来回在 word 与 visio 间进行切换了,也不用每次把 visio 转成 jpg 后再到 word
中插入图片了,这是一个标准操作模式,希望能够为大家今后的操作带来方便。当然,平时
看到好的文档,好的架构图把它收藏起来、分门别类相信你的文档会越写越漂亮.
Look,这就是我们的框架。
Ø Spring
在此我们使用 3.1,它负责 IOC,AOP 等工作,用于代理业务层(Service 层)的事务。
Ø Struts
在此我们使用 1.3,它负责控制层以及相关的 JSP 页面(采用 Struts 标签)。
控制层通过业务层再访问数据库层。
Ø Spring Jdbc Template
负责 ORMapping,由于我们使用的数据还需要进行一些复杂的汇总与计算,因此在未来系
统开发中还需要开发一系列的 StoreProcedure(存储过程),用 jdbc template 不仅可以方便
灵活的使用 SQL 查询语句,同时也为访问各种数据库的存储过程带来了方便。
该框架优点:
Ø 分层清晰,替换灵活,易于扩展
上述框架采用 View Layer,Controller Layer,Service Layer,DAOLayer 进行分层。层与
层之间全部基于接口。
1) 逻辑的任何变动不影响到代码的运行
2) 自动代理数据库的事务操作,尤于采用了 Spring 的 DataSourceTransactionManager,
该类是
一个完全基于 AOP 的事务自动代理,由于使用的是 AOP 中的围绕机制,因此该类会自动
利用 AOP 功能
在数据库操作时进行事务的开启、提交、关闭并且在遇见 Exception 时会自动回滚。该类使
用通配符
的方式,对于业务层进行事务管理。由于 Controller 层不直接操作 DAO,而是通过 Service
层来操作
事务的,因此事务的切片定位在 Service 层。另外,由于一个 Service 方法有可能涉及到多
个 DAO 操
作,所以将事务定位在 Service 层有助于保持数据的一致性。
3) 层中相关技术的替换不影响到其它层面,层与层之间的全部基于接口,因此各个层内自
身的逻辑
或者是采用的相关技术的变化不影响到其它层。举例来说:现在的 DAO 层是 Spring
JdbcTemplate,
如果将来换成 Hibernate 或者是 EJB 的 JPA 来做 DAO 层的话,对于整个 DAO 层只需要按
照原有接口重
写相关的 impl 类,而 view 层, controller 层与 Service 层的变动为“零代码”改动。
Ø 简化配置,提高生产力
本框架使用的是 Spring3.0+Struts2.x 作为系统框架的核心。传统的框架伴随着一堆 xml 文
件的配置,比如说用于描述Struts 中 Action的配置,层与层之间的依赖关系,甚至特定的 class
需要用到的外部变量都需要进行基于 xml 格式的配置文件的修改。
Xml 配置文件的改动,如果出现一处错误往往会影响整个系统的运行,或者甚至导致系统运
行崩溃。而本框架使用了 JDK1.6 中的“全注解”技术,除了需要改动一个 cbbs.properties 文
件,各层之间的调用全部使用的 Annotation,比如说我们需要在一个 Struts 的 Action 中调
用一个 Service, 只需要在相关的 Action 的 Class 里进行如下的注释即可:
@Resource
EmailActivationService activateService;
而传统的需要作下面这样的配置:
<bean id=”activation” class=”xxx.xxx.xxx.xx”>
<ref bean=”activateService”/>
</bean>
<bean id=”activateService” class=”xxx.xxx.xxx.EmailActivationServiceImpl”/>
设想,假如有 100 个类,上百个 Service,再加上数百个 DAO,我们的 xml 的配置将是多
么的庞大啊,这就是典型的“xml 泛滥”,这同时也将导致程员工工作效率,生产效率的低下。
而现在采用了 Annotation 方式来搭建框架,这在极大程度上使得程序员与框架之间是“透明”
的,让程序员将更多时间花在“业务”的实现上。这一切都用的是 Spring 的“注解”特性,即
“<context:component-scan base-package="xxx.xxx.xxx" />”。
Ø 该框架不需要使用容器的 jdbcjndi,而自带了一个 c3p0 的 jdbcconnection pool,它将会
随着容器的启动而启动,结束而销亡.
Ø 实现了基本的资源保护
我们在该框架中使用了以下几种技术的混合来实现外部资源文件的安全保护
1) 基于 Spring 的 Properties 的注入
2) 在 properties 文件与 spring 的配置 xml 文件里实现了 placeholder,即替换符,记住它
的英文的表达叫“place holder”。
3) 使用了第三方开源免费包 jasypt 与 spring 结合自动对 properties 文件中的关键内容如:
password 进行加密与解密
3.2 框架搭建
首先使用 eclipse 建立一个”dynamice web project”,我们管它叫”alpha”吧,我们的第一个孩
子。
然后与 src 同级的地方建立一个 resource 目录,并把它加入 classpath
剩余53页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1900
- 资源: 3860
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功