ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:27.88KB ,
资源ID:8822169      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8822169.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(spring学习1.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

spring学习1.docx

1、spring学习1 spring学习 spring 学习 1. 请简述 Spring 的工作机制? 4. 简述 spring 的组成? 5. 简述 Spring 容器提供了哪些功能? 1、 核心容器: 核心容器提供 Spring 框架的基本功能(Spring Core) 。 核心容器的主要组件是 BeanFactory, 它是的实现。 BeanFactory 使用(IOC) 模式将的配置和依赖性规范与实际的应用程序代码分开。 2、 Spring 上下文: Spring 上下文是一个, 向 Spring 提供上下文信息。 Spring 上下文包括企业服务, 例如 JNDI、 EJB、 电子邮件、

2、 国际化、 校验和调度功能。 3、 Spring AOP: 通过配置管理特性, Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。 所以, 可以很容易地使 Spring 框架管理的任何支持。 Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。 通过使用 Spring AOP,不用依赖 EJB 组件, 就可以将声明性事务管理集成到应用程序中。 4、 Spring DAO: JDBC 抽象层提供了有意义的异常层次结构, 可用该结构来管理理和不同数据库供应商抛出的错误消息。 异常层次结构简化了错误处理, 并且极大地降低了需要编写的异

3、常代码数量(例如打开和关闭连接) 。 Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 5、 Spring ORM: Spring 框架插入了若干个框架, 从而提供了 ORM 的关系工具, 其中包括 JDO、 Hibernate 和 iBatisSQL Map。 所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 6、 Spring Web 模块: Web 上下文模块建立在上下文模块之上, 为基于 Web 的应用程序提供了上下文。 所以, Spring 框架支持与 Jakarta Struts 的集成。 Web 模块还简化了处理多部分请求以及将请

4、求参数绑定到域对象的工作。 7、 Spring MVC 框架: 框架是一个全功能的构建 Web 的 MVC 实现。 通过策略接口, MVC框架变成为高度可配置的, MVC 容纳了大量视图技术, 其中包括 JSP、 Velocity、 、iText 和 POI。 模型由 javabean 构成, 存放于 Map; 视图是一个接口, 负责显示模型; 控制器表示逻辑代码, 是 Controller 的实现。 Spring 框架的功能可以用在任何 J2EE 服务器中, 大多数功能也适用于不受管理的环境。 Spring 的核心要点是: 支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。 毫无疑

5、问, 这样的对象可以在不同 J2EE 环境(Web 或 EJB) 、 独立应用程序、 测试环境之间重用。 2. 请回答你为什么用 Spring 的工作机制? (spring 优点) 1 、 spring 提供了一个管理对象的优秀方案, 很有效的组织你的中间层, ioc 依赖注入使我们不用关心如何去创建管理对象。 使得程序之间 各个部分的耦合性大大的降低。 2. spring 并不排斥其他框架 相反她还能够 将一些好的框架整合起来充当粘合剂 比如 她能够很好的结合 struts 框架, hibernate 框架, hession 框架。 3, ioc 的依赖注入使得我们不用再去写原理来的 sin

6、gleton 和属性文件, 使我们只用关心上层的逻辑代码的开发。 4, aop 编程支持, 有了 aop 的支持 我们不用再去写那些重复 而且复杂的 但是有必不可少的代码, 5。 声明式事物的支持 我们不用再去写事物控制的繁琐的代码, 而是非常简单的在spring 的配置文件中作很少代码的配置即可 达到事物控制的效果 提高了开发的效率。 6。 spring 是真正意义上实现了面向接口编程的框架, 有助于使用者养成良好的习惯。 7, spring 提供的是对对象的管理, 高层的业务逻辑都没有依赖 spring. 8. s 使用 spring 实现的程序更加容易做单元测试。 9。 spring 的

7、 MVC web 框架 提供了 一种清晰, 无侵略性的 mvc 实现模式。 10。 spring 是一个轻量级的容器。 3. 请简述 Spring 是什么? 答: Spring 也表示是一个开源框架, 是为了解决企业应用程序开发复杂性由 Rod Johnson 创建的。 框架的主要优势之一就是其分层架构, 分层架构允许使用者选择使用哪一个组件, 同时为 J2EE 应用程序开发提供集成的框架。 Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。 然而, Spring 的用途不仅限于服务器端的开发。 从简单性、 可测试性和松耦合的角度而言, 任何 Java 应用都

8、可以从 Spring 中受益。 6. 在 Spring 中, bean 的注入有几种方式, 各是什么? 1 set 注入 2 构造器注入 3 自动装配 4 注解注入 5 接口注入 7. 请简述: Spring bean 的作用域? 答: 三种, 一: 为 singleton 和 prototype 1. 1 singleton 单例 全局只有一个 bean 1. 2 prototype 原型, 对于每次调用都会创建一个 bean 二: web 应用应用程序上下文中的 bean 这种 bean, 只有在 web 作用域才有效! 1request 请求, 每次请求都会创建一个 bean 2sess

9、ion 一个会话创建一个 bean 3 global-session 全局会话 全局会话中只能有一个 bean 三 自定义作用域 在 spring2. 0 中作用域是可以任意扩展的, 但是不能覆盖 singleton 和 prototype, spring 的作用域由接口org. springframework. beans. factory. config. Scope 来 定义, 自定义自己的作用域只要实现该接口即可 8. 请叙述设值注入的优点? 参考答案: 设置注入的优点: (1) 与传统的 JavaBean 的写法更相似, 程序开发人员更容易了解和接受。 通过 setter方法设定依赖

10、关系显得更加直观、 自然。 (2) 对于有复杂的依赖关系, 如果采用构造注入, 会导致构造器过于臃肿, 难以阅读。 Spring 在创建 bean 实例时, 需要同时实例化其依赖的全部实例, 因而导致性能的下降, 而使用设值注入能够解决这些问题。 (3) 尤其是某些属性可选的情况下, 多参数的构造器更加笨重。 9. 请叙述构造注入的优点? 参考答案: 构造注入的优点: (1) 可以在构造器中决定依赖关系的注入顺序, 优先依赖的优先注入。 (2) 对于依赖关系无须变化的 bean, 构造注入更加有用处。 因为没有 setter 方法, 所有的依赖关系全部在构造器内设定, 因此, 无须担心后续的代

11、码对依赖关系产生破坏。 (3) 依赖关系只能在构造器中设定, 则只有组建的创建者才能改变组建的依赖关系。 对组建的调用者而言, 组建内部的依赖关系完全透明, 更符合高内聚的原则 10. 说出 bean 工厂创建 bean 的三种方式? 1静态工厂方法 操作步骤: a 创建一个接口 A b 创建一个工厂类, 工厂类中一个静态方法 methodA, 返回值接口 A c 配置 xml 文件中配置 bean , 多加一个 factory-method 值为 method d 编写测试类获取 bean 2实例工厂 bean a 创建一个接口 A b 创建一个工厂类, 工厂类有一个方法 methodA 返

12、回值接口 A c 配置 xml 配置一个 工厂 bean id 为 factoryBean , 配置另一个 bean 这个 bean 添加两个 factory-bean 为(factoryBean ) 和 factory-method 指定 methodA d 编写测试类 3实现接口 org. springframework. beans. factory. FactoryBean 接口 a 创建一个接口 A b 创建一个工厂 bean 实现 接口 FactoryBean, 三个方法。 a) GetObject 返回值 Obejt b) getObjectType 返回值 Class c) i

13、sSingleton 返回值 Boolean c 配置 bean d 编写测试类 11. 请写出 bean 的生命周期的方法? spring 生命周期分两种 一种是 beanfactory, 另一种是 applicationContext applicationContext 的 bean 的生命周期分为 19 步 1 实现接口 BeanFactoryPostProcessor, 调用 postprocessBeanFactory (ConfigurableListableBeanFactory beanfa) 返回 null 方法对工厂定义的信息进行处理。 2 实现接口 Instantiat

14、ionAwareBeanPostProcess 这个接口有五个方法, 稍后一一 说明 调用 postProcessBeforeInstantiation(ClassT class , tring beanName) 方法 返回 null 对 class 和 name 进行处理 3 实例化 bean 4 接口 InstantiationawareBeanPostProcess 接口的postProcessAfterInstantiation (Objecct bean , string beanName) 返回 Bean。 对 bean 进行处理 5 接口 instantiationAwareB

15、eanPostProcess 接口的 postProcessPropertiesValues(PropertyValues pvs PropertyDescriptor pds , Object bean, String beanName) 对 属性进行处理 6 调用 setxx 方法() 设置属性 7 实现 beanNameAware 接口 , 调用 setBeanName(String BeanName) 方法, 对 beanName 处理 8 实现 BeanFactoryAware 接口, 调用 setBeanFactory(BeanFactory beanFactory)方 法对 be

16、anfactory 进行处理 9 实现接口 ApplicationContextAware 接口, 调用 setApplicationContext(ApplicationContext applicationContext) 实现对上下文的处理。 10 实现 BeanPostProcessor 口 调用 postProcessBeforeInitialization(Object bean, string BeanName) 返回 object 实现对 bean 的处理 11 接口 instantiationAwareBeanPostProcess 调用 postProcessBeforeI

17、nitialization (Object, string) 返回 object 实现对 bean 的处理 12 实现接口 initializingBean 接口 调用 afterPropertiesSet() 返回 null 实现设置属 性后的操作 13 通过 init-method 配置 bean 的初始化方法 14 接口 PostProcessBean 调用 postProcessAfterInitialization(Object bean , tring beanName) 实现对 bean 的处理 15 接口 instantiationAwareBeanPostProcessor

18、调用 postProcessAfterInitialization (Object object, String beanName) 实现对 bean 的处理 16 使用 bean 17 关闭容器 18 实现接口 disposableBean 调用 destroy() 方法实现其它注销操作 19 通过配置 destroy-method 属性, 实现对 bean 的其它注销操作 注意: 实现接口 1实现接口并在 xml 中配置 1 接口 BeanFactoryPostProcessor 2 接口 InstantiationawareBeanPostProcess, 有五个方法 3 接口 bean

19、NameAware 4 接口 BeanFactoryAware 5 接口 ApplicationContextAware 6 接口 BeanPostProcessor 7 接口 InitializIngBean 8 接口 12. 请简述你对 IOC 的理解? 一个类需要用到某个接口的方法, 我们需要将类 A 和接口 B 的实现关联起来, 最简单的方法是类 A 中创建一个对于接口 B 的实现 C 的实例, 但这种方法显然两者的依赖(Dependency) 太大了。 而 IoC 的方法是只在类 A 中定义好用于关联接口 B 的实现的方法, 将类 A, 接口 B 和接口 B 的实现 C 放入 IoC

20、 的 容器(Container) 中, 通过一定的配置由容器(Container) 来实现类 A 与接口 B 的实现 C 的关联。 13. 请回答: IoC 最大的好处是什么? 因为把对象生成放在了 XML 里定义, 所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的) , 只要修改 XML 就可以了 , 这样我们甚至可以实现对象的热插拨(有点象 USB 接口和 SCIS 硬盘了) 。 IoC 最大的缺点是什么? (1) 生成一个对象的步骤变复杂了 (其实上操作上还是挺简单的) , 对于不习惯这种方式的人, 会觉得有些别扭和不直观。 (2) 对象 生成因为是使用反射

21、编程, 在效率上有些损耗。 但相对于 IoC 提高的维护性和灵活性来说, 这点损耗是微不足道的, 除非某对象的生成对效率要求特别高。 (3) 缺少 IDE 重构操作的支持, 如果在 Eclipse 要对类改名, 那么你还需要去 XML 文件里手工去改了, 这似乎是所有 XML 方式的缺憾所在。 14. 简述 IoC 的类型? 1接口注入 2set 注入 3构造函数注入 4注解注入 5自动装配 15 SpringMVC 工作原理 1、 客户端发出一个请求给 web 服务器, web 服务器对请求进行解析, 如果匹配DispatcherServlet 的请求映射路径(在 web. xml 中指定)

22、 , web 容器将请求转交给DispatcherServlet. 2、 DipatcherServlet 接收到这个请求之后将根据请求的信息(包括 URL、 Http 方法、请求报文头和请求参数 Cookie 等) 以及 HandlerMapping 的配置找到处理请求的处理器(Handler) 。 3-4、 DispatcherServlet 根据 HandlerMapping 找到对应的 Handler, 将处理权交给 Handler(Handler 将具体的处理进行封装) , 再由具体的 HandlerAdapter 对Handler 进行具体的调用。 5、 Handler 对数据处理

23、完成以后将返回一个 ModelAndView() 对象给DispatcherServlet。 6、 Handler 返回的 ModelAndView() 只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet 通过 ViewResolver 将逻辑视图转化为真正的视图 View。 7、 Dispatcher 通过 model 解析出 ModelAndView() 中的参数进行解析最终展现出完整的view 并返回给客户端 16 什么是 Spring, 它有什么特点? Spring 是一个轻量级的控制反转(IoC) 和面向切面(AOP) 的容器框架。 轻量从大小与开销两方面而言 S

24、pring 都是轻量的。 完整的 Spring 框架可以在一个大小只有 1MB 多的 JAR 文件里发布。 并 且 Spring 所需的处理开销也是微不足道的。 此外, Spring 是非侵入式的: 典型地, Spring 应用中的对象不依赖于 Spring 的特定类。 控制反转Spring 通过一种称作控制反转(IoC) 的技术促进了 松耦 合。 当应用了IoC, 一个对象依赖的其它对象会通过被动的方式传递进来, 而不是这个对象自己创建或者查找依赖对象。 你可以认为 IoC 与 JNDI 相反不 是对象从容器中查找依赖, 而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 面向切面Sp

25、ring 提供了面向切面编程的丰富支持, 允许通过分离应用的 业务逻辑与系统级服务(例如审计(auditing) 和事务() 管理) 进行内聚性的开发。 应用对象 只实现它们应该做的完成业务逻辑仅此而已。 它们 并不负责(甚至是意识) 其它的系统级关注点, 例如日志或事务支持。 容器Spring 包含并管理应用对象的配置和生命周期, 在这个意义上它是 一种容器, 你可以配置你的每个 bean 如何被创建基于一个可配置原型(prototype) , 你的bean 可以创建一个单独的实例或者每次需要时都生 成一个新的实例以及它们是如何相互关联的。 然而, Spring 不应该被混同于传统的重量级的

26、 EJB 容器, 它们经常是庞大与笨重的, 难以使用。 框架Spring 可以将简单的组件配置、 组合成为复杂的应用。 在 Spring 中, 应用对象被声明式地组合, 典型地是在一个 XML 文件里。 Spring 也提供了很多基础功能(事务管理、 持久化框架集成等等) , 将应用逻辑的开发留给了 你。 17 AOP 里面重要的几个名词概念解释: 切面(Aspect) : 一个关注点的模块化, 这个关注点可能会横切多个对象。 事务管理是 J2EE 应用中一个关于横切关注点的很好的例子。 在 Spring AOP 中, 切面可以使用通用类(基于模式的风格) 或者在普通类中以 Aspect 注解

27、(AspectJ 风格) 来实现。 连接点(Joinpoint) : 在程序执行过程中某个特定的点, 比如某方法调用的时候或者处理异常的时候。 在 Spring AOP 中, 一个连接点 总是 代表一个方法的执行。 通过声明一个 org. aspectj. lang. JoinPoint 类型的参数可以使通知(Advice) 的主体部分获得连接点信息。 通知(Advice) : 在切面的某个特定的连接点(Joinpoint) 上执行的动作。 通知有各种类型, 其中包括around 、 before 和after 等通知。 通知的类型将在后面部分进行讨论。 许多 AOP 框架, 包括 Sprin

28、g, 都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。 切入点(Pointcut) : 匹配连接点(Joinpoint) 的断言。 通知和一个切入点表达式关联, 并在满足这个切入点的连接点上运行(例如, 当执行某个特定名称的方法时) 。 切入点表达式如何和连接点匹配是 AOP 的核心: Spring 缺省使用 AspectJ 切入点语法。 引入(Introduction) : (也被称为内部类型声明(inter-type declaration) ) 。 声明额外的方法或者某个类型的字段。 Spring 允许引入新的接口(以及一个对应的实现) 到任何被代理的对象。 例如, 你可以

29、使用一个引入来使 bean 实现 IsModified 接口, 以便简化缓存机制。 目标对象(Target Object) : 被一个或者多个切面(aspect) 所通知(advise) 的对象。 也有人把它叫做 被通知(advised) 对象。 既然 Spring AOP 是通过运行时代理实现的, 这个对象永远是一个 被代理(proxied) 对象。 AOP 代理(AOP Proxy) : AOP 框架创建的对象, 用来实现切面契约(aspect contract) (包括通知方法执行等功能) 。 在 Spring 中, AOP 代理可以是 JDK 动态代理 或者 CGLIB 代理。 注意:

30、 Spring 2. 0 最新引入的基于模式(schema-based) 风格和AspectJ 注解风格的切面声明, 对于使用这些风格的用户来说, 代理的创建是透明的。 织入(Weaving) : 把切面(aspect) 连接到其它的应用程序类型或者对象上, 并创建一个被通知(advised) 的对象。 这些可以在编译时(例如使用 AspectJ 编译器) , 类加载时和运行时完成。 Spring 和其他纯 Java AOP 框架一样, 在运行时完成织入。 通知的类型: 1前置通知(Before advice) : 在某连接点(join point) 之前执行的通知, 但这个通知不能阻止连接点

31、前的执行(除非它抛出一个异常) 。 2返回后通知(After returning advice) : 在某连接点(join point) 正常完成后执行的通知: 例如, 一个方法没有抛出任何异常, 正常返回。 3抛出异常后通知(After throwing advice) : 在方法抛出异常退出时执行的通知。 4后通知(After (finally) advice) : 当某连接点退出的时候执行的通知(不论是正常返回还是异常退出) 。 5环绕通知(Around Advice) : 包围一个连接点(join point) 的通知, 如方法调用。 这是最强大的一种通知类型。 环绕通知可以在方法调用

32、前后完成自定义的行为。 它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。 环绕通知是最常用的一种通知类型。 大部分基于拦截的 AOP 框架, 例如 Nanning 和JBoss4, 都只提供环绕通知。 切入点(pointcut) 和连接点(join point) 匹配的概念是 AOP 的关键, 这使得 AOP 不同于其它仅仅提供拦截功能的旧技术。 切入点使得定位通知(advice) 可独立于 OO 层次。 例如, 一个提供声明式事务管理的 around 通知可以被应用到一组横跨多个对象中的方法上(例如服务层的所有业务操作) 。 18 事务的 ACID 特性 ? 事务

33、使用 ACID 特性来衡量事务的质量。 介绍如下: 1, 原子性 事务必须是原子的, 在事务结束的时候, 事务中的所有任务必须全部成功完成, 否则全部失败, 事务回滚到事务开始之间的状态。 2, 一致性 事务必须保证和数据库的一致性, 即数据库中的所有数据和现实保持一致。 如果事务失败数据必须返回到事务执行之前的状态, 反之修改数据和现实的同步。 3, 隔离性 隔离性是事务与事务之间的屏障, 每个事务必须与其他事务的执行结果隔离开, 直到该事务执行完毕, 它保证了事务的访问的任何数据不会受其他事务执行结果的影响。 4, 持久性 如果事务成功执行, 无论系统发生任何情况, 事务的持久性都必须保证事务的执行结果是永久的。 19 违反 acid 的三种情况 为保证事务的完整性, 必须解决事务之间可能存在的 3 个问题。 (1) 脏读取 当一个事务读取了 另一个事务尚未提交

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

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