栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面试——【6-10】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面试——【6-10】

文章目录
  • 面试高频[6—10]
    • 1 说说Spring的核心及优势
      • 1、1 Spring核心
      • 1、2 Spring优势
    • 2 说说你对AOP、IOC的理解
      • 2、1 AOP
      • 2、2 IOC
    • 3 BeanFactory和ApplicationContext区别
    • 4 谈谈Spring bean的生命周期
    • 5 bean的作用域

面试高频[6—10] 1 说说Spring的核心及优势 1、1 Spring核心

Spring是一个开源框架,主要是为了简化企业开发。
Spring是一个IOC和AOP的容器框架,核心是IOC和AOP。

  • IOC:控制反转
  • AOP:面向切面编程
  • 容器:包含管理应用对象(bean)的生命周期【仓库,用于存储管理bean对象】
1、2 Spring优势
  1. Spring通过DI(依赖注入)、AOP和消除模板样式代码来简化JavaEE开发
  2. 独立于各种应用服务器,基于Spring框架的应用,可以真正实现“一次编写,处处运行”
  3. Spring的IOC容器降低了对象之间的耦合,实现组件之间的解耦
  4. Spring的AOP支持将一些通用的任务和安全、事务、日志等进行集中式处理,提高复用性
  5. Spring的ORM和DAO,简化了底层数据库的访问
  6. 作为“粘合剂”,开发者可自由选用Spring的部分

扩展:
Spring5.x 主要包含模块:
(1)Core Container- 核心容器【spring-core、spring-beans、spring-context…】
(2)AOP- 面向切面支持【spring-aop、spring-aspects】
(3)WEB(MVC)-JavaWeb【spring-web、spring-webmvc、spring-websocket…】
(4)Data Access/Integration- 数据访问/集成【spring-jdbc、spring-tx、spring-oxm、spring-jms】
(5)Test-测试【spring-tx】

2 说说你对AOP、IOC的理解 2、1 AOP

AOP(Aspect Oriented Programming)面向切面编程。

  • Advice(通知):想要添加的功能,安全、事务、日志等
  • Join Point(连接点):允许我们增强的地方,方法执行的前后等【候选人】
    • Pointcut(切点):我们具体要增强的地方【被选中的人,”天选之子“】
  • Aspect(切面):通知和切入点的结合【切入点:具体我们要增强的地方,”被选中的候选人“】
  • introduction(引入):允许我们向现有的类添加新方法属性
  • target(目标):目标类,我们要通知的对象,增强的对象
  • proxy(代理):通过代理实现具体增强功能【两种:JDK动态代理、CGLIB】
  • Weaving(织入):把切面应用到目标对象来创建新的代理对象的过程

AOP:将与业务无关的,比如日志、事务、权限等核心服务组件,这些核心服务组件经常融入到具体的业务逻辑中,如果我们为每一个具体业务逻辑操作都添加这样的代码,代码会太过冗余。因此,SpringAOP将这些公共的代码逻辑抽象出来变成一个切面,然后注入到目标对象(具体业务)中。【相当于“盔甲”,给士兵进行增强】

2、2 IOC
  • 谁控制谁:在之前的编码过程中,都是需要什么对象自己去创建什么对象,有程序员自己来控制对象,而有了IOC容器之后,就会变成由IOC容器来控制对象,
  • 控制什么:在实现过程中所需要的对象及需要依赖的对象
  • 什么是反转:在没有IOC容器之前我们都是在对象中主动去创建依赖的对象,这是正转的,而有了IOC之后,依赖的对象直接由IOC容器创建后注入到对象中,由主动创建变成了被动接受,这是反转
  • 哪些方面被反转:依赖的对象
3 BeanFactory和ApplicationContext区别

BeanFactory是ApplicationContext的父接口

相同点

  1. Spring提供了两种不同的IOC容器,BeanFactory和ApplicationContext,它们都是接口,ApplicationContext继承BeanFactory(ApplicationContext继承ListableBeanFactory)
  2. 都可以用XML配置属性,也支持属性自动注入
  3. BeanFactory和ApplicationContext都提供了一种方式,使用getBean(“bean name”)获取bean
    不同点:
  4. 当调用getBean()方法时,BeanFactory才实例化bean,而ApplicationContexct在容器启动时就实例化单例bean【BeanFactory:”懒汉式“,ApplicationContext:”饿汉式“】
  5. BeanFactory提供基本的IOC和DI(依赖注入)功能,而ApplicationContext提供更高级功能。(ApplicationContext更高级)
4 谈谈Spring bean的生命周期

  1. 实例化bean
  2. bean属性赋值
  3. 检查Aware相关接口并设置相关依赖,如果对象中需要引用容器内部对象,则调用aware接口的子类方法进行统一设置【BeanNameAware:Bean获取自己在BeanFactory配置中的名字(根据情况是id或者name)】
  4. BeanPostProcessor的前置处理
  5. 判断当前bean对象是否设置了InitialingzingBean接口,然后进行属性的设置基本工作
  6. 自定义的初始化方法(如果定义了)
  7. BeanPostProcessor后置处理
  8. 获取并使用bean
  9. 是否实现DisposableBean接口,并调用具体方法来进行对象销毁工作
  10. 判断是否有自定义的destroy方法 (如果有便调用)
5 bean的作用域

①singleton(单例)

IOC仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例

②prototype(原型)

IOC容器创建多个Bean实例,每次返回的都是一个新的实例

③request

仅对HTTP请求产生作用,每次HTTP请求会创建一个新的Bean,适用于WebApplicationContext环境

④session

同一个Session共享一个Bean实例

⑤global-session

仅用于Http Session,所有的Session共享一个Bean

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/867029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号