




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、初识Spring及依赖注入Spring创始人Rod JohnsonSpring简介什么是IoC,依赖注入使用Spring依赖注入示例创建登录示例,编写dao,biz,action为项目添加Spring支持编写Spring配置文件测试注入编写Spring与Struts集成的配置文件在Struts中配置插件在Sping中配置Action面向接口编程总结伟大的Rod在悉尼大学不仅获得了计算机学位,同时还获得了音乐学的博士学位。是Java development community中的杰出人物。Rod看上去是一个典型的英国绅士,说起话来也是一板一眼,有条有理。然而Rod Johnson似乎也天生缺少一
2、样东西:幽默感。一本正经的讲座和采访虽然让人听起来很爽,但是找不到那种激情和快感。 Rod Johnson当初大胆的抛出Without EJB,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。Sping框架横空出世,让臃肿的EJB王朝在短短的时间内迅速没落。当我们回过头来看这段历史,就像一个守旧而又始终怀着美好梦想的王,他仍然维持高傲的皇室血统,可是他的至高无上的权杖却已经失去了昔日统治力。我们只能叹一句“日落西山“。Rod Johnson提倡Dont Reinvent the Wheel ,不重复的造轮子。就是说别人已经创造好的,我们直接拿过来用就好
3、了。Spring创始人Rod Johnson Spring简介通过前面对于Struts和Hibernate的学习,我们认识到框架帮助我们构建规范的、优秀的应用程序,还可以简化繁琐的编码过程。Struts:优秀的MVC实现。Hibernate:以面向对象的方式,简化封装了持久层开发。Spring:在应用中充当粘合剂和润滑剂的作用。Spring的目标就是:“使JavaEE更易用并促进良好的编程习惯”。这使得Spring做的每一件事都显得格外的得体和优雅。Spring主要分为三个核心部分:Spring依赖注入(IoC)容器,AOP实现(包括声明式事务)和对持久化层的支持。什么是IoC,依赖注入IoC
4、就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。IoC原理:The Hollywood Principle:Dont call us,well call you(别找我,我会来找你的)。也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。简单的来讲,就是由容器控制程序之间的关系。而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,这就是反转。 使用S
5、pring依赖注入示例我们创建一个名为SpringTest的工程,结构如下:这是一个典型的Web工程分层结构。entity:实体对象。dao:数据访问层。biz:业务层action:Struts控制层其中Action调用Biz,Biz调用DAO。创建登录页面创建一个登陆页面index.jsp,登陆成功success.jsp和失败页面fail.jsp:用户登录用户名:密码:编写biz层在biz层模拟业务操作:public interface UserBiz public User login(String name,String pwd);public class UserBizImpl imp
6、lements UserBizUserDAO ud=null;public User login(String name, String pwd) User u=ud.login(name, pwd);return u;public void setUd(UserDAO ud) this.ud = ud;注意,这里的调用dao层的方法与以前有所不同,以前我们的写法是UserDAO ud=new UserDAOImpl();这样,如果一旦实现类发生改变,我们就需要去更改这些代码。现在有了Spring,我们指定UserDAO ud=null,通过外部容器来管理组件间的依赖关系,具体的实现类由容器在
7、代码外部指定,所以这里就不用再指定实现类了。从而解除了Biz对于DAO实现类的依赖关系,从而做到真正的面向接口编程。需要注意的是,我们需要一个setter方法,Spring会通过set方法给这个插槽注入相应的实现类。编写Action层在action层模拟控制操作:public class UserAction extends Action private UserBiz ub=null;public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServl
8、etResponse response) UserForm userForm = (UserForm) form;ActionForward af=null;User u=ub.login(userForm.getName(), userForm.getPwd();if(null=u)af=mapping.findForward(fail);elseaf=mapping.findForward(success);return af;public void setUb(UserBiz ub) this.ub = ub;Action用于将不同的结果定位到相应的页面。 Action依赖的是Biz,这
9、里我们同样配置了Biz的接口和set方法。为项目添加Spring支持为项目添加Spring支持:为项目添加Spring支持:选择添加Spring2.0的Spring 2.0 Core Libraries库支持这个库支持依赖注入。为项目添加Spring支持为项目添加Spring支持为项目添加Spring支持:为生成的applicationContext.xml(Spring配置文件)选择存放的文件,默认即可。结果如右图。编写Spring配置文件编写Spring配置文件:bean标签:定义我们需要的JavaBean。id:bean实例的名称。class:bean的具体类型位置property:用于
10、注入bean的属性。测试注入测试我们刚刚配置的注入:public static void main(String args) ApplicationContext context=new ClassPathXmlApplicationContext(applicationContext.xml);UserBiz ub=(UserBiz) context.getBean(userBiz);System.out.println(ub.login(name, pwd);System.out.println(ub.login(jay,123);Spring读入applicationContext.xm
11、l,根据applicationContext.xml的配置创建Bean通过context.getBean(String beanName)方法通过Bean的名字获得创建的Bean。UserBiz ub=(UserBiz) context.getBean(userBiz);可以看到,这里得到的是UserBizImpl,但引用的时候,却永远属于的是都是UserBiz接口。这样的做法给我们的程序带来了极大的灵活性。在前面我们的项目中一直都明确了定义了Biz层和DAO层的接口,今天使用Spring重新组装程序的时候,就带来了极大的便利。编写Spring与Struts集成的配置文件Struts中Acti
12、on类的实例是由Struts框架创建的。如果要使用Spring管理Action对Biz的依赖,那么Action类就要由Spring来创建。我们需要通知Struts,ActionBean已经由Spring创建好了,你只需要拿过去用。Struts可以通过插件的形式进行扩展,Spring提供了ContextLoaderPlugIn插件,使得Spring和Struts可以无缝集成。这时,就需要再添加Spring的Web库支持。在项目上选择配置构建路径:编写Spring与Struts集成的配置文件:编写Spring与Struts集成的配置文件这五个库支持是我们后面学习过程中都要使用到的,所以我们全部选择
13、了(可以在添加Spring支持的时候就进行选择,也可以在后面学习过程中再添加)。其中Spring 2.0 Core Libraries我们前面在添加Spring支持的时候已经选择了,所以就不用再重复添加了。选择要添加的Spring2.0类库:在Struts中配置插件在Struts中配置插件: 这里我们把Spring配置文件的位置告诉了插件。classpath:applicationContext.xml表示到classpath下去找applicationContext.xml配置文件。如果Spring配置文件在/WEB-INF/下,就可以这样配置value=/WEB-INF/applicati
14、onContext.xml。在Struts中配置插件在Struts中配置Action类别为org.springframework.web.struts.DelegatingActionProxy: 如上,所有的Action的type都改为:org.springframework.web.struts.DelegatingActionProxy在Spring中配置Action在Spring中配置Action:注意:这里的bean没有id属性,而是name属性,而且这里的name要与Struts中的path属性相一致。即:path=/user Actionn依赖的是Biz。由于之前我们已经在Spring中定义了名为userBiz的Bean对象,所以只需要为ub属性直接注入userBiz 对象。面向接口编程通过Spring强大的组装能力,我们在开发每个程序组件的时候,只需要明确关联组件的接口定义,不需要关心具体实现,这就是所谓的“面向接口编程”。项目大的时候,Spring配置文件不可避免的可能也会跟着膨胀起来,有时候为了项目的条理更加清楚,我们可以分别多建立几个Spring的配置文件,然后在主配置文件中引入即可。就相当于我们在html页面引入外部的js和css一样。如下,创建了三个Spring的配置文件,分别划分了不同的职责,这就使得配置直接的结构更
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CGCC 8-2017自热方便菜肴制品
- T/CEPPEA 5025-2023供配电工程总承包管理规范
- T/CECS 10329-2023家用燃气快速热水器舒适性评价
- T/CECS 10187-2022无机复合聚苯不燃保温板
- T/CCS 013-2023综采工作面超前支架智能化控制系统技术规范
- T/CCMA 0145-2023混凝土机械产品安全标识
- T/CCMA 0079-2019土方机械排气烟度装载机测量方法
- T/CBMCA 012-2020室内环境清洁消毒服务规范
- T/CAZG 004-2019大型类人猿饲养管理技术规范
- T/CAQI 44-2018家用和类似用途饮用水处理装置用阻垢滤芯
- 服装企业销售经理的主要工作职责描述范本
- 人工智能在招聘中的应用
- 电扶梯发生夹人夹物现场处置方案演练
- 日结人员劳务合作协议 标准版
- (完整版)病例演讲比赛PPT模板
- 初中生物知识双向细目表
- 中国建行存单英文翻译
- 事业单位工作人员调动审批表格
- 八年级英语-多维阅读Skycar示范课教学设计1
- 医院基建科各项工作风险分析
- 对外投资合作国别(地区)指南 -柬埔寨-20230619-00335
评论
0/150
提交评论