Spring学习笔记.docx_第1页
Spring学习笔记.docx_第2页
Spring学习笔记.docx_第3页
Spring学习笔记.docx_第4页
Spring学习笔记.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

Spring学习笔记Spring必须有一个核心配置文件applicationContext.xml,配置文件需要放在scr文件夹内。,如果是注解方式需要配置需要扫描的包。然后需要获取所需要的bean1、 Spring是什么:概念:spring是一个开源的控制反转(Inversion of Control ,IOC)和面向切面(AOP)的容器框架,它的主要目的是简化企业开发。2、 什么是IOC:所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就由应用本身转移到了外部容器,制空权的转移就是所谓的反转。IOC容器中把所有对象都称为bean。3、 依赖注入:所谓依赖注入就是指:在运行期间,由外部容器动态的将依赖对象注入到组件中。Spring注入是指:在启动spring容器加载bean配置的时候,完成对变量的赋值行为。4、 配置bean:1、 bean配置的两种形式:基于XML文件的方式、基于注解的方式。2、 Bean的配置方式3中方式:通过全类名(反射)、通过工厂方法(静态工厂方法&实例工厂方法)、FactoryBean。3、 依赖注入方式:属性注入、构造器注入。4、 IOC容器中bean的生命周期。5、 Bean之间的关系:继承;依赖。6、 Bean的作用域:singleton;prototype;WEB环境作用域。5、 属性注入:属性注入即通过setter方法注入bean的属性或依赖的对象;属性注入使用元素,使用name属性指定bean的属性名称,value属性或者子节点指定属性值;属性注入是实际中最常用的注入方式。示例:Id:bean的名称。6、 构造器注入:构造方法注入bean的属性值或依赖的对象,它保证了bean实例在实例化后就可以使用。构造器注入在元素中声明属性,中没有name属性。7、 spring中的AOPSpringAOP笔记:1.加入jar包:为AOP额外加入的jar包(a).aopalliance.jar(b).aspectjweaver.jar(c).spring-aop-4.2.6.RELEASE.jar(d).spring-aspects-4.2.6.RELEASE.jar:写SpringIOC用如下五个即可spring-beans-4.2.6.RELEASE.jarspring-context-4.2.6.RELEASE.jarspring-core-4.2.6.RELEASE.jarspring-expression-4.2.6.RELEASE.jarcommons-logging-1.1.3.jar2.在配置文件中加入AOP命名空间“xmlns:aop”2.1.配置自动扫描的包xxxx:2.2.在接口实现类中增加Component 注解2.2.3.创建Main方法3.基于注解的方式;3.1:在配置文件中加入如下配置:作用:为匹配的类自动生成Aspect对象。3.2:把横切关注点的代码抽象到切面的类中,需要建一个切面类,在3.2.1: 切面首先是一个 IOC 中的 bean,即加入Component注解3.2.2: 切面还需要加入Aspect 注解3.3:在类中声明各种通知3.3.1:声明一个方法:3.3.2:在方法前加入Before 注解 Before(execution(* com.ladyloveit.aop.impl.*.*(int ,int )Before(execution(publicint com.ladyloveit.aop.impl.ArithmeticCalculator.*(int ,int )3.4:可以在通知方法中声明一个类型为JoinPoint 的参数,然后就能访问链接细节,如方法名和参数值。8、 spring中的bean有哪些作用域:使用bean中的scope属性来配置bean的作用域1、 singleton作用域:singleton:默认值,容器初始时创建bean实例,在整个容器的生命周期内只创建这一个bean,单例的。配置实例: 或者 2、prototype:prototype:原型的,容器初始化时不创建bean实例,而在每次请求时都创建一个新的bean实例,并返回。配置实例: 或者 3、 request:request表示针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效。配置实例: 4、 session:session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效。配置实例: 5、 global sessionglobal session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么,web会自动当成session类型来使用。 配置实例:注意:request、session、global session使用的时候,首先要在初始化web的web.xml中做如下配置: 如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可: .org.springframework.web.context.request.RequestContextListener. 如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现: . requestContextFilter org.springframework.web.filter.RequestContextFilter requestContextFilter /*.9、 Spring中如何实现bean的调用:Spring提供了两种类型的IOC容器实现BeanFactory和ApplicationContext。三种方式得到Bean并进行调用1.使用BeanWrapperHelloWorld hw=new HelloWorld();BeanWrapper bw=new BeanWrapperImpl(hw);bw.sePropertyvalue(msg,HelloWorld);System.out.println(bw.getPropertyCalue(msg);2.使用BeanFactoryInputStream is=new FileInputStream(config.xml);XmlBeanFactory factory=new XmlBeanFactory(is);HelloWorld hw=(HelloWorld)factory.getBean(HelloWorld);System.out.println(hw.getMsg();3.使用ApplicationContextApplicationContext ac=new FileSystemXmlApplicationContext(config.xml);HelloWorld hw=(HelloWorld)ac.getBean(HelloWorld);System.out.println(hw.getMsg();BeanFactory 和 ApplicationContext的区别 BeanFacotry接口提供了配置框架及基本功能,无法支持spring的aop功能和web应用。而ApplicationContext接口作为BeanFacotry的派生。因而提供了BeanFactory所有的功能,而且Applicationcontext还在功能上做了扩展。10、 spring一般事务定义步骤:(1):事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。(2):事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。(3):事务运行的三种模式:A:自动提交事务 每条单独的语句都是一个事务。每个语句后都隐含一个COMMIT。B:显式事务 以BEGIN TRANSACTION显式开始,以COMMIT或ROLLBACK显式结束。C:隐性事务 在前一个事务完成时,新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK显式结束。(4):事务的特性(ACID特性)A:原子性(Atomicity) 事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。B:一致性(Consistency) 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。C:隔离性(Isolation) 一个事务的执行不能被其他事务干扰。D:持续性/永久性(Durability) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。注:事务是恢复和并发控制的基本单位。Spring事务原理统观spring事务,围绕着两个核心PlatformTransactionManager和TransactionStatusspring提供了几个关于事务处理的类:TransactionDefinition /事务属性定义TranscationStatus /代表了当前的事务,可以提交,回滚。PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类 AbstractPlatformTransactionManager,我们使用的事务管理类例如 DataSourceTransactionManager等都是这个类的子类。一般事务定义步骤:TransactionDefinition td = new TransactionDefinition();TransactionStatus ts = transactionManager.getTransaction(td);try /do sthtransactionMmit(ts);catch(Exception e)transactionManager.rollback(ts);spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。编程式主要使用transactionTemplate。省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象.void add() transactionTemplate.execute( new TransactionCallback() pulic Object doInTransaction(TransactionStatus ts) /do sth 声明式:使用TransactionProxyFactoryBean: PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED,readOnly 围绕Poxy的动态代理 能够自动的提交和回滚事务erceptor.TransactionProxyFactoryBeanPROPAGATION_REQUIRED-支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS-支持当前事务,如果当前没有事务,就以非事

温馨提示

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

评论

0/150

提交评论