马士兵Spring学习笔记

上传人:m**** 文档编号:184579200 上传时间:2023-02-02 格式:DOCX 页数:17 大小:203.60KB
收藏 版权申诉 举报 下载
马士兵Spring学习笔记_第1页
第1页 / 共17页
马士兵Spring学习笔记_第2页
第2页 / 共17页
马士兵Spring学习笔记_第3页
第3页 / 共17页
资源描述:

《马士兵Spring学习笔记》由会员分享,可在线阅读,更多相关《马士兵Spring学习笔记(17页珍藏版)》请在装配图网上搜索。

1、课程内容1. 面向接口(抽象)编程的概念与好处2. IOC/DI 的概念与好处a)inversion of controlb)dependency injection3. AOP 的概念与好处4. Spring 简介5. Spring 应用 IOC/DI (重要)a)xmlb)annotation6. Spring 应用 AOP (重要)a)xmlb)annotation7. Str uts2.1.6 + Sp rin g2.5.6 + Hibe rn ate3.3.2 整合(重要)a) opensessionlnviewfilter (记住,解决什么问题,怎么解决)8. Spring JDB

2、C面向接口编程(面向抽象编程)1.2.3.场景:用户添加Spring_0100_AbstractOrientedProgramminga)不是 AOP:Aspect Oriented Programming 好处:灵活什么是IOC (DI),有什么好处1. 把自己 new 的东西改为由容器提供a) 初始化具体值b) 装配2. 好处:灵活装配Spring 简介1. 项目名称:Spring_0200_IOC_Introduction2. 环境搭建a)只用 IOCi. spring.jar , jarkata-commons/commons-loggin.jar3. IOC 容器a) 实例化具体 b

3、eanb) 动态装配4. AOP 支持a) 安全检查b) 管理 transactionSpring IOC 配置与应用1. FAQ:不给提示:a) window - preferences - myeclipse - xml - xml catalogb) User Specified Entries - addi. Location:D:share0900_Springsoftspring-framework-2.5.6distresourcessprin g-beans-2.5.xsdii. URI:file:/D:/share/0900_Spring/soft/spring-framew

4、ork-2.5.6/dist/resource s/spring-beans-2.5.xsdiii. Key Type: Schema Locationiv. Key:http:/www.springframework.org/schema/beans/spring-beans-2.5.xsd2. 注入类型a) Spring_0300_IOC_Injection_Typeb) setter (重要)c) 构造方法(可以忘记)d) 接口注入(可以忘记)3. id vs. namea) Spring_0400_IOC_Id_Nameb) name可以用特殊字符4. 简单属性的注入a) Spring

5、_0500_IOC_SimplePropertyb) vpr ope rty n ame=. value=.5. vbean中的scope属性a) Spring_0600_IOC_Bean_Scopeb) singleton 单例c) proptotype 每次创建新的对象6. 集合注入a) Spring_0700_IOC_Collectionsb) 很少用,不重要!参考程序7. 自动装配a) Spring_0800_IOC_AutoWireb) byNamec)byTyped)如果所有的bean都用同一种,可以使用beans的属性:default-autowire8. 生命周期a)Sprin

6、g_0900_IOC_Life_Cycleb)lazy-init (不重要)c)init-method destroy-methd 不要和 prototype 起用(了解)9. Annotation 第一步:a) 修改 xml 文件,参考文档,在 ,此句话会初始 化 AutowireAnnotationBeanPostProcessor , CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,RequireAnnotationBeanPostProcessor。这四个处理器是在 bean 初始化完成后

7、开始处理 annotation 的。10. Autowireda)默认按类型by type,autowired可以与qulifier混合使用。b)如果想用 byName,使用Qulifier.c)Bean的名字默认为qualifier的valued)如果写在set 上, qualifier需要写在参数上e)写在private field (第三种注入形式)(不建议,破坏封装)f)Required与override 样,主要进行容错处理。11. Resource (重要)a)加入: j2ee/common-annotations.jarb)默认按名称,名称找不到,再按类型查找c)可以指定特定名称

8、Resou rce (n ame=u)d)推荐使用e)不足:如果没有源码,就无法运用annotation,只能使用xml12. Component Service Controller Repository (数据仓库):目前没有区别a)Xml 中加入: b)在classpathxmlc on text初始化时会读写满了文件,发现上述内容,会扫描包下 的所有包含有comp onent注解的类,并初始化。c)初始化的名字默认为类名首字母小写d)可以指定初始化 bean 的名字,Component (userdaoimpl”)13. Scope:参考文档14. PostCo nstr uct 添加

9、到 in it 方法;Pr eDest roy 添加到 dest roy 方法前。;什么是 AOP1. 面向切面编程 Aspect-Oriented-Programminga) 是对面向对象的思维方式的有力补充2. Spring_1400_AOP_Introduction动态代理:在生成代理对象时,程序会根据实现的接口来产生代理对象,并将被代理对 象传递给LogI nte rcepto r的tar get变量,这里生成的$pr oxy4对象,该对象会实现 相应的接口,即接口里有什么方法,生成的代理就有那些方法,这些方法的实现如上图 所示。AOP:传统程序编写就是一条线,AOP就像是在这条线上横

10、着砍了一刀,加上自己的 逻辑,而方法自身不知道。用途:权限控制,效率检查,事务管理,日志控制,异常管理。Spring实现:使用了 Jdk的动态代理实现,前提是类实现了接口,如果类没有实现接 口,也能产生动态代理,用继承直接生成二进制码。3. 好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码典型的 AOP:a) Filterb) Struts2 的 interceptor4. 概念:了解a) JoinPoint:切入点,那些点上需要加入切面。b) PointCut:切入点集合c) Aspect (切面),切面类d) Advice: Before,加在切入点的逻辑e) Tar get

11、:织入到那个类的方法f) Weave:织入Spring AOP 配置与应用1. 两种方式:a) 使用 Annotationb) 使用 xml2. Annotationa) 加上对应的 xsd 文件 spring-aop.xsdb) beans.xml c) 容器启动时自动产生 代理,内部的实现采用 aspectj,它是一个专门产生动态代理的框架。d) 此时就可以解析对应的 Annotation 了e) 导入类库:aspectjweaver.jar (织入),aspectjrt.jarf) 建立我们的拦截类g) 用Aspect注解这个类h) 建立处理方法i) 用Befo re来注解方法j) 写明

12、白切入点(executio n .)k) 让spring对我们的拦截器类进行管理Componentl) 顺带的查找到 aspect。3. 常见的 Annotation:a) Pointcutb) Beforec) AfterReturningd) AfterThrowinge) Afterf) Around4. 织入点语法a) void !voidb) 参考文档( * .)5. Pointcut注意:一个类没有实现接口,会使用直接操作二进制码也就是cjlib rary,所以需要导入 cjlib.jar 包。6. xml配置AOP (annotation可以不掌握,但是xml必须掌握)a)把in

13、terceptor对象初始化b)aop:configi. aop:aspect .1. aop:pointcut2. aop:beforeSpring 整合 Hibernate1. Spring 指定 datasourcea) 参考文档,找 dbcp.BasicDataSourcei. c3p0ii. dbcpiii. proxoolb) 在 DAO 或者 Ser vice 中注入 dataSou rcec) 在 Spring 中可以使用 PropertyPlaceHolderConfigure来读取 Properties文件 的内容2. Spring 整合 Hibernatea) i. pr

14、operty dataSourceii. annotatedClassesb) 引入hibernate 系列jar包c) User 上加 Annotationd) UserDAO 或者 UserServie 注入 SessionFactorye) jar 包问题一个一个解决3. 声明式的事务管理a) 事务加在 DAO 层还是 Service 层?b) annotationi. 加入 annotation.xsdii. 加入 txManager beaniii. tx:annotation-driveniv. 在需要事务的方法上加: Transactionalv. 需 要 注 意 , 使 用 S

15、essionFactory.getCurrentSession 不 要 使 用 OpenSessionc) Tran sacti onal 详解i. 什么时候 rollback1. 运行期异常,非运行期异常不会触发rollback2. 必须 uncheck (没有 catch)3. 不管什么异常,只要你 catch 了, spring 就会放弃管理4. 事务传播特性: propagation_required5. read_onlyd)xml (推荐,可以同时配置好多方法)i. bean txmanagerii. aop:config1. aop:pointcut2. aop:advisor

16、pointcut-ref advice-refiii. vtx:advice: id tran sacti on-ma nage r =!- -property name=locationsclasspath:jdbc.properties !-com.bjsxt.model.Usercom.bjsxt.model.Log-com.bjsxt.modelorg.hibernate.dialect.MySQLDialecttrue tx:method name=add* propagation= REQUIRED/e) HibernateTemplata HibernateCallback、Hi

17、bernateDaoSupport (不重要) 介绍i. 设计模式:Template Methodii. Callback:回调/钩子函数iii. 第一种:(建议)1. 在 spring 中初始化 Hibe rn ateTemplate,注入 sessi on Fact ory2. DAO 里注入 HibernateTemplate3. save 写 getHibernateTemplate.save();iv. 第二种:1. 从 HibernateDaoSupport 继承2. 必须写在xml文件中,无法使用Annotation,因为set方法在父类中, 而且是 final 的f) spri

18、ng整合hibernate的时候使用packagesToScan属性,可以让spring自动 扫描对应包下面的实体类Struts2.1.6 + Spring2.5.6 +Hibernate3.3.21. 需要的 jar 包列表ja r包名称所在位置说明an tl r-2.7.6.ja rhibe rn ate/lib/ required解析HQLaspectj rtsp rin g/lib/aspectjAOPaspectjweave r.AOPcglib-no dep-2.1 3.ja rsp rin g/lib/cglib代理,二进制增强comm on-anno tati on s.ja

19、rsp rin g/lib/j2eeReso ur cecomm on s-collectio ns-3.1.ja rhibe rn ate/lib/ required集合框架comm on s-fileupload-1.2.1.ja rstr uts/libstrutscomm on s-io-1.3.2str uts/libstrutscomm on s-loggi ng-1.1.1单独下载,删除1.0.4(st ruts/lib)struts sp ringdom4j-1.6.1.ja rhibe rn ate/ required解析xmlejb3-pe rsiste neehibe r

20、n ate-a nno tati on/libEn tityfreema rker-2.3.13str uts/libstrutshibe rn ate3.ja rhibernatehibe rn ate-a nno tati onshibe rn ate-a nno tati on/hibe rn ate-comm on-anno tatio nshibe rn ate-a nno tati on/libjavassist-3.9.0.GA.ja rhibe ran te/lib/ requiredhibernatejta-1.1.ja r.hibernate tran sacti onju

21、n it4.5mysql-ognl-2.6.11.ja rstr uts/libslf4j-api-1.5.8.ja rhibe rn ate/lib/ requiredhibe rn ate-logslf4j- nop-1.5.8.ja rhibe rn ate/lib/ requiredsprin g.ja rsprin g/diststr uts2-c or e-2.1.6.ja rstr uts/libxwor k-2.1.2.ja rstr uts/libstruts2comm on s-dbcpsprin g/lib/ja rkata-comm onscomm on s-pool.

22、ja r.str uts2-sp rin g-plugi n-2.1.6.ja rstr uts/lib2. BestPractice:a) 将这些所有的 jar 包保存到一个位置,使用的时候直接 copy3. 步骤a) 加入 jar 包b) 首先整合 Spring + Hibernatei. 建立对应的 package1. dao / dao.impl / model / service / service.impl/ testii. 建立对应的接口与类框架1. S2SH_01iii. 建立 spring 的配置文件(建议自己保留一份经常使用的配置文件,以后用到 的时候直接 copy 改)i

23、v. 建立数据库v. 加入 Hibernate 注解1. 在实体类上加相应注解门tity Id等2. 在 beans 配置文件配置对应的实体类,使之受管vi. 写 dao service 的实现vii. 加入 Spring 注解1. 在对应Ser vice及DAO实现中加入Compo nent,让spring对其初 始化2. 在Ser vice上加入Tra nsactio nal或者使用xml方式(此处建议后者, 因为更简单)3. 在 DAO 中注入 sessionFactory4. 在Ser vice中注入DAO5. 写DAO与Ser vice的实现viii.写测试c) 整合 Struts2

24、i. 结合点:Struts2 的 Action 由 Spring 产生ii. 步骤:1. 修改 web.xml 加入 struts 的 filter2. 再加入spring的listener,这样的话,webapp 一旦启动,spring容器 就初始化了3. 规划 struts 的 action 和 jsp 展现4. 加入 struts.xmla)修改配置,由spring替代struts产生Action对象5. 修改 action 配置a) 把类名改为bean对象的名称,这个时候就可以使用首字母小写了b) Scope(prototype)不要忘记iii. struts 的读常量:1. stru

25、ts-default.xml2. struts-plugin.xml3. struts.xml4. struts.properties5. web.xmliv. 中文问题:1. Struts2.1.8 已经修正,只需要改 i18n.encoding = gbk2. 使用 spring 的 characterencoding3. 需要严格注意filter的顺序4. 需要加到Struts2的filter前面v. LazyInitializationException1. OpenSessionInViewFilter2. 需要严格顺序问题3. 需要加到struts2的filter前面web-app

26、 version=2.5 xmlns=xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation= index.jsporg.springframework.web.context.ContextLoaderListener contextConfigLocation!-/WEB-INF/applicationContext-*.xml,classpath*:applicationContex t-*.xml -classpath:beans.xmlstruts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndE xecuteFilterstruts2/* !-property name=locationsclasspath:jdbc.properties!-com.bjsxt.model.Usercom.bjsxt.model.Log-com.bjsxt.registration.model org.hibernate.dialect.MySQLDialecttrue

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!