-
1.为什么要使用Spring?
简单来说,Spring是一个轻量级的控制反转和面向切面的容器框架
从大小与开销两方面而言Spring都是轻量的,完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spinrg所需的处理开销也是微不足道的,此外、Spring应用中的对象不依赖与Spring的特定类。
Spring通过一种称做控制反转的技术促进了松耦合,当应用了IoC,一个对象以来的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为Ioc与JNDi相反-----不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务,进行内聚性的开发,应用对象只现实它们应该做的-----完成业务逻辑-------仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,列如日志或事物支持。
Spring包含并管理应用对象的配置和声明周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建—基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的是咧---------以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的JEB容器,它们经常是庞大于笨重的,难以使用。 Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里,Spring也提供了很多基础功能(事物管理、持久化框架集成等等),将应用逻辑的开发留给了你。2.Spring常用的注入方式有哪些?
Spring通过id(依赖注入)现实了ioc(控制反转),常用的注入方式主要有三种:
1.构造方法注入
2.Setter注入
3.基于注解的注入3.Spring中的bean是线程安全的吗? Spring容器中的bean是否线程安全,容器本身并没有提供bean的线程安全策略,因此可以说spring容器中的bean本身不具备线程安全的特性,但是具体还是结合具体scoper的bean去研究。
4.spring自动装配bean有哪些方式? Spring容器负责创建应用程序中的bean同时通过id来协调这些对象之间的关系,作为开发人员,我们需要告诉Spring要创建哪些bean并且如何将其装配到一起。
Spring中bean装配有两种方式: 隐式的bean发现机制和自动装配 在java代码或者XML中进行显示配置
5. Spring事物现实方式有哪些? 编程式事物管理对基于POJO的应用来说是唯一选择,我们需要在代码中调用beginTransaction()、commit()、rollback()等事物管理相关的方法,这就是编程式事物管理。
基于TransactionProxyFactoryBean的声明式事物管理 基于@Transactional的声明式事务管理
基于Asperctj AOP 配置事务
6.说一下Spring的事务隔离? 事务隔离级别指的是一个事务对数据的修改与另一个并行的事务的隔离程度,当多个事务同时访问相同数据时,如果没有采取必要的隔离机制,就可能发生以下问题:
脏读:一个事务读到另一个事务未提交的更新数据。
幻读:列如第一个事务对一个表中的数据进行修改,比如这个中修改涉及到表中“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是想向表中插入“一行数据”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行,就好像发生了幻觉一样,
不可重复读:比方说同一个事务中先后执行两条一模一样的select语句,期间在此次事务中没有执行过任何DDL语句,但先后得到的结果不一致,这就是不可重复度。
7.@RequestMapping的作用是什么? RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上,用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性
Value,methond,consumes,produeces,params,headers
Value:指定请求的实际地址,指定的地址可以是用URL Teamplate模式
Methond:指定请求的methond类型,GET,POST,PUT,DELEETE等
Consumes:指定处理请求的提交内容类型(Content-Type)
Produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含改指定类型才返回
Params:指定request中必须包含某些参数值是,才让改方法处理
Headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
8.Spring mcv有哪些组件?
DispatcherServlet:中央控制器,吧请求给转发到具体的控制器 Controller:具体处理请求的控制器
HandlerMapping:映射处理器,负责映射中央处理器转发controller时的映射策略
ModelAndView:服务层返回的数据和视图层的封装类 ViewResolver:视图解析器,解析具体的视图
Interceptors:拦截器,负责拦截我们定义的请求然后做处理工作
为什么要使用 spring?
最新推荐文章于 2024-08-22 10:11:08 发布