前言

群里的一个小伙伴,工作半年就拿到了25k的offer,真是慕了慕了。

当初的敌人,真的是一个比一个凡尔赛,尽管我很菜,然而我月薪25k。。。
当然这位小伙伴能拿到了25k的月薪,靠的必定是他私下的致力,在小编的诘问下,小伙伴跟我分享了他的学习材料和遇到的spring面试题,小编这里给大家分享一下,心愿能够对大家有所帮忙。

spring面试题

1、什么是spring?

Spring实质上是一个轻量级的集成框架,可用于用Java开发企业应用程序。

2、命名Spring框架的不同模块

一些重要的Spring Framework模块是:

  • Spring Context –用于依赖注入
  • Spring AOP –用于面向方面的编程
  • Spring DAO –应用DAO模式进行数据库操作
  • Spring JDBC –用于JDBC和DataSource反对
  • Spring ORM –对ORM工具的反对,例如Hibernate
  • Spring Web Module –用于创立Web应用程序
  • Spring MVC –用于创立Web应用程序,Web服务等的Model-View-Controller实现

3、列出基于正文的Spring配置中的一些重要正文

重要的正文是:

  • @Required
  • @Autowired
  • @Qualifier
  • @Resource
  • @PostConstruct
  • @PreDestroy

4、在Spring中解释Bean并列出Spring Bean的不同范畴

Bean是形成Spring应用程序骨干的对象。它们由Spring IoC容器治理。换句话说,bean是一个由Spring IoC容器实例化,组装和治理的对象。

Spring bean中定义了五个范畴。

Singleton: 将为每个容器创立一个bean实例。这是spring bean的默认范畴。在应用此范畴时,请确保spring bean没有共享的实例变量,否则可能会导致数据不统一问题,因为它不是线程平安的
原型: 每次申请bean时都会创立一个新实例
申请: 这与原型范畴雷同,然而利用于Web应用程序。将为每个HTTP申请创立一个新的bean实例
会话: 容器将为每个HTTP会话创立一个新bean
Global-session: 这用于为Portlet应用程序创立全局会话Bean

5、解释DispatcherServlet和ContextLoaderListener的角色

DispatcherServlet基本上是Spring MVC应用程序中的前端控制器,因为它加载了Spring bean配置文件并初始化所有已配置的bean。如果启用了正文,它还将扫描软件包以配置任何应用@ Component,@ Controller,@ Repository或@Service正文进行正文的bean。

另一方面,ContextLoaderListener是在Spring根目录中启动和敞开WebApplicationContext的侦听器。它的一些重要性能包含将Application Context的生命周期与ServletContext的生命周期绑定在一起,并主动创立ApplicationContext。

6、构造函数注入和setter注入之间有什么区别?

7、spring的主动注入模式是什么?什么是主动拆卸模式?

主动拆卸使程序员可能主动注入Bean。咱们不须要编写显式的注入逻辑。 让咱们看看应用依赖注入来注入bean的代码。

`<bean id = “ emp” class = “ com.javatpoint.Employee” autowire = “ byName” />` *   1

主动拆卸模式如下:

8、如何在Spring MVC Framework中解决异样?

Spring MVC Framework提供了以下办法来帮忙咱们实现牢靠的异样解决。

基于控制器:
咱们能够在控制器类中定义异样处理程序办法。咱们所须要做的就是应用@ExceptionHandler正文对这些办法进行正文。

全局异样处理程序:
异样解决是一个跨畛域的问题,Spring提供了@ControllerAdvice批注,咱们能够将其与任何类一起应用来定义全局异样处理程序。

HandlerExceptionResolver实现:
对于个别的异样,大多数时候咱们提供动态页面。Spring Framework提供了HandlerExceptionResolver接口,咱们能够通过该接口来创立全局异样处理程序。这种定义全局异样处理程序的其余办法背地的起因是,Spring框架还提供了默认实现类,咱们能够在咱们的Spring bean配置文件中定义这些默认实现类,以取得Spring框架异样解决的益处。

9、您应用了哪些重要的Spring批注?

我在我的项目中应用的一些Spring正文是:

@Controller –用于Spring MVC我的项目中的控制器类。

@RequestMapping –用于在控制器处理程序办法中配置URI映射。这是一个十分重要的正文,因而您应该浏览Spring MVC RequestMapping正文示例

@ResponseBody –用于发送对象作为响应,通常用于发送XML或JSON数据作为响应。

@PathVariable –用于将动静值从URI映射到处理程序办法参数。

@Autowired –用于主动拆卸Spring bean中的依赖项。

@Qualifier –带有@Autowired正文,以防止在存在多个bean类型的实例时造成混同。

@Service –用于服务类。

@Scope –用于配置Spring bean的范畴。

@ Configuration,@ ComponentScan和@Bean –用于基于Java的配置。

AspectJ正文,用于配置方面和倡议,@ Aspect,@ Before,@ After,@ Around,@ Pointcut等。

10、如何集成Spring和Hibernate框架?

如果您应用的是SessionFactory提供以后会话的Hibernate 3+,那么咱们能够应用Spring ORM模块来集成Spring和Hibernate框架,那么您应该防止应用HibernateTemplate或HibernateDaoSupport类,而最好应用带有依赖项注入的DAO模式进行集成。

另外,Spring ORM还提供了对应用Spring申明式事务管理的反对,因而您应该利用它,而不是应用休眠的样板代码进行事务管理。

11、命名Spring反对的事务管理的类型

Spring反对两种类型的事务管理。他们是:

程序化事务管理: 在这种状况下,借助编程来治理事务。它为您提供了极大的灵活性,然而很难保护。
申明式事务管理: 在此,事务管理与业务代码离开。仅正文或基于XML的配置用于治理事务。