spring学习心得.docx_第1页
spring学习心得.docx_第2页
spring学习心得.docx_第3页
spring学习心得.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Spring框架和Eclipse中配置Spring 最近打算买一个JSP的空间,价钱已经商量好了,大概在100RMB/M/Y,再加独立MySQL50M空间,国内双线访问,感觉不错。现在在寻觅一个JSP的个人博客系统,网上发现一个MyBlog系统,感觉非常不错,现在的版本是1.8PI,而且作者每天都在自己的博客()上解答问题,很热心,于是下载下来观摩,可惜单纯的JSP页面少之又少,基本看不懂,作者告知系统使用了spring和Hibernet以及markframe框架。于是狠下心来决定学习一下JAVA主流框架。 首当其冲的是Spring。 一天下来又是电子书,又是视频教程,基本了解了Spring框架的核心思想。IoC,控制反转又称依赖注入。这套技术使用的目的是降藕,让各个类之间的关系变成松耦合状态。 比方说主类中想调用工程中另一个类,最基本的做法是直接import后,实例化这个类的一个对象,就可访问这个类的一些变量和函数了。再高级一点是使用工厂模式,用一个静态工厂取出这个类的实例化对象。这两种方法都无可避免在主类中创建或者说实例化我们想调用的这个类的对象,然而根据现在软件工程的理论,主类和调用类之间的耦合程度就变得非常紧密,因为在程序代码中已经将这两个类牢牢绑定在一起,要想调用别的类,就必须修改程序代码。 无论哪种Java设计模式都告诉我们尽量对接口编程,而不是对类编程。在上一个例子中,如果使用Spring框架我们无需再主类中实例化调用类,而是通过XML配置文件告诉主类我们将取出一个什么对象,通常我们称之为Bean,只要在XML文件中配置好需要调用的Bean的信息,在程序一开始,Spring就帮你全部实例化在Spring容器中,当主类想调用一个Bean的时候,不是实例化,而是根据相关XML配置,通过Java反射机制向容器索取一个需要的对象出来,等用完了还将返还给Spring容器,这有点像数据库技术中使用到的数据源的概念了。 闲话少说,我们举一个示例: 首先写一个基本的Pojo类,这是一种只有变量和相关set和get方法的类,非常纯粹赶紧,我们称之为CarJavaview plaincopy1. packagetest;2. /*3. *authornewflypig4. *name:Car.java5. */6. publicclassCar7. Stringname;8. 9. publicStringgetName()10. returnname;11. 12. 13. publicvoidsetName(Stringname)14. =name;15. 16. 接着我们的程序需要对Car进行相关的操作,这些操作函数一般放在一些名为Service的类中,所以我们打算新建一个CarService的类,但是根据主流的JAVA编程理念,我们首先需要确定我们对Car进行什么操作,这里就定义一个简单的输出汽车名字的操作,决定好操作目的后,制定一个接口名为CarServiceInterface的接口:Javaview plaincopy1. packagetest;2. 3. /*4. *name:CarServiceInterface.java5. */6. publicinterfaceCarServiceInterface7. publicvoidprintName();8. 紧接着,写一个类实现这个接口,名为CarService:Javaview plaincopy1. packagetest;2. 3. publicclassCarServiceimplementsCarServiceInterface4. privateCarc;5. publicvoidsetCar(Carc)6. this.c=c;7. 8. publicvoidprintName()9. System.out.println(c.getName();10. 11. 可以看到,这个Service中包含一个Car变量,而且这个变量是靠set方法传进来的,这一点很重要,Spring框架需要代码具有良好的编程规范,set小写,Car大写第一个字母,因为Spring框架需要根据即将编写的XML文件,通过Java反射机制找到我们这个Service类中setCar方法,并且将一个配置好的Car放进去。也就是说set方法并不是让我们来调用的,而是Spring自动来调用的,并且其中的参数,一个Car对象,也是Spring通过我们的XML来形成的。好了,具体的讲解有很多,大家可以到网上找专业的讲座,我们这里继续往下走,到了编写XML配置文档这个步骤了,新建一个config.xml的文件: 这份配置文档的作用有两个,第一个是定义了Car类的一个对象,这个Bean在整个程序中的标志,大家看第一个标签,可以看到,这个Bean的id是car,对应的类的路径也定位好了,其中Car的name属性也被定义好了,是“BMW”牌子的一辆车。第二个作用是定义了一个CarService的一个实例化对象,这个类是一个有真实作用的类,大家还记得它继承于CarServiceInterface接口吧,主函数中我们并不直接调用CarService而是使用它的接口来获得它的引用,这就是Spring以及其他所有主流框架所倡导的面向接口的编程。继续看这份XML,可以看到我们这个CarService的对象中给它注入了一个属性,这个属性就是car,也就是CarService中的一个private属性,Spring解析到这个标签后,通过反射机制找到CarService类中的setCar方法,将这个car对象注入进去,从而完成了一次漂亮的外部注入,而这种注入属性的技术完全不必在程序中实例化和定义对象,通过XML文档来操作,而且我们知道Java通过jdom和dom4j等工具可以方便得操作XML,我们可以在项目部署的时候写好XML,也可以在项目运行过程中动态得形成XML,从而增强了整个强木的高可配置性,有效降低了系统的耦合程度。万事俱备只欠东风,最后一个主类的编写,Main.java:Javaview plaincopy1. packagetest;2. 3. importorg.springframework.context.ApplicationContext;4. importorg.springframework.context.support.ClassPathXmlApplicationContext;5. 6. publicclassMain7. 8. /*9. *name:Main.java10. */11. publicstaticvoidmain(Stringargs)12. ApplicationContextcontext=newClassPathXmlApplicationContext(config.xml);13. CarServiceInterfacecarService=(CarServiceInterface)context.getBean(carService);14. carService.printName();15. 16. 17. 引入的两个类都是spring.jar中的,只要从官方网站上下载下来放到eclipse的builde path中就可以了,程序在Java虚拟机中运行后,运行到第一句话后,即在内存中形成Spring容器,并且在容器中实例化两个bean,也就是在指定的XML文档中配置好的两个bean。程序运行到第二句,大家可以看到,我并没有实例化CarService,而是使用了它的接口CarServiceInterface,这个接口获得了一个引用,而这个引用是由Spring容器传过来的,id为carSe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论