目录

1、Spring的AOP理解?

2、Spring事务的隔离级别有哪几种?

3、Spring的通知有哪些类型?

4、SpringMVC的流程?

5、SpringMVC怎样设定重定向和转发?

6、SpringMVC的常用注解有哪些?

7、怎样在SpringMVC控制器的方法中的到Request或者Session?

8、SpringMVC中怎么样把ModelMap里面的数据放到Session中?

9、有哪些不同类型的IOC(依赖注入)方式?

10、解释Spring支持的几种bean的作用域?

11、SpringMVC中,控制器中处理方法的返回值有哪些?

12、SpringMVC中,如果前台有很多个参数传入,并且这些参数都是一个对象,怎样快速得到这个对象?

13、SpringMVC的控制器是不是单例模式,如果是有什么问题,如何解决?

14、SpringMVC的主要组件?

15、SpringMVC如何自定义拦截器并使用?

16、SpringMVC如何和前端AJAX交互?

17、SpringBoot的核心注解是哪个?它主要是由哪几个注解组成的?

18、SpringBoot、SpringMVC、Spring有什么区别?

19、什么是SpringBoot Starter?

20、SpringBoot基于java配置的方式整合mybatis的过程?


1、Spring的AOP理解?

AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对

多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命

名为“切面”(Aspect),减少系统中的重复代码降低了模块间的耦合度,同时提高

了系统的可维护性。Spring AOP使用的动态代理实现。

2、Spring事务的隔离级别有哪几种?

1.ISOLATION_DEFAULT:这是PlatfromTransactionManager默认的隔离级别,

使用数据库默认的事务隔离级别。

2.ISOLATION_READ_UNCOMMITTED:读未提交,允许另外一个事务可以看到这个事务未

提交的数据。

3.ISOLATION_READ_COMMITTED:读已提交,保证一个事务修改的数据提交后才能被另

一事务读取,而且能看到该事务对已有记录的更新。

4.ISOLATION_REPEATABLE_READ:可重复读,保证一个事务修改的数据提交后才能被另

一事务读取,但是不能看到该事务对已有记录的更新。

5.ISOLATION_SERIALIZABLE:可序列化,一个事务在执行的过程中完全看不到其他事务对数据库

所做的更新。

3、Spring的通知有哪些类型?

1.前置通知(Before advice):在某连接点(join point)之前执行的通知,但这个

通知不能阻止连接点前的执行(除非它抛出一个异常)。

2.后置通知(After returning advice):在某连接点(join point)正常完成后执

行的通知:例如,一个方法没有抛出任何异常,正常返回。

3.异常通知(After throwing advice):在方法抛出异常退出时执行的通知。

4.最终通知(After (finally) advice):当某连接点退出的时候执行的通知(不论

是正常返回还是异常退出)。

5.环绕通知(Around Advice):包围一个连接点(join point)的通知,如方法调用

。这是最强大的一种通知类型。?环绕通知可以在方法调用前后完成自定义的行为。它

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

4、SpringMVC的流程?

1.用户发送请求至前端控制器DispatcherServlet;

2.DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;

3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

4.DispatcherServlet 调用 HandlerAdapter处理器适配器;

5.HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);

6.Handler执行完成返回ModelAndView;

7.HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;

8.DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;

9.ViewResolver解析后返回具体View;

10.DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

11.DispatcherServlet响应用户。

5、SpringMVC怎样设定重定向和转发?

1.转发:在返回值前面加"forward:",譬如"forward:user.do"

2.重定向:在返回值前面加"redirect:",譬如"redirect:user.do"

6、SpringMVC的常用注解有哪些?

1.@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

2.@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

3.@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

7、怎样在SpringMVC控制器的方法中的到Request或者Session?

直接在方法的形参中声明 request,SpringMvc 就自动把 request 对象传入其中

通过@ModelAttribute注解

protected HttpServletRequest request;  
        protected HttpServletResponse response;  
        protected HttpSession session;  
          
        @ModelAttribute  
        public void setReqAndRes(HttpServletRequest request, HttpServletResponse response){  
            this.request = request;  
            this.response = response;  
            this.session = request.getSession();  
        } 

8、SpringMVC中怎么样把ModelMap里面的数据放到Session中?

可以在类上面加上@SessionAttributes 注解,里面包含的字符串就是要放入 session的 key。

9、有哪些不同类型的IOC(依赖注入)方式?

1.构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。

2.Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

3.接口的方式注入。

10、解释Spring支持的几种bean的作用域?

1、singleton : bean在每个Spring ioc 容器中只有一个实例。

2、prototype:一个bean的定义可以有多个实例。

3、request:每次http请求都会创建一个bean,该作用域仅在基于web的SpringApplicationContext情形下有效。

4、session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。

5、global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作

用域仅在基于web的Spring ApplicationContext情形下有效。

11、SpringMVC中,控制器中处理方法的返回值有哪些?

返回值可以有很多类型,有String, ModelAndView。ModelAndView类把视图和数据都合并的一起的,但一般用String比较好。

12、SpringMVC中,如果前台有很多个参数传入,并且这些参数都是一个对象,怎样快速得到这个对象?

直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面。

13、SpringMVC的控制器是不是单例模式,如果是有什么问题,如何解决?

是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解方案是在控制器里面不能写字段,尽量不要使用成员变量。

14、SpringMVC的主要组件?

(1)前端控制器 DispatcherServlet

作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。

(2)处理器映射器HandlerMapping

作用:根据请求的URL来查找Handler。

(3)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

(4)处理器Handler。

(5)视图解析器 ViewResolver。

15、SpringMVC如何自定义拦截器并使用?

有两种写法,一种是实现接口,另外一种是继承适配器类,然后在SpringMvc的配置文件中配置拦截器即可:
  <!-- 配置SpringMvc的拦截器 -->
<mvc:interceptors>
    <!-- 配置一个拦截器的Bean就可以了 默认是对所有请求都拦截 -->
    <bean id="myInterceptor" class="com.MyHandlerInterceptor"></bean>

    <!-- 只针对部分请求拦截 -->
    <mvc:interceptor>
       <mvc:mapping path="/modelMap.do" />
       <bean class="com.MyHandlerInterceptorAdapter" />
    </mvc:interceptor>
</mvc:interceptors>

16、SpringMVC如何和前端AJAX交互?

通过 jackson 框架就可以把 java 里面的对象直接转化成 js 可以识别的 json 对象具体步骤如下 :

1.加入jackson相关依赖

2.在接受 Ajax 方法里面可以直接返回 Object,List 等,但方法前面要加上@ResponseBody注解

 

17、SpringBoot的核心注解是哪个?它主要是由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,

主要组合包含了以下 3 个注解:

1、@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。

2、@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(exclude = {

DataSourceAutoConfiguration.class })。

3、@ComponentScan:Spring组件扫描。

 

18、SpringBoot、SpringMVC、Spring有什么区别?

Springboot是简化配置,将mybatis中的配置数据源,主配置文件等配置,spring、springMVC的配置文件都用springboot的yml文件配置,极大的简化了配置,使项目可以快速的启动起来。

SpringMVC是通过(model),V(view),C(controller)的结构进行分层,从而实现前后端分离的效果,然后通过前端控制器(DispatcherServlet),处理器映射器(HandlerMapping),处理器适配器(HandlerAdapter),视图解析器(ViewResolver),将各层有机的组织起来,使每个人都有不同的分工从而加快了开发的效率。

Spring是由Aop面向切面和IOC控制翻转(又称作DI依赖注入),面向切面是把主方法和其他的一些无关的方法分离开来,从而达到降低耦合的效果,控制翻转是指将原先是由new创建的对象,各个类之间的依赖较强,将创建对象的权利交托给ioc容器后,由ioc容器来创建对象,使耦合度减小,提高了效率。

19、什么是SpringBoot Starter?

启动器是一套方便的依赖没描述符,它可以放在自己的程序中。你可以一站式的获取你所需要的 Spring 和相关技术,而不需要依赖描述符的通过示例代码搜索和复制黏贴的负载。

20、SpringBoot基于java配置的方式整合mybatis的过程?

创建maven项目

补全项目文件夹

添加Maven依赖

继承springboot父项目

添加mybatis启动器

创建实体类

创建Dao层接口

mybatis映射文件

mybatis配置文件

创建配置类定义数据源Bean和定义SqlSessionFactoryBean

创建配置类定义Bean扫描DAO层接口

application.yml中添加相关配置信息

更多推荐

Spring和SpringMVC简答题(面试题)