ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1.Spring面试题(2)

2022-07-23 18:03:29  阅读:30  来源: 互联网

标签:容器 面试题 spring Spring bean AOP 注入


文档中的知识点:

1.bean标签范围配置:singleton,prototype,request,session,global-session

2.bean实例化的三种方式:

(1)(1)使用无参构造方法实例化 (2)工厂静态方法实例化 (3)工厂实例方法实例化

3.bean的依赖注入方式:

(1)构造方法 (2)setter方法 / setter方法:P命名空间注入 

4.bean的依赖注入的数据类型:普通数据类型,引用数据类型,集合数据类型

5.applicationContext的实现类:ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,AnnotationConfigApplicationContext

Spring注解开发:

1.Spring原始注解:Spring原始注解主要是替代的配置

@Component:使用在类上用于实例化bean

@Controller:web层类上 @Service:service层类上 @Repository:dao层类上

@Autowired:使用在字段上根据类型依赖注入   @Qualifier:结合@Autowired一起使用,用于根据名称进行依赖注入   @Resource:相当于@Autowired+@Qualifier,按照名                                                                                                                                                                                                                     称进行注入

@Value:注入普通属性(用于注入基本数据类型和String数据类型的属性)

@Scope:标注bean的作用范围

@PostConstruct:使用在方法上,标注该方法是bean的初始化方法   @PreDestroy:使用在方法上,标注该方法是bean的销毁方法

Spring AOP:

1.Spring AOP的底层实现:AOP的底层是通过Spring提供的动态代理技术实现的

2.Spring采用动态代理织入,而AspectJ采用编译器织入和类装载期织入

3.AOP底层实现:基于jdk的动态代理 和 基于Cglib的动态代理

4.基于xml的AOP开发和基于注解的AOP开发

 

一、Spring概述


1. 什么是spring?

2. Spring框架的设计目标,设计理念,和核心是什么?
3. Spring的优缺点是什么?

优点:

(1)spring的DI机制将对象之间的依赖关系交由框架处理,降低了组件之间的耦合性;

(2)Spring提供了AOP技术,支持将一些通用任务,如事务、安全、日志、权限等进行集中式管理,从而提供更好的复用。

(3)spring对于主流的应用框架提供了集成支持。


4. Spring有哪些应用场景

场景一: 记录日志
场景二: 监控方法运行时间 (监控性能)
场景三: 权限控制
场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )
场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )

说明:

jdk动态代理是接口的重写(适用于实现接口的类,spring aop的默认实现)

cglib动态代理是类的继承

提示:aop本质是动态对方法增强,避免代码入侵,优雅的实现横向扩展,是对oop的补充


5. Spring由哪些模块组成?

 

 每个模块的功能:

Core,Context,AOP,DAO,Web,MVC,ORM

  1. 核心容器(Spring Core):提供了Spring 框架的核心功能。BeanFactory 是 Spring 核心容器的主要组件。它提供控制反转将应用程序的配置和依赖性规范与实际的应用程序代码分开,这是整个Spring的基础。
  2. Spring Context:提供配置文件,向 Spring 框架提供上下文信息。它构建再BeanFactory 之上,另外增加了国际化,资源访问等功能。
  3. Spring AOP:Spring 提供了面向切面编程的功能,因为Spring 的核心是基于控制反转的,Spring的依赖注入为AOP提供支持。
  4. Spring DAO:提供了一个简单有效的JDBC应用。
  5. Spring ORM:对其他一些ORM框架提供支持,如:JDO,Hibernate和iBatis等。
  6. Spring Web: 提供了简化的处理多部分请求以及将请求参数绑定到域对象的任务。
  7. Spring MVC:提供了MVC模式。


6. Spring 框架中都用到了哪些设计模式?

Spring设计模式的详细使用案例可以阅读这篇文章:Spring中所使用的设计模式_张维鹏的博客-CSDN博客_spring使用的设计模式

(1)工厂模式:Spring使用工厂模式,通过BeanFactory和ApplicationContext来创建对象

(2)单例模式:Bean默认为单例模式

(3)策略模式:例如Resource的实现类,针对不同的资源文件,实现了不同方式的资源获取策略

(4)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术

(5)模板方法:可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中,用来解决代码重复的问题。比如RestTemplate, JmsTemplate, JpaTemplate

(6)适配器模式:Spring AOP的增强或通知(Advice)使用到了适配器模式,Spring MVC中也是用到了适配器模式适配Controller

(7)观察者模式:Spring事件驱动模型就是观察者模式的一个经典应用。

(8)桥接模式:可以根据客户的需求能够动态切换不同的数据源。比如我们的项目需要连接多个数据库,客户在每次访问中根据需要会去访问不同的数据库


7. 详细讲解一下核心容器(spring context应用上下文) 模块

这是基本的Spring模块,提供spring 框架的基础功能,BeanFactory 是 任何以spring为基础的应用的核心。Spring 框架建立在此模块之上,它使Spring成为一个容器。

Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置依赖从真正的应用代码中分离。最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根据XML文件中的定义加载beans。该容器从XML 文件读取配置元数据并用它去创建一个完全配置的系统或应用。


8. Spring框架中有哪些不同类型的事件

Spring 提供了以下5种标准的事件:

(1)上下文更新事件(ContextRefreshedEvent):在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。

(2)上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。

(3)上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。

(4)上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。

(5)请求处理事件(RequestHandledEvent):在Web应用中,当一个http请求(request)结束触发该事件。

如果一个bean实现了ApplicationListener接口,当一个ApplicationEvent 被发布以后,bean会自动被通知。


9. Spring 应用程序有哪些不同组件?
10. 使用 Spring 有哪些方式? 

使用 Spring 有以下方式:

作为一个成熟的 Spring Web 应用程序。

作为第三方 Web 框架,使用 Spring Frameworks 中间层。

用于远程使用。

作为企业级 Java Bean,它可以包装现有的 POJO(Plain Old Java Objects)

 

二、Spring控制反转(IOC)

1. 什么是Spring IOC 容器?2. 控制反转(IoC)有什么作用

Spring IoC负责创建对象、管理对象(通过依赖注入(DI)、装配对象、配置对象,并且管理这些对象的整个生命周期。

控制反转的作用:将对象的控制权交给Spring,降低了对象之间的耦合度


3. IOC的优点是什么?
4. Spring IoC 的实现机制
5. Spring 的 IoC支持哪些功能
6. BeanFactory 和 applicationContext有什么区别?
7. Spring 如何设计容器的,BeanFactory和applicationContext的关系详解
8. applicationContext通常的实现是什么?
9. 什么是Spring的依赖注入?
10. 依赖注入的基本原则
11. 依赖注入有什么优势
12. 有哪些不同类型的依赖注入实现方式?
13. 构造器依赖注入和 Setter方法注入的区别 作者:java领域 https://www.bilibili.com/read/cv16390122 出处:bilibili

 

标签:容器,面试题,spring,Spring,bean,AOP,注入
来源: https://www.cnblogs.com/midiyu/p/16512617.html

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有