Spring面试题

  1. 什么是Spring
  • Spring是一个轻量级的容器,他实现了IOC和非侵入的框架,并提供了AOP的实现方式,提供了持久层事务的支持,其让java开发模块化,并且贯穿持久层,逻辑层,表现层,让每一个模块都可以独立分开,降低耦合,提高代码复用率.

2. Spring的好处

  • Spring提供了IOC和DI,将管理和维护对象的工作交给了Spring
  • Spring比较轻量级
  • Spring并不排斥其他框架,所以其他框架和Spring整合变得很容易
  • Spring提供了SpringMVC
  • Spring提供了便捷的事务控制

3. SpringIOC和DI

  • IOC是将维护对象和创建对象的工作交给Spring,而不用我们自己去创建和维护
  • DI是注入对象中所需要的属性

4. DI的三种方式

  • 构造方法
  • set方法
  • 接口

5. BeanFactory 和ApplicationContext的区别

  • 首先BeanFactory和ApplicationContext都是接口,并且ApplicationContext是BeanFactory的子接口。
  • 其次BeanFactory是Spring中最底层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能
  • ApplicationContext(应用上下文)它是Spring的一个更高级的容器,提供了更多的有用的功能,ApplicationContext继承了BeanFactory接口,所以,ApplicationContext也能像BeanFactory从容器中得到Bean(继承至 ListableBeanFactory).
  • 加载方式不同,BeanFactory采用的是延迟加载的形式来注入Bean,即只有在使用某个bean的时候,才对该Bean进行加载实例化.
  • ApplicationContext则相反的,它是在Ioc容易启动时就一次性创建所有的Bean,

6. 常见的ApplicationContext的实现方式

  • ClassPathXmlApplicationContext
  • FileSystemXmlApplicationContext
  • XmlWebApplicationContext

7. SpringBean的作用域

  • Singleton 单例
  • Prototype 多例
  • Request request生命周期内
  • Session session生命周期内
  • global-session

8. 注解的方式配置Bean

  • 在spring配置文件中设置<context:annotation-config/>
  • @Autowired 按照类型进行匹配
  • @Qualifier("student") 按照id进行匹配
  • @Resource(name="student") // 有参数 用参数和id做匹配,如果没有则先用变量名和id,再用类型匹配

9. 默认一个bean是在Spring容器初始化加载,如果设置lazy-init或者为其他作用域,则会在使用到bean的时候初始化(init ,destory)

10. 什么是Spring inner beans

  • 即Spring内部Bean,在一个Bean的内部定义另一个Bean

11. Spring事件(5种)

  • 上下文更新事件(ContextRefreshedEvent):该事件会在ApplicationContext被初始化或者更新时发布,也可以在调用ConfigurableApplicationContext接口中的refresh()方法时被触发。
  • 上下文开始事件(ContextStartedEvent): 当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时被触发。
  • 上下文停止事件(ContextStoppedEvent): 当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。
  • 上下文关闭事件(ContextClosedEvent): 当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。
  • 请求处理事件(RequestHandledEvent): 在Web应用中,当一个http请求(request)结束触发该事件。
  • 允许用户自定义事件,继承ApplicationEvent,并且还要创建一个监听器

12. 用到了那些设计模式

  • 代理模式—在AOP和remoting中被用的比较多。
  • 单例模式—在spring配置文件中定义的bean默认为单例模式
  • 模板方法—用来解决代码重复的问题。
  • 前端控制器—Spring提供了DispatcherServlet来对请求进行分发。
  • 工厂模式—BeanFactory用来创建对象的实例。
  • 依赖注入—贯穿于BeanFactory / ApplicationContext接口的核心理念。
  • 视图帮助(View Helper )

13. aop

  • 将通用的代码从业务中分离出来,简化代码.使用的为jdk代理和cglib代理
  • 连接点 : 在方法的执行前后和抛出异常可以作为连接点,即将增强和目标方法连接的地方.
  • 切入点 : 在某个方法被调用的时候,这个方法上的连接点变为切入点
  • 增强 : 目标方法除了核心业务以外的所需要的方法, 比如在save()方法中,save()为核心方法,开启事务为非核心方法,可以抽离出来, 在AOP中开启事务就叫做增强
  • 切面 : 除了目标方法所在的类以外其他的类
  • 代理 : 将目标方法和增强结合在一起
  • 织入 : 生成代理类的过程

14. 事务

  • Spring内置了事务管理器,配置一下就好
  • 有配置式和声明式两种方法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

maven学习(上)- 基本入门用法

一、下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1...

2168
来自专栏架构师之旅

Spring框架知识总结-注入Bean的各类异常

近日整合sping和hibernate框架时遇到了一系列的异常,本次主要说明一下spring框架可能出现的异常及解决方案。 我们借助sping强...

2148
来自专栏猿天地

Spring Boot 使用WebAsyncTask异步返回结果

在Spring Boot中(Spring MVC)下请求默认都是同步的,一个请求过去到结束都是由一个线程负责的,很多时候为了能够提高吞吐量,需要将一些操作异步化...

4712
来自专栏信安之路

kali渗透测试工具方法

kali作为一个渗透测试者最受欢迎的操作系统,集成了非常多的安全工具,让渗透测试人员更方便的做一些渗透测试工作,本文来自国外某位大神的github,在这里给大家...

1700
来自专栏编程之路

Android深入(三)-设计模式之简单工厂模式

概念:简单工厂模式通俗的讲就是一个类的工厂,用于生产类,而这个工厂本身就是一个类,他可以创建多个类的实例。

1871
来自专栏java学习

关于Spring面试题讲解1

Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标...

1234
来自专栏乐百川的学习频道

Spring学习笔记 Spring Roo 简介

一直以来,Java/Spring开发被认为是笨重的代表,无法快速生成项目原型和骨架。所以,Spring推出了Spring Roo这个项目,帮助我们快速生成项目原...

2887
来自专栏乐百川的学习频道

做一个自动配置JDK环境变量的Powershell脚本

本来想把这篇的内容包括在我的Powershell系列文章之内的,后来写完之后才想起来,这时候我已经复制粘贴到简书、CSDN和SegmentFault三个地方了。...

2585
来自专栏王清培的专栏

spring rest 容易被忽视的后端服务 chunked 性能问题

spring boot 容易被忽视的后端服务 chunked 性能问题 标签(空格分隔): springboot springmvc chunked 背景 sp...

5248
来自专栏西枫里博客

ASP防止XSS跨站脚本攻击

我的ASP的程序,一直以来只注重SQL注入攻击的防御,一直认为XSS跨站没有SQL注入那么严重,直到最近被攻破了,不得已,必须的修补。如何防御XSS跨站脚本攻击...

4012

扫码关注云+社区

领取腾讯云代金券