spring学习1.docx

上传人:b****6 文档编号:8822169 上传时间:2023-02-01 格式:DOCX 页数:8 大小:27.88KB
下载 相关 举报
spring学习1.docx_第1页
第1页 / 共8页
spring学习1.docx_第2页
第2页 / 共8页
spring学习1.docx_第3页
第3页 / 共8页
spring学习1.docx_第4页
第4页 / 共8页
spring学习1.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

spring学习1.docx

《spring学习1.docx》由会员分享,可在线阅读,更多相关《spring学习1.docx(8页珍藏版)》请在冰豆网上搜索。

spring学习1.docx

spring学习1

spring学习

spring学习1.请简述Spring的工作机制?

4.简述spring的组成?

5.简述Spring容器提供了哪些功能?

1、核心容器:

核心容器提供Spring框架的基本功能(SpringCore)。

核心容器的主要组件是BeanFactory,它是的实现。

BeanFactory使用(IOC)模式将的配置和依赖性规范与实际的应用程序代码分开。

2、Spring上下文:

Spring上下文是一个,向Spring提供上下文信息。

Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。

3、SpringAOP:

通过配置管理特性,SpringAOP模块直接将面向切面的编程功能集成到了Spring框架中。

所以,可以很容易地使Spring框架管理的任何支持。

SpringAOP模块为基于Spring的应用程序中的对象提供了事务管理服务。

通过使用SpringAOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。

4、SpringDAO:

JDBC抽象层提供了有意义的异常层次结构,可用该结构来管理理和不同数据库供应商抛出的错误消息。

异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。

SpringDAO的面向JDBC的异常遵从通用的DAO异常层次结构。

5、SpringORM:

Spring框架插入了若干个框架,从而提供了ORM的关系工具,其中包括JDO、Hibernate和iBatisSQLMap。

所有这些都遵从Spring的通用事务和DAO异常层次结构。

6、SpringWeb模块:

Web上下文模块建立在上下文模块之上,为基于Web的应用程序提供了上下文。

所以,Spring框架支持与JakartaStruts的集成。

Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

7、SpringMVC框架:

框架是一个全功能的构建Web的MVC实现。

通过策略接口,MVC框架变成为高度可配置的,MVC容纳了大量视图技术,其中包括JSP、Velocity、、iText和POI。

模型由javabean构成,存放于Map;视图是一个接口,负责显示模型;控制器表示逻辑代码,是Controller的实现。

Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。

Spring的核心要点是:

支持不绑定到特定J2EE服务的可重用业务和数据访问对象。

毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。

2.请回答你为什么用Spring的工作机制?

(spring优点)1、spring提供了一个管理对象的优秀方案,很有效的组织你的中间层,ioc依赖注入使我们不用关心如何去创建管理对象。

使得程序之间各个部分的耦合性大大的降低。

2.spring并不排斥其他框架相反她还能够将一些好的框架整合起来充当粘合剂比如她能够很好的结合struts框架,hibernate框架,hession框架。

3,ioc的依赖注入使得我们不用再去写原理来的singleton和属性文件,使我们只用关心上层的逻辑代码的开发。

4,aop编程支持,有了aop的支持我们不用再去写那些重复而且复杂的但是有必不可少的代码,5。

声明式事物的支持我们不用再去写事物控制的繁琐的代码,而是非常简单的在spring的配置文件中作很少代码的配置即可达到事物控制的效果提高了开发的效率。

6。

spring是真正意义上实现了面向接口编程的框架,有助于使用者养成良好的习惯。

7,spring提供的是对对象的管理,高层的业务逻辑都没有依赖spring.8.s使用spring实现的程序更加容易做单元测试。

9。

spring的MVCweb框架提供了一种清晰,无侵略性的mvc实现模式。

10。

spring是一个轻量级的容器。

3.请简述Spring是什么?

答:

Spring也表示是一个开源框架,是为了解决企业应用程序开发复杂性由RodJohnson创建的。

框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

然而,Spring的用途不仅限于服务器端的开发。

从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

6.在Spring中,bean的注入有几种方式,各是什么?

1set注入2构造器注入3自动装配4注解注入5接口注入7.请简述:

Springbean的作用域?

答:

三种,一:

为singleton和prototype1.1singleton单例全局只有一个bean1.2prototype原型,对于每次调用都会创建一个bean二:

web应用应用程序上下文中的bean这种bean,只有在web作用域才有效!

1request请求,每次请求都会创建一个bean2session一个会话创建一个bean3global-session全局会话全局会话中只能有一个bean三自定义作用域在spring2.0中作用域是可以任意扩展的,但是不能覆盖singleton和prototype,spring的作用域由接口org.springframework.beans.factory.config.Scope来定义,自定义自己的作用域只要实现该接口即可8.请叙述设值注入的优点?

参考答案:

设置注入的优点:

(1)与传统的JavaBean的写法更相似,程序开发人员更容易了解和接受。

通过setter方法设定依赖关系显得更加直观、自然。

(2)对于有复杂的依赖关系,如果采用构造注入,会导致构造器过于臃肿,难以阅读。

Spring在创建bean实例时,需要同时实例化其依赖的全部实例,因而导致性能的下降,而使用设值注入能够解决这些问题。

(3)尤其是某些属性可选的情况下,多参数的构造器更加笨重。

9.请叙述构造注入的优点?

参考答案:

构造注入的优点:

(1)可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入。

(2)对于依赖关系无须变化的bean,构造注入更加有用处。

因为没有setter方法,所有的依赖关系全部在构造器内设定,因此,无须担心后续的代码对依赖关系产生破坏。

(3)依赖关系只能在构造器中设定,则只有组建的创建者才能改变组建的依赖关系。

对组建的调用者而言,组建内部的依赖关系完全透明,更符合高内聚的原则10.说出bean工厂创建bean的三种方式?

1静态工厂方法操作步骤:

a创建一个接口Ab创建一个工厂类,工厂类中一个静态方法methodA,返回值接口Ac配置xml文件中配置bean,多加一个factory-method值为methodd编写测试类获取bean2实例工厂beana创建一个接口Ab创建一个工厂类,工厂类有一个方法methodA返回值接口Ac配置xml配置一个工厂beanid为factoryBean,配置另一个bean这个bean添加两个factory-bean为(factoryBean)和factory-method指定methodAd编写测试类3实现接口org.springframework.beans.factory.FactoryBean接口a创建一个接口Ab创建一个工厂bean实现接口FactoryBean,三个方法。

a)GetObject返回值Obejtb)getObjectType返回值Classc)isSingleton返回值Booleanc配置beand编写测试类11.请写出bean的生命周期的方法?

spring生命周期分两种一种是beanfactory,另一种是applicationContextapplicationContext的bean的生命周期分为19步1实现接口BeanFactoryPostProcessor,调用postprocessBeanFactory(ConfigurableListableBeanFactorybeanfa)返回null方法对工厂定义的信息进行处理。

2实现接口InstantiationAwareBeanPostProcess这个接口有五个方法,稍后一一说明调用postProcessBeforeInstantiation(ClassTclass,tringbeanName)方法返回null对class和name进行处理3实例化bean4接口InstantiationawareBeanPostProcess接口的postProcessAfterInstantiation(Objecctbean,stringbeanName)返回Bean。

对bean进行处理5接口instantiationAwareBeanPostProcess接口的postProcessPropertiesValues(PropertyValuespvsPropertyDescriptorpds,Objectbean,StringbeanName)对属性进行处理6调用setxx方法()设置属性7实现beanNameAware接口,调用setBeanName(StringBeanName)方法,对beanName处理8实现BeanFactoryAware接口,调用setBeanFactory(BeanFactorybeanFactory)方法对beanfactory进行处理9实现接口ApplicationContextAware接口,调用setApplicationContext(ApplicationContextapplicationContext)实现对上下文的处理。

10实现BeanPostProcessor口调用postProcessBeforeInitialization(Objectbean,stringBeanName)返回object实现对bean的处理11接口instantiationAwareBeanPostProcess调用postProcessBeforeInitialization(Object,string)返回object实现对bean的处理12实现接口initializingBean接口调用afterPropertiesSet()返回null实现设置属性后的操作13通过init-method配置bean的初始化方法14接口PostProcessBean调用postProcessAfterInitialization(Objectbean,tringbeanName)实现对bean的处理15接口instantiationAwareBeanPostProcessor调用postProcessAfterInitialization(Objectobject,StringbeanName)实现对bean的处理16使用bean17关闭容器18实现接口disposableBean调用destroy()方法实现其它注销操作19通过配置destroy-method属性,实现对bean的其它注销操作注意:

实现接口1实现接口并在xml中配置1接口BeanFactoryPostProcessor2接口InstantiationawareBeanPostProcess,有五个方法3接口beanNameAware4接口BeanFactoryAware5接口ApplicationContextAware6接口BeanPostProcessor7接口InitializIngBean8接口12.请简述你对IOC的理解?

一个类需要用到某个接口的方法,我们需要将类A和接口B的实现关联起来,最简单的方法是类A中创建一个对于接口B的实现C的实例,但这种方法显然两者的依赖(Dependency)太大了。

而IoC的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的实现C放入IoC的容器(Container)中,通过一定的配置由容器(Container)来实现类A与接口B的实现C的关联。

13.请回答:

IoC最大的好处是什么?

因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有点象USB接口和SCIS硬盘了)。

IoC最大的缺点是什么?

(1)生成一个对象的步骤变复杂了(其实上操作上还是挺简单的),对于不习惯这种方式的人,会觉得有些别扭和不直观。

(2)对象生成因为是使用反射编程,在效率上有些损耗。

但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。

(3)缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。

14.简述IoC的类型?

1接口注入2set注入3构造函数注入4注解注入5自动装配15SpringMVC工作原理1、客户端发出一个请求给web服务器,web服务器对请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。

3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。

5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。

6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。

7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端16什么是Spring,它有什么特点?

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

◆轻量从大小与开销两方面而言Spring都是轻量的。

完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。

并且Spring所需的处理开销也是微不足道的。

此外,Spring是非侵入式的:

典型地,Spring应用中的对象不依赖于Spring的特定类。

◆控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。

当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。

你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

◆面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。

应用对象只实现它们应该做的完成业务逻辑仅此而已。

它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

◆容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。

然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

◆框架Spring可以将简单的组件配置、组合成为复杂的应用。

在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。

Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

17AOP里面重要的几个名词概念解释:

切面(Aspect):

一个关注点的模块化,这个关注点可能会横切多个对象。

事务管理是J2EE应用中一个关于横切关注点的很好的例子。

在SpringAOP中,切面可以使用通用类(基于模式的风格)或者在普通类中以@Aspect注解(@AspectJ风格)来实现。

连接点(Joinpoint):

在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。

在SpringAOP中,一个连接点总是代表一个方法的执行。

通过声明一个org.aspectj.lang.JoinPoint类型的参数可以使通知(Advice)的主体部分获得连接点信息。

通知(Advice):

在切面的某个特定的连接点(Joinpoint)上执行的动作。

通知有各种类型,其中包括around、before和after等通知。

通知的类型将在后面部分进行讨论。

许多AOP框架,包括Spring,都是以拦截器做通知模型,并维护一个以连接点为中心的拦截器链。

切入点(Pointcut):

匹配连接点(Joinpoint)的断言。

通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。

切入点表达式如何和连接点匹配是AOP的核心:

Spring缺省使用AspectJ切入点语法。

引入(Introduction):

(也被称为内部类型声明(inter-typedeclaration))。

声明额外的方法或者某个类型的字段。

Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。

例如,你可以使用一个引入来使bean实现IsModified接口,以便简化缓存机制。

目标对象(TargetObject):

被一个或者多个切面(aspect)所通知(advise)的对象。

也有人把它叫做被通知(advised)对象。

既然SpringAOP是通过运行时代理实现的,这个对象永远是一个被代理(proxied)对象。

AOP代理(AOPProxy):

AOP框架创建的对象,用来实现切面契约(aspectcontract)(包括通知方法执行等功能)。

在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。

注意:

Spring2.0最新引入的基于模式(schema-based)风格和@AspectJ注解风格的切面声明,对于使用这些风格的用户来说,代理的创建是透明的。

织入(Weaving):

把切面(aspect)连接到其它的应用程序类型或者对象上,并创建一个被通知(advised)的对象。

这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。

Spring和其他纯JavaAOP框架一样,在运行时完成织入。

通知的类型:

1前置通知(Beforeadvice):

在某连接点(joinpoint)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。

2返回后通知(Afterreturningadvice):

在某连接点(joinpoint)正常完成后执行的通知:

例如,一个方法没有抛出任何异常,正常返回。

3抛出异常后通知(Afterthrowingadvice):

在方法抛出异常退出时执行的通知。

4后通知(After(finally)advice):

当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。

5环绕通知(AroundAdvice):

包围一个连接点(joinpoint)的通知,如方法调用。

这是最强大的一种通知类型。

环绕通知可以在方法调用前后完成自定义的行为。

它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。

环绕通知是最常用的一种通知类型。

大部分基于拦截的AOP框架,例如Nanning和JBoss4,都只提供环绕通知。

切入点(pointcut)和连接点(joinpoint)匹配的概念是AOP的关键,这使得AOP不同于其它仅仅提供拦截功能的旧技术。

切入点使得定位通知(advice)可独立于OO层次。

例如,一个提供声明式事务管理的around通知可以被应用到一组横跨多个对象中的方法上(例如服务层的所有业务操作)。

18事务的ACID特性?

事务使用ACID特性来衡量事务的质量。

介绍如下:

1,原子性事务必须是原子的,在事务结束的时候,事务中的所有任务必须全部成功完成,否则全部失败,事务回滚到事务开始之间的状态。

2,一致性事务必须保证和数据库的一致性,即数据库中的所有数据和现实保持一致。

如果事务失败数据必须返回到事务执行之前的状态,反之修改数据和现实的同步。

3,隔离性隔离性是事务与事务之间的屏障,每个事务必须与其他事务的执行结果隔离开,直到该事务执行完毕,它保证了事务的访问的任何数据不会受其他事务执行结果的影响。

4,持久性如果事务成功执行,无论系统发生任何情况,事务的持久性都必须保证事务的执行结果是永久的。

19违反acid的三种情况为保证事务的完整性,必须解决事务之间可能存在的3个问题。

(1)脏读取当一个事务读取了另一个事务尚未提交

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1