Spring框架

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1Spring2Sping简介Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架2大核心概念IoCAOPE:\zhengda\各种资料\spring-framework-reference\html3Sping简介Spring容器:Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。4Sping简介控制反转(IoC)InversionofControl,——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。5Spring简介依赖注入(DI)DependencyInjection:所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,形象地说,即由容器动态地将某种依赖关系注入到组件之中。高内聚低耦合就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在。(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。6Sping简介面向切面(AOP)——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。7Sping简介第一个Spring工程配置文件:applicationContext.xml路径:srcTest:BeanFactoryfactory=newClassPathXmlApplicationContext(“applicationContext.xml”);//容器初始化,所以的bean被new出来Useru=(User)factory.getBean(user);8配置文件配置文件applicationContext.xml的beans标签xmlns:命名空间,引用使用的模块9Sping简介Xml配置里:beanid=userclass=“model.UserBean标签,相当于new一个class的对象Java里Useru=(User)factory.getBean(user);u依赖于配置的class,也就是依赖容器给注入。程序里不用new,控制不在程序中,在容器。所以叫控制反转10依赖注入方法构造方法注入Setter注入(调用set方法)接口注入(基本不用)11依赖注入方法构造方法注入beanid=userclass=“model.Userconstructor-argname=namevalue=mike/constructor-argconstructor-argname=agevalue=15/constructor-argconstructor-argname=sexvalue=female/constructor-arg/bean12依赖注入方法Setter注入beanid=user2class=“model.User2propertyname=namevalue=jany/propertypropertyname=agevalue=18/propertypropertyname=sexvalue=male/property/bean当注入一个类的对象时propertyname=“sex”ref=“bean的id/property13依赖注入方法注入一个类对象的值beanid=user4class=model.User4propertyname=uref=user2/property/bean14Bean的生命范围beanid=user2class=“modle.User2scope=prototypeScope:bean的生命范围15Bean的生命范围16Bean的生命范围Singleton:默认。无论拿多少次,都是同一个bean。(system.out.println(user1=user2))prototype:每次都新new一个对象出来Struts2的actionbean,应该用prototype17集合注入Listpropertyname=listlistvaluelist1/valuevaluelist2/valuevaluelist3/value/list/property18集合注入MapSetArray19Parentbeanbeanid=u1class=“model.User1parent=abbeanbeanid=abbeanabstract=truepropertyname=namevalue=lucy/property/bean20自动装配AutoWirebyName:根据名字byType:根据类型beanautowire=“byName”/beansdefault-autowire=“byName”/21生命周期beanlazy-init=“true”/Bean在容器初始化时不初始化,用到的时候才初始化(new出来)beansdefault-lazy-init=“true”/Bean特别多,程序启动慢,则可设定22Init/destroymethod初始化时和销毁时调用的方法23面向切面编程AOPAspectOrientedProgramming事务管理权限管理异常管理效率管理24面向切面编程AOP配置文件applicationContext.xml的beans标签里加xmlns:aop=:schemaLocation里加:://面向切面编程AOP定义一个切面aop:pointcutexpression=execution(*model.UserManager.add*(..))id=addP/定义一个切面对象aop:aspectid=userAspectref=se在切面的前或者后,切入执行某个方法aop:beforemethod=checkSecuritypointcut-ref=addP/26面向切面编程AOP在执行expression方法之前(before)执行切面对象“se”的checkSecurity方法27面向切面编程AOP另一种写法:aop:beforemethod=checkSecuritypointcut=execution(*model.UserManager.add*(..))/28Spring整合hibernate29Spring整合hibernate30Spring整合hibernate构建SessionFactory(annotation)beanname=sfclass=org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBeanpropertyname=configLocationvalue=classpath:hibernate.cfg.xml/property/bean31Spring整合hibernate构建SessionFactory(xml)beanname=sfclass=org.springframework.orm.hibernate3.LocalSessionFactoryBeanpropertyname=configLocationvalue=classpath:hibernate.cfg.xml/property/bean32Spring整合hibernate事务处理Beans标签里加入tx相关配置xmlns:tx=://://整合hibernate事务管理器txMagagerbeanname=tmclass=org.springframework.orm.hibernate3.HibernateTransactionManagerpropertyname=sessionFactoryref=sf//beansessionFactory注入给txMagager,之后事务都用txManager来处理34Spring整合hibernate事务的传播属性Propagation通过配置事务的传播属性来达到精确控制事务行为的目的。既:当前执行环境里有无事务,执行到当前方法时,怎么处理事务。事务的属性总共有七种:RequiredMandatoRequiresNewSupportsNotSupportedNeverNested35Spring整合hibernateRequired属性告诉容器某个特定的方法需要一个事务,如果上下文中已经存在事务,则加入;否则,开启一个事务。这是一种使用最频繁的事务属性,适用于大多数情况36Spring整合hibernateMANDATORYMandatory属性告诉容器某个特定的方法需要一个事务。但是,不同于Required属性,它无论如何都不会开启新的事务;相反的,它会“强制”要求该方法被调用时上下文中必须存在事务,否则会抛出TransactionRequiredException异常,提示需要一个事务但没有找到。何时选择Mandatory,后面将会专门抽出一节来分析。REQUIRESNEWRequiresNew属性告诉容器某个特定的方法需要一个新事务的支持。如果上下文中已经存在事务A,则该事务A挂起,并启动一个新的事务B。当事务B结束后,事务A被唤醒并继续执行。事实上,使用RequiresNew违反了事务的ACID原则,因为新事务会导致原有事务的挂起。37Spring整合hibernate设置传播特性tx:adviceid=txAdvicetransaction-manager=tmtx:attributestx:methodname=add*propagation=REQUIRED/tx:methodname=update*propagation=REQUIRED/tx:methodname=delete*propagation=REQUIRED/!--以上以外不参与事务管理--tx:methodname=*read-only=true//tx:attributes/tx:advice38Spring整合hibernate!--哪些类的哪些方法使用此事务配置--!--配置一个事务切面--aop:configaop:point

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功