Spring学习之优缺点

Spring

1.Spring工作机制及为什么要用?

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。Spring既是一个AOP框架,也是一IOC容器。

SpringFramework的组成:Spring AOP,Spring DAO,Spring ORM,Spring Web,Spring Context, Spring Web MVC。

Spring的核心就是IOC和AOP,所以Spring的工作机制简单的理解也就是IOC和AOP的工作机制。

借助于Spring AOP,Spring IoC能够很方便的使用到非常健壮、灵活的企业级服务,通过使用IoC能够降低组件之间的耦合度,最终,能够提高类的重用性,利于测试,而且更利于整个产品或系统集成和配置。

2.说说AOP和IOC的概念以及在spring中是如何应用的?

AOP,Aspect Oriented Program,面向(方面)切面的编程;

IOC,Invert Of Control,控制反转。

(ioc是控制反转,是spring的核心思想。通过面向接口编程来实现对业务组件的动态依赖。

aop是面向切面编程,它并不是只在spring或者java中才有的,它和面向对象编程(oop)是相对而言的另一种编程思想。

spring在实现aop编程时利用的是java的代理机制。

)

  简单说一下,IOC就是其实就是依赖注入,即用接口编程在程序中不出现new关键字,而是用接口来命名引用,然后通过某种方式把接口的某个实现类的实例注入到引用里,从而实现接口与具体实现类的松耦合。

  由容器控制程序之间的关系(通过XML配置),而非传统实现中的由程序代码直接操控,(在一个Class对象中引用另一个Class对象时,我们通常都是直接通过new contructor)。控制权由应用代码中转到了外部容器,控制权的转移,是所谓的反转

  AOP方式很类似filter,就是在程序正常的业务流中间像切面一样插入很多其他需要执行的代码,比如登录时候,在进入登录页面前写入日志,很常用的,尤其是跟数据库有关的,或者跟支付有关的程序肯定会在每一步前面插入日志。面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。

AOP Advice(AOP增强)分为:

前置增强

后置增强

异常增强

环绕增强

3.Spring的事务有几种方式?谈谈spring事物的隔离级别和传播行为?

声明式事务    使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。

事务的隔离级别:

数据库系统提供了4种事务隔离级别,在这4种隔离级别中,Serializable的隔离级别最高,Read Uncommitted的隔离级别最低;

· Read Uncommitted 读未提交数据;(会出现脏读)

· Read Committed   读已提交数据;

· Repeatable Read  可重复读;

· Serializable     串行化

事务的传播属性包括:

· Required    业务方法需要在一个事务中运行,如果一个方法运行时已经处在一个事务中,那么加入到该事务,否则为自己创建一个新事务,80%的方法用到该传播属性;

· Not-Supported

· Requiresnew

· Mandatoky

· Supports

· Never

· Nested

4.  Spring的优点和缺点?

⑴Spring的优点:

①     Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB;

②     Spring能消除在许多工程中常见的对Singleton的过多使用。(因为它降低了系统的可测试性和面向对象的程度);

③     通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。Inversion of Control的使用帮助完成了这种简化;

④     通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯;

⑤     Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs,在Spring应用中的大多数业务对象没有依赖于Spring;

⑥     使用Spring构建的应用程序易于单元测试;

⑦     Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码;

⑧     Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,他们适用于许多web应用。例如:Spring能使用AOP提供声明性事务管理而不通过EJB容器;

⑨     Spring为数据存取提供了一个一致的框架不论使用的是JDBC还是O/R mapping产品;

⑵Spring的缺点:

①     使用人数不多,jsp中要写很多代码;

②     控制器过于灵活,缺少一个公用控制器。

时间: 2024-12-29 06:47:04

Spring学习之优缺点的相关文章

Struts2 + Spring 学习(一)搭建struts开发环境

·为Web应用增加Struts2支持 1. 登陆struts2官网下载struts2的最新版,本文所用的是Struts 2.3.16.2 我们所下载的压缩包内内容应给如下 其中,apps包含了struts2的实例应用,docs包含了struts2的相关文档,lib包含了Struts2框架的核心类库以及struts2的第三方插件类库,src包含了struc包含了struts2框架的全部源码. 2. 在Eclipse新建Web工程,将是所用到的类库放到WEB-INF/路径下 3. 编辑Web应用的w

Spring学习笔记(一)

Spring学习笔记(一) Spring核心思想: IOC:  Inversion Of Control (控制反转) / DI: Dependency Injection (依赖注入) AOP: Aspect Oriented Programming (面向切面编程) IOC 1. 简单的应用 Model package com.wangj.spring.model; public class User { private String username; private String pas

不错的Spring学习笔记(转)

Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包.   在Myeclipse中创建Java项目.   编写一个接口类,为了简单,只加入了一个方法.   Java代码   1.package com.szy.spring.interfacebean;  

spring学习一——基本搭建,属性注入的两种方式

今天用spring 3.2.5搭建了基本的环境,spring出的太快了,前段时间才3.2.5,今儿个一瞧已经上了4的版本了,稍后给出spring的jar下载地址,毕竟现在官网上找不到了啊. 废话少说了,spring 3.2.5已经将所有的依赖包都放在了dist的lib下面,并且都有doc包和源码包,很是方便.先导入所需的jar包:core,context,beans,expression 四个jar包,除此之外,还需导入commons-logging. 下一步,新建xml文件,建议名称为 app

Spring学习(一)tomcat加载web.xml、以及项目集成Spring支持

tomcat容器加载web.xml 一. 1 .启动一个 WEB 项目的时候, WEB 容器会去读取它的配置文件 web.xml ,读取 <listener> 和 <context-param> 两个结点. 2 .紧急着,容创建一个 ServletContext ( servlet 上下文),这个 web 项目的所有部分都将共享这个上下文. 3 .容器将 <context-param> 转换为键值对,并交给 servletContext . 4 .容器创建 <li

Spring学习系列之——第三章:Spring中Bean的配置(一)

Spring的配置形式有两种:基于XML配置和基于注解配置. Bean的配置方式有以下几种: 通过全类名,即通过反射的方式: 通过工厂方法,有静态工厂方法和实例工厂方法: 通过FactoryBean配置: 通过XML文件配置bean 本篇文章将按照下面的目录来说明基于XML的方式配置bean JavaBean的创建 通过XML配置的方式来配置bean XMLbean的配置: spring的依赖注入的方式 属性注入 构造器注入 工厂方法注入(很少使用) 测试方法 IoC容器的实例化: Applic

spring学习(一)

spring的核心是IOC和DI,首先要明白IOC和DI的概念. IOC,即Inverse of Control,反转控制,就是将原本在程序中手动创建service对象的控制权交给spring容器管理,简单的说就是对象的创建权交给了spring容器管理. DI,即Dependency Injection,依赖注入,在web应用中,action调用service层,service调用dao层,也就是action依赖service,service依赖dao,而在spring容器管理对象时,在创建be

spring 学习笔记1

Spring 学习记录 任何一个成功的应用都是由多个为了实现某一个业务目标而相互协作的组件构成的.这些组件必须彼此了解,并相互协作来完成工作. 在Spring 中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互合作的对象引用赋予各个对象. 创建应用对象之间协作关系的行为通常被称为(装配),这是依赖注入的本质.

Spring学习之Ioc控制反转(1)

开始之前: 1. 本博文为原创,转载请注明出处 2. 作者非计算机科班出身,如有错误,请多指正 ---------------------------------------------------------------------------开始啦啦啦啦啦------------------------------------------------------------------------------- 从开始接触spring起,听到最多的就是Ioc(控制反转)和AOP(面向切面编程