Spring 面试题

Java面试中的Spring方面问题

一、IOC(Inverse of Control)控制反转
1.依赖注入DI(dependency injection)

所谓依赖,从程序的角度看,就是比如 A 要调用 B 的方法,那么 A 就依赖于 B,反正 A 要用到 B,则 A 依赖于 B。所谓倒置,你必须理解如果不倒置,会怎么着,因为 A 必须要有 B,才可以调用 B,如果不倒置,意思就是 A 主动获取 B 的实例:B b = new B (),这就是最简单的获取 B 实例的方法(当然还有各种设计模式可以帮助你去获得 B 的实例,比如工厂、Locator 等等),然后你就可以调用 b 对象了。所以,不倒置,意味着 A 要主动获取 B,才能使用 B;到了这里,就应该明白了倒置的意思了。倒置就是 A 要调用 B 的话,A 并不需要主动获取 B,而是由其它人自动将 B 送上门来。

2.IOC思想

java 程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,在使用其他的合作对象时,均要使用像 new object() 这样的语法来完成合作对象的申请工作。你会发现:对象间的耦合度高了。而 IOC 的思想是:**Spring 容器来实现这些相互依赖对象的创建、协调工作。对象只需要关心业务逻辑本身就可以了。**从这方面来说,对象如何得到他的协作对象的责任被反转了(IOC、DI)。

IOC和DI是代表的含义是类似的

3.spring的容器

在 Spring 容器启动的时候,Spring 会把你在 application.xml 中配置好的 bean 都初始化,在你需要调用的时候,把已经初始化的 bean 分配给你要调用这些 bean 的类,而不用去创建一个对象的实例。

Ioc 的常见容器是:ApplicationContext 和 BeanFactory

4.IOC 是基于 java 的反射机制以及工厂模式实现的。

二、AOP(面向切面编程)
1.分离关注点

面向切面编程的目的是分离关注点,通俗的说是指使用 aop 你可以一心关注你的正事,而其他的事交给别人处理

AOP (面向切面编程) 技术利用一种称为 “横切” 的技术,解剖封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,这样就能减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

2.横切关注点

AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。

比如提供的事务管理机制,事务管理就是一个关注点,你的正事就是去访问数据库(核心关注点),而你不想管事务(横切关注点),所以,Spring 在你访问数据库之前,自动帮你开启事务,当你访问数据库结束之后,自动帮你提交 / 回滚事务!

3.aop采用的技术

一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;

二是采用静态织入的方式,引入特定的语法创建 “方面”,从而使得编译器可以在编译期间织入有关 “方面” 的代码。这里静态织入的原理就是在编译期间,切面直接以字节码形式编译到目标字节码中
————————————————
版权声明:本文为CSDN博主「温柔的谢世杰」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33945246/article/details/102718406

https://www.cnblogs.com/threetop/p/9474016.html

1、一般问题
1.1. 不同版本的 Spring Framework 有哪些主要功能?
VersionFeatureSpring 2.5发布于 2007 年。这是第一个支持注解的版本。Spring 3.0发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。Spring 4.0发布于 2013 年。这是第一个完全支持 JAVA8 的版本。

1.2. 什么是 Spring Framework?
Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。

它是轻量级、松散耦合的。

它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。

它可以集成其他框架,如 Structs、Hibernate、EJB 等,所以又称为框架的框架。

1.3. 列举 Spring Framework 的优点。
由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。
Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续集成和可测试性。
由于依赖注入和控制反转,JDBC 得以简化。
它是开源免费的。
1.4. Spring Framework 有哪些不同的功能?
轻量级 - Spring 在代码量和透明度方面都很轻便。
IOC - 控制反转
AOP - 面向切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。
容器 - Spring 负责创建和管理对象(Bean)的生命周期和配置。
MVC - 对 web 应用提供了高度可配置性,其他框架的集成也十分方便。
事务管理 - 提供了用于事务管理的通用抽象层。Spring 的事务支持也可用于容器较少的环境。
JDBC 异常 - Spring 的 JDBC 抽象层提供了一个异常层次结构,简化了错误处理策略。
1.5. Spring Framework 中有多少个模块,它们分别是什么?

Spring 核心容器 – 该层基本上是 Spring Framework 的核心。它包含以下模块:
Spring Core
Sp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值