韩顺平Spring笔记说课材料_第1页
韩顺平Spring笔记说课材料_第2页
韩顺平Spring笔记说课材料_第3页
韩顺平Spring笔记说课材料_第4页
韩顺平Spring笔记说课材料_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档spring的快速入门案例spring是什么?struts是web框架(jsp/action/actionfrom)hibernate是orm框架,处于持久层.spring是容器框架用于配置bean,并维护bean之间关系的框架?spring中有一个非常概念:bean(是java中的任何一种对象javabean/service/action/数据源./dao,ioc(控制反转inverseofcontrol)di(dependencyinjection依赖注入)画一个框架图快速入门开发一个spring项目.弓I入spring的开发包(最小配置spring.jar该包把常用的jar都包括

2、,还要写日志包common-logging.jar仓U建spring的一个核心文件applicationContext.xml,hibernate有核心hibernate.cfg.xmlstruts核心文件struts-config.xml,该文件一般放在src目录下,该文件中引入xsd文件:可以从给出的案例中拷贝一份.配置beanvpropertyname=name韩顺平在Test.java中,我们怎么使用/我们现在使用spring来完成上面的任务ac=new1.得到spring的applicationContext对象(容器对象)ApplicationContextClassPathXml

3、ApplicationContext(applicationContext.xml);UserServiceus=(UserService)ac.getBean(userService);us.sayHello();细节讨论?传统的方法和使用spring的方法5.1使用spring,没有new对象我们把创建对象的任务交给spring框架5.2spring的运行原理图:5.3我们再看spring对上面案例总结:spring实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可

4、以getBean(id),使用即可.ioc是什么?答:ioc(inverseofcontroll)控制反转:所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利从程序中转移到spring的容器(applicationContext.xml),而程序本身不再维护.DI是什么?答:di(dependencyinjection)依赖注入:实际上di和ioc是同一个概念,spring设计者认为di更准确表示spring核心技术?学习框架,最重要的就是学习各个配置.把Applicationcontext做成一个单例的.上机练习:把我写的代码走一遍.spring开发提倡接口编程,配合

5、di技术可以层与层的解耦举例说明:现在我们体验一下spring的di配合接口编程的,完成一个字母大小写转换的案例:思路:创建一个接口ChangeLetter两个类实现接口把对象配置到spring容器中使用通过上面的案例,我们可以初步体会到di配合接口编程,的确可以减少层(web层)和业务层的耦合度.思考题:接口ValidateUser有一个方法:check(?)有两个类CheckUser1implementsValidateUsercheck/安装xml验证CheckUser2implementsVallidateUsercheck()到数据库去验证从ApplicationContex应用上下

6、文容器中获取bean和从bean工厂容器中获取bean具体案例:从ApplicationContext中取beanApplicationContextac=newClassPathXmlApplicationContext(com/hsp/ioc/beans.xml);/当我们去实例化beans.xml,该文件中配置的bean被实例(该beanscope是singleton)从bean中取出student如果我们使用beanfactory去获取bean,当你只是实例化该容器,那么/容器的bean不被实例化,只有当你去使用getBean某个bean时,才会实时的创建BeanFactoryfact

7、ory=newXmlBeanFactory(newClassPathResource(com/hsp/ioc/beans.xml);factory.getBean(student);结论:如果使用ApplicationContext,则配置的bean如果是singlton不管你用不用,都被实例化.(好处就是可以预先加载,缺点就是耗内存)如果是BeanFactory,则当你获取beanfacotry时候,配置的bean不会被马上实例化,当你使用的时候,才被实例(好处节约内存,缺点就是速度)规定:一般没有特殊要求,应当使用ApplicatioContext完成(90%)bean的scope的纟田节

8、ftX4.BeanfTH域用域nholoton左毎个呦rir口1厂容従口一卜Mati宅艾ft应一叫琲虫亂orotntVBP一个DE前宜娴理势心討彙至引reQuest住一决HTTP蘇中|十应吨影施一十鄴hE帥mHff制怙有各自附血3涮它们做窟汁hwr建貝勺.建而电=该作円ST在基千wetI5pnngjlpplirsrfimrontwtflS-TWfeflsession疋一个HTTPSesncnfiftiEdn定义对区一、买例*在蚤千webSorirAppliedistraitizttS形下肯加口Io帖盲更兰Mo门花一个圭旨的HTTP血皿沖一个血别尾塑葡仏我型師wrtletcontPXtHBUIW

9、烝webMSpringApplitatiuee*t!IOT入门案例:获取两个studentStudents1=(Student)ac.getBean(student);Students2=(Student)ac.getBean(student);System.out.println(s1+s2);requestsessionglobal-session是在web开发中才有意义.三种获取ApplicationContext对象引用的方法ClassPathXmlApplicationContext-通过类路径FileSystemXmlApplicationContext-通过文件路径举例:Appl

10、icationContextac=newFileSystemXmlApplicationContext(文件路径beans.xml/applicationContext.xml);XmlWebApplicationContextbean的生命周期为什么总是一个生命周期当做一个重点?Servlet-servlet生命周期init()destory()java对象生命周期.往往笔试,面试总喜欢问生命周期的问题实例化(当我们的程序加载beans.xml文件),把我们的bean(前提是scope=singleton)实例化到内存调用set方法设置属性如果你实现了bean名字关注接口(BeanNameA

11、ware)则,可以通过setBeanName获取id号如果你实现了bean工厂关注接口,(BeanFactoryAware),则可以获取BeanFactory如果你实现了ApplicationContextAware接口,则调用方法/该方法传递ApplicationContextpublicvoidsetApplicationContext(ApplicationContextarg0)throwsBeansException/TODOAuto-generatedmethodstubSystem.out.println(setApplicationContext+arg0);如果bean和一个

12、后置处理器关联,则会自动去调用ObjectpostProcessBeforeInitialization方法如果你实现InitializingBean接口,则会调用afterPropertiesSet如果自己在则可以在bean定义自己的初始化方法.如果bean和一个后置处理器关联,则会自动去调用ObjectpostProcessAfterInitialization方法使用我们的bean容器关闭可以通过实现DisposableBean接口来调用方法destory可以在调用定制的销毁方法小结:我们实际开发中往往,没有用的这么的过程,常见的是:1-2-6-10-9-11上机练习:把使用每个bean

13、的时间记录到一个recoder.txt文件,内容是xxbean.使用时间是:1999-11-1111:11:11问题:通过BeanFactory来获取bean对象,bean的生命周期是否和Applicationeontext是一样吗?不是一样的,bean是工厂中创建的生命周期会简单一些:配置bean的细节scope的说明:13.4.Bcanft用域作用域fimlctor左毎卒pri-iginrg飪口一卜h石碎世对应一林空亂nrotntvBP一个DE前定娴豐势化if象奚引reQuest在一弗EP蘇哲一十bear越3诫一!-卖和即每请和1袪有各自阳血曲码它们ffiiK汁bean定塵创虧械aebih

14、Spnng呦pliactianTmteit惰鬼卞有如session在一十HTTPSt啊血刊扳一八浜例*话恬甲物?在進千砸D的Sorir:即口乂衍皿皿詛情菲下匍氐口loon花一个空昌的HTTP込皿沖一个b的n是塑朗仏我型厲下,contPXtnBUIffSfec谊flFffll域仅花墓丁wtb的酣ingApplicatiutualeMt!lSJTWSt;-?尽量使用scope=”ingleton”不要使用prototype,因为这样对我们的性能影响较大如何给集合类型注入值.java中主要的集合有几种:mapsetlist/数组Department类:packagecom.hsp.collectio

15、n;importjava.util.List;importjava.util.Map;importjava.util.Set;publicclassDepartmentprivateStringname;privateStringempName;privateListempList;privateSetempsets;privateMapempMaps;publicSetgetEmpsets()returnempsets;publicvoidsetEmpsets(Setempsets)this.empsets=empsets;publicStringgetEmpName()returnempN

16、ame;publicvoidsetEmpName(StringempName)this.empName=empName;publicStringgetName()returnname;publicvoidsetName(Stringname)=name;publicListgetEmpList()returnempList;publicvoidsetEmpList(ListempList)this.empList=empList;publicMapgetEmpMaps()returnempMaps;publicvoidsetEmpMaps(MapempMaps)this.empMaps=emp

17、Maps;/Employeel类packagecom.hsp.collection;publicclassEmployeeprivateStringname;privateintid;publicintgetId()returnid;publicvoidsetId(intid)this.id=id;publicStringgetName()returnname;publicvoidsetName(Stringname)=name;beans.xml配置文件:小明小明小明小明小明小明小明value-!-给map注入值map只有key不一样,就可以装配【点http协议referer】abcdhel

18、lo内部bean继承配置publicclassStudentpublicclassGradateextendsStudent在beans.xml文件中体现配置vpropertyname=namevalue=顺平/vpropertyname=agevalue=30/vpropertyname=namevalue=小明/思考:目前我们都是通过set方式给bean注入值,spring还提供其它的方式注入值,比如通过构造函数注入值!通过构造函数注入值beans.xml关键代码:自动装配bean的属性值模式说明nnbyName穩柱月性名目功装配。此朗将站举韵诧据若宇宜體与厲E埜8的血餉.护祺与J5性目劭

19、删爲钊如在baan定文中为byname,訂竣b自nfc含mastLSti1同时崔供痕殆start*.掘),Sorinaift舎香找名畑站卓的血谨吐.斗印它玮樂配擔mawr側臣byTyps韧杲客器中存在一个勾粽屬曲1相同的血那輕胳语剧澤略丸财在針谨忍的Mmm耶么将戡1出异软井播出不細O却t仰方式遇行自动装若显也1相曲揃M砂对H灵事都不支崟員性也不会樹背畫、如M祢千需望:对和耶芝可-:【通迂讲浚iGpondflyy-GbeGh北:佔訂让印血顷出気鼠constructor战曲方疋樊伽不風之址在手它应関于旳倍專絆蓟如臬左容器中沮有瘵呜枸适羞鹦煤烈一致曲诞厂那鱼将会航异塞*厲过b审烛打口省机制intro

20、spection)未徐宇孚値审wnstruttufH堤WTyre方趙行自寸将$如果創嘿认扌炉浩畢.乖病備用7尸方式.(1)byName的用法:vpropertyname=name顺平原理图:byType:byType:寻找和属性类型相同的bean,找不到,装不上,找到多个抛异常。constructor:autowire=constructor说明:查找和bean的构造参数一致的一个或多个bean,若找不到或找到多个,抛异常。按照参数的类型装配autodetect说明:autowire=autodetect和(2)之间选一个方式。不确定性的处理与和一致。defualt这个需要在当你在指定了def

21、ault-atuowrite后,所有的bean的默认的autowire就是指定的装配方法;女口果没有在没有defualt-autorwire=指定”,则默认是defualt-autorwire=nono:不自动装配使用spring的特殊bean完成分散配置beans.xml说明:当通过context:property-placeholder引入属性文件的时候,有多个需要使用,号间隔.perties:name=scottdrivername=oracle:jdbc:driver:OracleDirverurl=jdbc:oracle:thin:1521:hsppwd=tigeraop编程aop(aspectorientedprogra

温馨提示

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

评论

0/150

提交评论