work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java基础九、Spirng/Spring MVC

Posted on 2020-03-11 22:23  work hard work smart  阅读(157)  评论(0编辑  收藏  举报

90、为什么要使用spring?

1、spring提供ioc技术,容器会帮你管理依赖对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦

2、spirng提供了事务支持,使得事务操作变的更加方便。

3、spring提供了面向切面编程,这样可以方便的处理某一类的问题。

4、更方便的框架集成,spring可以很方便的集成其他框架,如MyBatis,hibernate等。

 

91、什么是aop?

aop是面向切面面层,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

简单来说就是统一处理某一“切面”类问题的编程思想,比如统一处理日志, 异常等。

 

92、IOC?

IOC: Inversionof Controll(控制反转),是spring的核心,就是由spring控制对象的生命周期和对象间的关系

 

93、spring有哪些模块

spring core: 框架最基础的部分,提供ioc和依赖注入特性。

spring context: 构建于core封装包基础上的context封装包,提供了一种框架式的对象访问方法。

spring aop: 提供了面向切面的编程实现,让你可以自定义拦截器、切点等。

spring dao :Data Access Object 提供了JDBC的抽象层

spring web : 提供了针对web开发的集成特性,例如文件上传,利用servlet listeners进行ioc容器初始化和针对Web应用的ApplicationContext。

spring web mvc: spring中的mvc封装包提供了web应用的Model-View-Controller(MVC)实现。

 

94、Spring的注入方式?

注解方式注入

构造方法注入

setter属性注入

参考: Spring常用的三种注入方式

 

95、spring中的bean是线程安全的吗?

要从单例与原型bean分别进行说明

原型Bean,每次创建一个新的对象,也就是线程之间不存在Bean共享,所以不会有线程安全问题。

单例Bean:

  如果单例Bean是一个无状态Bean,也就是线程中不会对Bean的成员执行查询以外的操作,那么这个单例Bean的线程安全的。比如Spring mvc的Controller,Service,Dao等,这些Bean大多是无状态的,只关注方法本身。

       对于有状态的bean,Spring官方提供的bean,一般提供了通过ThreadLocal去解决线程安全的方法

参考: Spring 中的bean 是线程安全的吗?

 

96、spring支持几种bean的作用域

单例:只有一个bean

原型: 每次new一个实例

web环境作用域: 

  request: 每次http请求都会创建一个新对象

  session:同一个会话共享一个实例,不同会话使用不同实例

    global-session:全局会话,所有会话共享一个实例

 

97、spring 自动装配bean有哪些方式? 

no:默认方式,手动装配方式,需要通过ref设定bean的依赖关系

byName: 根据bean的名称注入对象依赖项

byType:它根据类型注入对象依赖项

构造函数: 通过构造函数来注入依赖项,需要设置大量的参数

autodetect: 容器首先通过构造函数使用autowire装配,如果不能,则通过byType自动装配

参考:spring自动装配Bean的五种方式

 

 

98、spring事务实现方式有哪些?

声明式事务:声明式事务也有两种实现方式,基于xml配置文件和注解方式(在类上添加@Transcation注解)

编码方式: 提供编码的形式管理和维护事务

参考:Spring事务管理之几种方式实现事务

 

99、事务的隔离级别? 

参考:Spring事务管理之几种方式实现事务

 

100、说下Spring mvc运行流程

 

1)、spring mvc请求交个dispatcherServlet

2)、DispatcherServlet查询一个或多个handleMapper,找到处理请求的Controller

3)、DispatcherServlet把请求交个Controller

4)、Controller处理完以后返回ModeAndView

5)、Dispatcher查询一个多个viewResolver视图解析器,找到ModelAndView对象指定的视图对象。

参考: SpringMVC源码解析(上)

 

101、Spring Mvc组件有哪些?

前置控制器: DispatcherServlet

映射控制器:HandleMapping

处理器:Controller

模型和视图: ModelAndView

视图解析器: ViewResolver

 

 

102、@RequestMapping的作用是什么?

将http请求映射到相应的类/方法上。

 

103|、 @Autowired的作用是什么?

@Autowired 它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过@Autowired 的使用来消除set/get方法