spring源码分析第六天------spring经典面试问题

1、Spring5 新特性及应用举例

2、Spring 经典的面试问题

a、什么是 Spring 框架?Spring 框架有哪些主要模块?

Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spring 帮 助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。

b、使用 Spring 框架能带来哪些好处?

IOC和DI、事务性、springMVC、Spring AOP

c、在 Java 中依赖注入有以下三种实现方式:

接口注入–>@Autowired:自动装配

构造器注入:@Autowired //构造器注入
private TestBean11(String message) {  this.message = message;
}setter注入:private String message;
@Autowired //setter方法注入
public void setMessage(String message) {  this.message = message;
} 字段注入:

public class TestBean12 {
@Autowired //字段注入
private String message;
//省略getter和setter
}

Setter 方法注入 :

    //注入对象springDao
private SpringDao springDao;  //一定要写被注入对象的set方法  public void setSpringDao(SpringDao springDao) {  this.springDao = springDao;
}

构造器注入

//注入对象springDao
private SpringDao springDao;
private User user;  public SpringAction(SpringDao springDao,User user){  this.springDao = springDao;  this.user = user;  System.out.println("构造方法调用springDao和user");
}

3、BeanFactory 和 ApplicationContext 有什么区别?

BeanFactory 可以理解为含有 bean 集合的工厂类。BeanFactory 包含了种 bean 的定义,以便在接 收到客户端请求时将对应的 bean 实例化。
BeanFactory 还能在实例化对象的时生成协作类之间的关系。此举将 bean 自身与 bean 客户端的配置 中解放出来。
BeanFactory还包含了bean生命周期的控制,调用客户端的初始化方法(initialization Methods)和销毁方法(destruction Methods)。
从表面上看,application context 如同 bean factory 一样具有 bean 定义、bean 关联关系的设置, 根据请求分发 bean 的功能。但 application context 在此基础上还提供了其他的功能。
提供了支持国际化的文本消息;
统一的资源文件读取方式;
已在监听器中注册的 bean 的事件

4、Spring 提供几种配置方式来设置元数据?
将 Spring 配置到应用开发中有以下三种方式:
1.基于 XML 的配置
2.基于注解的配置
3.基于 Java 的配置

5、如何用基于 Java 配置的方式配置 Spring?

Spring 对 Java 配置的支持是由@Configuration 注解和@Bean 注解来实现的。
由@Bean 注解的方法将 会实例化、配置和初始化一个新对象,这个对象将由 Spring 的 IOC 容器来管理。
@Bean 声明所起到的 作用与 元素类似。
被@Configuration 所注解的类则表示这个类的主要目的是作为 bean 定义的资源。 被@Configuration 声明的类可以通过在同一个类的内部调用@bean 方法来设置嵌入 bean 的依赖关 系。

6、怎样用注解的方式配置 Spring?

1.@Required:该注解应用于设值方法。
2.@Autowired:该注解应用于有值设值方法、非设值方法、构造方法和变量。
3.@Qualifier:该注解和@Autowired 注解搭配使用,用于消除特定 bean 自动装配的歧义。
4.JSR-250 Annotations:Spring 支持基于 JSR-250 注解的以下注解,@Resource、@PostConstruct 和 @PreDestroy。

7、请解释 Spring Bean 的生命周期?

8、Spring Bean 作用域之间的区别?

1.singleton:这种 bean 范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个 bean 的实例,单例的模式由 bean factory 自身来维护。

2.prototype:原形范围与单例范围相反,为每一个 bean 请求提供一个实例。

3.request:在请求 bean 范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以后,bean 会失效并被垃圾回收器回收。

4.Session:与请求范围类似,确保每个 session 中有一个 bean 的实例,在 session 过期后,bean 会随之失效。

5.global-session:global-session 和 Portlet 应用相关。当你的应用部署在 Portlet 容器中工 作时,它包含很多 portlet。如果你想要声明让所有的 portlet 共用全局的存储变量的话,那么这全 局变量需要存储在 global-session 中。 全局作用域与 Servlet 中的 session 作用域效果相同。

9、Spring 框架中的单例 Beans 是线程安全的么?


10、FileSystemResource 和 ClassPathResource 有何区别?

11、Spring 框架中都用到了哪些设计模式?

1、代理模式—在 AOP 和 remoting 中被用的比较多。

2、单例模式:在 spring 配置文件中定义的 bean 默认为单例模式。

3、模板模式:用来解决代码重复的问题。 比如. RestTemplate, JmsTemplate, JpaTemplate。

4、委派模式:Srping 提供了 DispatcherServlet 来对请求进行分发。

5、工厂模式:BeanFactory 用来创建对象的实例,贯穿于 BeanFactory / ApplicationContext 接 口的核心理念。

6、代理模式:AOP 思想的底层实现技术,Spring 中采用 JDK Proxy 和 CgLib 类库。

12、在 Spring 框架中如何更有效的使用 JDBC?

使用 Spring JDBC 框架,资源管理以及错误处理的代价都会减轻。开发人员只需通过 statements 和 queries 语句从数据库中存取数据。Spring 框架中通过使用模板类能更有效的使用 JDBC,也就是所谓 的 JdbcTemplate。

13、请解释下 Spring 框架中的 IOC?

BeanFactory 接 口 提 供 了 一 个 先 进 的 配 置 机 制 , 使 得 任 何 类 型 的 对 象 的 配 置 成 为 可 能 。 ApplicationContex 接口对 BeanFactory(是一个子接口)进行了扩展,在 BeanFactory 的基础上 添加了其他功能,比如与 Spring 的 AOP 更容易集成,也提供了处理 message resource 的机制(用于 国际化)、事件传播以及应用层的特别配置,比如针对 Web 应用的 WebApplicationContext。

spring源码分析第六天------spring经典面试问题相关推荐

  1. Spring源码分析3 — spring XML配置文件的解析流程

    1 介绍 创建并初始化spring容器中,关键一步就是读取并解析spring XML配置文件.这个过程比较复杂,本文将详细分析整个流程.先看涉及到的关键类. XmlWebApplicationCont ...

  2. Spring源码分析4 — spring bean创建和初始化

    1 介绍 创建并初始化spring容器中,refresh()方法中解析xml配置文件,注册容器后处理器,bean后处理器,初始化MessageSource,ApplicationEventMultic ...

  3. spring源码分析之spring注解@Aspect是如何工作的?

    AOP(Aspect Orient Programming),面向切面编程,是面向对象编程OOP的一种补充.面向对象编程是从静态角度考虑程序的结构,面向切面编程是从动态的角度考虑程序运行过程. AOP ...

  4. spring源码分析之spring jmx

    JMX架构定义: https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/architecture.html Archi ...

  5. Spring源码分析(三)

    Spring源码分析 第三章 手写Ioc和Aop 文章目录 Spring源码分析 前言 一.模拟业务场景 (一) 功能介绍 (二) 关键功能代码 (三) 问题分析 二.使用ioc和aop重构 (一) ...

  6. Spring 源码分析衍生篇十 :Last-Modified 缓存机制

    文章目录 一.前言 二.Last-Modify 三.实现方案 1. 实现 org.springframework.web.servlet.mvc.LastModified接口 1.1. 简单演示 1. ...

  7. Spring 源码分析 (一)——迈向 Spring 之路

    一切都是从 Bean 开始的 在 1996 年,Java 还只是一个新兴的.初出茅庐的编程语言.人们之所以关注她仅仅是因为,可以使用 Java 的 Applet 来开发 Web 应用.但这些开发者很快 ...

  8. spring源码分析第四天------springmvc核心原理及源码分析

    spring源码分析第四天------springmvc核心原理及源码分析 1.基础知识普及 2. SpringMVC请求流程 3.SpringMVC代码流程 4.springMVC源码分析 4.1 ...

  9. Spring源码分析八:Mybatis ORM映射框架原理

    文章目录 (一)Mybatis单独操作数据库程序 1.1.数据库表 1.2.建立PO 1.3.建立mapper接口映射 1.4.建立Mybatis配置文件 1.5.建立mapper映射文件 1.6.测 ...

最新文章

  1. java中源代码的类_java中源代码功能了解
  2. Tensorflow 可视化 TensorBoard 尝试~
  3. Tomcat绿色版启动startup.bat一闪问题的解决方法!
  4. js 常用的正则表达式
  5. flowable实战(十一)flowable 删除数据库表先后顺序
  6. Magic Odd Square 思维
  7. 大数据时代的医学公共数据库与数据挖掘技术简介
  8. 电商后台之【商品管理系统】
  9. 使用docker搭建couchbase集群
  10. 浦江县教育计算机网上网认证系统,上网认证系统使用说明
  11. mysql数据血缘分析,数仓字段血缘解析实现—hive版
  12. Region Proposal Networks 详解
  13. Mybatis学习之路(二):property元素应用
  14. 支付宝直付通实现账单结算(分账)功能完整Demo
  15. 苹果开发者注册了邓白氏编码不能用,查询时提示该组织不存在怎么办?
  16. win10 C盘满 清理终极大法
  17. 转自博客园:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html
  18. PS打开时显示程序出错
  19. TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5
  20. Excel 中的协方差阵

热门文章

  1. Java对象都是在堆上分配空间吗?答案竟然是...
  2. 第六章 计算机性能测试
  3. CentOS 7 利用Docker搭建禅道系统
  4. c++11特性move和forward区别
  5. oracle sql loop merge,Oracle之存储过程和MERGE INTO语句
  6. Oracle和sql语言,SQL语言的四种类型和ORACLE运算符
  7. spring定时器突然不执行了_非标自动化设备之PLC定时器的时间和程序扫描周期
  8. iphone7尺寸_iPhone 12 mini、12 Pro Max真机对比图赏:尺寸直观感受下
  9. 数据立方体_立方体纹理
  10. 上位机与1200组态步骤_西门子1200的HSC的应用实例!