IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java 面试知识点突击-(41-50) -> 正文阅读

[Java知识库]java 面试知识点突击-(41-50)

前言

??如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
??而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


java 面试知识点突击-(41-50)

41 如何实现一个IOC容器的思路?

  1. 配置文件、配置包扫描路径;
  2. 递归包扫描,获取.class文件信息;
  3. 反射、确定需要交给IOC管理的类;
  4. 对需要注入的类进行依赖注入;

42 spring 是 什么?

轻量级的 控制反转(IOC)和面向切面(AOP) 的框架,用来装javaBean,中间层框架(起连接作用)。

  1. 大小和开销方面都是轻量级的;
  2. 通过IOC实现松耦合,不需要对象之间进行长依赖,降低代码之间的耦合性;
  3. AOP提供了面向切面编程的丰富支持;
  4. 包含并管理应用对象 bean的生命周期;
  5. 将简单的组件配置,组成复杂的应用;

43 对 spring AOP的理解?

AOP:面向切面编程,目的是为了解耦
即将程序中的交叉业务逻辑(日志、事务、安全等)封装成切面注入到对象(业务逻辑)中去。
概念:
1、切面
使用@Aspect 声明一个切面
2、建言
使用@before,@After,@Around等注解建立建言
建言执行顺序:
在这里插入图片描述
当同一个方法被多个注解了@Aspect的类拦截时,可以通过@Order指定Aspect类的执行顺序,此时的执行顺序为:
在这里插入图片描述
3、切点
拦截规则为切点(PointCut)
4、连接点
符合条件的每一个连接处


44 对spring IOC 的理解?

依赖注入 :一种设计思想(IOC就是典型的工厂模式。)

指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合。
即由Ioc容器来控制对 象的创建。

对IOC的理解主要有三个方面:容器概念、控制反转、依赖注入

44::01 容器概念

第一步(存):用来存放java中各种对象(javaBean),实际上就是一个BeanDefinitionMap<beanName,BeanDefinition>(生成各种class的bean定义)[beanDefinition对象(描述bean实例化的各个属性)]

第二步(用):在通过DI(依赖注入),把属性往对象里面注入,即给对象赋值。

44::02 控制反转

全部对象的控制权全部由IOC控制,对象与对象之间没有直接联系,可以比喻成粘合剂。

44::03 依赖注入

实现控制反转的手段,依赖注入是实现IOC的方法
即获得依赖对象的过程由自身管理变为由IOC容器主动注入。


45 spring IOC 为什么是控制反转的?

因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象


46 BeanFactory和ApplicatinContext有什么区别?

  1. ApplicatinContext是BeanFactory的子接口;
  2. ApplicatinContext所提供的功能比BeanFactory要多,如:提供在监听器中注册bean事件、统一的资源文件访问方式、同时加载多个配置文件、载入多个上下文等等…;
  3. BeanFactory采用延迟加载的方式,只有使用的时候该bean才会实例化,
    而ApplicatinContext是在容器启动的时候,一次性创建所有的bean;
  4. ApplicatinContext不足的地方是占用内存空间,启动比较慢;
  5. BeanFactory通常是用编程的方式来实现,而ApplicatinContext还能以声明式的方式来实现;
  6. BeanFactory手动注册,ApplicatinContext是自动注册;

47 描述一下 spring bean的生命周期?

准备:
1)、解析类得到BeanDefinition(bean定义)
2)、如果有多个构造方法,那么推断构造方法;
3)、确定构造方法,实例化,得到bean对象
4)、对对象中加了@Autowired注解的属性进行依赖注入(属性填充);
5)、回调aware方法,比如BeanNameAware、BeanFactoryAware;
6)、调用BeanPostProcessor的初始化的前方法【后置处理器的前处理】.;
7)、调用初始化方法;
8)、调用BeanPostProcessor(英:bean+post+p+rou+cai +ser)的初始化的后方法,在这里进行AOP(动态代理的创建);
9)、如果当前创建的bean是单例,则会把bean放入单例池中。;
使用:
10)、使用bean;
11)、spring 容器关闭时,调用DisposableBean 中的的destory()方法销毁;


48 解释一下spring支持的几种bean的作用域?

7种,默认的是单例模式(singleto),
即每个容器中只有一个bean的实例,单例模式由BeanFactory自身维护,生命周期与IOC一致。

prototype模式:每次注入,都会创建一个新的对象,即在容器中就有多个实例;

request模式: 每个http请求中创建一个单例对象,即在单个请求中复用这个单例对象;

session模式: 确保每个session中有一个bean的单例实例对象,session过期后,bean随之消失;

application模式: bean被定义为ServletContext(Servlet容器,不是spring容器)的生命周期中复用一个单例对象,就可以跨IOC容器;

websocket模式:bean被定义为websocket的生命周期中复用一个单例对象;

还有一个global-session模式:全局session作用域,不过现在不怎么用了。


49 spring 框架中的单例Bean是线程安全的吗?

不安全。
默认状态,spring的bean 是单例模式,框架并没有对bean进行线程安全的处理。

当 bean有状态时,即有数据存储功能;
是线程不安全的,使用prototype模式,即每次注入,都会创建一个对象,即new Bean 就可以解决这个问题,或者其他操作。
例子:

Dao层操作数据库Connection,Connection是带有状态的,比如数据库事务,
Spring 的事务管理器使用ThreadLocal为不同的线程维护了一个独立的Connection副本

当bean无状态时,即无数据存储功能,是线程安全的;


50 Spring 框架中都用到哪些设计模式?

简单工厂;由一个工厂类根据传入的参数,动态决定应该由哪一个产品
Spring 中的 BeanFactory

工厂方法:
实现了FactoryBean接口的bean是一类叫做factory的bean

单例模式:
spring中的bean

装饰器模式:动态地给一个对象添加一些额外的职责。
spring 中凡是类名包含Wrapper和Decorator

动态代理:
Spring AOP

观察者模式:
spring中监听器

策略模式:
spring框架中访问Resource接口


创作不易、点关注、不迷路

点击主页、更精彩 !!!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:50:19  更:2021-12-18 15:52:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:32:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码