77道Spring⾯试题以及参考答案(2021年最新版),java开发项⽬经理⾯试题③. 声明式事务的⽀持
只需要通过配置就可以完成对事务的管理,⽽⽆需⼿动编程。
④. ⽅便程序的测试
Spring对Junit4⽀持,可以通过注解⽅便的测试Spring程序。
⑤. ⽅便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接⽀持(如:Struts、Hibernate、MyBatis等)。
⑥. 降低JavaEE API的使⽤难度
Spring对JavaEE开发中⾮常难⽤的⼀些API(JDBC、JavaMail、远程调⽤等),都提供了封装,使这些API应⽤难度⼤⼤降低。
缺点
Spring明明⼀个很轻量级的框架,却给⼈感觉⼤⽽全
Spring依赖反射,反射影响性能
使⽤门槛升⾼,⼊门Spring需要较长时间
4. Spring有哪些应⽤场景
应⽤场景:JavaEE企业应⽤开发,包括SSH、SSM等
Spring价值:
Spring是⾮侵⼊式的框架,⽬标是使应⽤程序代码对框架依赖最⼩化;
Spring提供⼀个⼀致的编程模型,使应⽤直接使⽤POJO开发,与运⾏环境隔离开来;
Spring推动应⽤设计风格向⾯向对象和⾯向接⼝开发转变,提⾼了代码的重⽤性和可测试性;
5. Spring由哪些模块组成?
Spring 总共⼤约有 20 个模块, 由 1300 多个不同的⽂件构成。 ⽽这些组件被分别整合在核⼼容器(Core Container) 、
AOP(Aspect Oriented Programming)和设备⽀持(Instrmentation) 、数据访问与集成(Data Access/Integeration) 、 Web、消息(Messaging) 、 Test等 6 个模块中。 以下是 Spring 5 的模块结构图:
spring core:提供了框架的基本组成部分,包括控制反转(Inversion of Control,IOC)和依赖注⼊(Dependency
Injection,DI)功能。
spring beans:提供了BeanFactory,是⼯⼚模式的⼀个经典实现,Spring将管理对象称为Bean。
spring context:构建于 core 封装包基础上的 context 封装包,提供了⼀种框架式的对象访问⽅法。
spring jdbc:提供了⼀个JDBC的抽象层,消除了烦琐的JDBC编码和数据库⼚商特有的错误代码解析, ⽤于简化JDBC。
java xml是什么spring aop:提供了⾯向切⾯的编程实现,让你可以⾃定义、切点等。
spring Web:提供了针对 Web 开发的集成特性,例如⽂件上传,利⽤ servlet listeners 进⾏ ioc 容器初始化和针对 Web 的ApplicationContext。
spring test:主要为测试提供⽀持的,⽀持使⽤JUnit或TestNG对Spring组件进⾏单元测试和集成测试。
6. Spring 框架中都⽤到了哪些设计模式?
1. ⼯⼚模式:BeanFactory就是简单⼯⼚模式的体现,⽤来创建对象的实例;
2. 单例模式:Bean默认为单例模式。
3. 代理模式:Spring的AOP功能⽤到了JDK的动态代理和CGLIB字节码⽣成技术;
4. 模板⽅法:⽤来解决代码重复的问题。⽐如. RestTemplate, JmsTemplate, JpaTemplate。
5. 观察者模式:定义对象键⼀种⼀对多的依赖关系,当⼀个对象的状态发⽣改变时,所有依赖于它的对象都会得到通知被制动更新,如
Spring中listener的实现–ApplicationListener。
7. 详细讲解⼀下核⼼容器(spring context应⽤上下⽂) 模块
这是基本的Spring模块,提供spring 框架的基础功能,BeanFactory 是 任何以spring为基础的应⽤的核⼼。Spring 框架建⽴在此模块之上,它使Spring成为⼀个容器。
Bean ⼯⼚是⼯⼚模式的⼀个实现,提供了控制反转功能,⽤来把应⽤的配置和依赖从真正的应⽤代码中分离。最常⽤的就是
org.springframework.l.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 应⽤程序有哪些不同组件?
Spring 应⽤⼀般有以下组件:
接⼝ - 定义功能。
Bean 类 - 它包含属性,setter 和 getter ⽅法,函数等。
Bean 配置⽂件 - 包含类的信息以及如何配置它们。
Spring ⾯向切⾯编程(AOP) - 提供⾯向切⾯编程的功能。
⽤户程序 - 它使⽤接⼝。
10. 使⽤ Spring 有哪些⽅式?
使⽤ Spring 有以下⽅式:
作为⼀个成熟的 Spring Web 应⽤程序。
作为第三⽅ Web 框架,使⽤ Spring Frameworks 中间层。
作为企业级 Java Bean,它可以包装现有的 POJO(Plain Old Java Objects)。
⽤于远程使⽤。
⼆、Spring控制反转(IOC)
=================
1. 什么是Spring IOC 容器?
控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调⽤权交给容器,通过容器来实现对象组件的装配和管
【⼀线⼤⼚Java⾯试题解析+后端开发学习笔记+最新架构讲解视频+实战项⽬源码讲义】
浏览器打开:qq.hn/FTf 免费领取
理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本⾝转移到了外部容器。
Spring IOC 负责创建对象,管理对象(通过依赖注⼊(DI),装配对象,配置对象,并且管理这些对象的整个⽣命周期。
2. 控制反转(IoC)有什么作⽤
管理对象的创建和依赖关系的维护。对象的创建并不是⼀件简单的事,在对象关系⽐较复杂时,如果依赖关系需要程序猿来维护的话,那是相当头疼的
解耦,由容器去维护具体的对象
托管了类的产⽣过程,⽐如我们需要在类的产⽣过程中做⼀些处理,最直接的例⼦就是代理,如果有容器程序可以把这部分处理交给容器,应⽤程序则⽆需去关⼼类是如何完成代理的
3. IOC的优点是什么?
IOC 或 依赖注⼊把应⽤的代码量降到最低。
它使应⽤容易测试,单元测试不再需要单例和JNDI查机制。
最⼩的代价和最⼩的侵⼊性使松散耦合得以实现。
IOC容器⽀持加载服务时的饿汉式初始化和懒加载。
4. Spring IoC 的实现机制
Spring 中的 IoC 的实现原理就是⼯⼚模式加反射机制。
⽰例:
interface Fruit {
public abstract void eat();
}
class Apple implements Fruit {
public void eat(){
System.out.println(“Apple”);
}
}
class Orange implements Fruit {
public void eat(){
System.out.println(“Orange”);
}
}
class Factory {
public static Fruit getInstance(String ClassName) {
Fruit f=null;
try {
f=(Fruit)Class.forName(ClassName).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return f;
}
}
class Client {
public static void main(String[] a) {
Fruit Instance(“io.github.dunwu.spring.Apple”);
if(f!=null){
f.eat();
}
}
}
5. Spring 的 IoC⽀持哪些功能
Spring 的 IoC 设计⽀持以下功能:
依赖注⼊
依赖检查
⾃动装配
⽀持集合
指定初始化⽅法和销毁⽅法
⽀持回调某些⽅法(但是需要实现 Spring 接⼝,略有侵⼊)
其中,最重要的就是依赖注⼊,从 XML 的配置上说,即 ref 标签。对应 Spring RuntimeBeanReference 对象。对于 IoC 来说,最重要的就是容器。容器管理着 Bean 的⽣命周期,控制着 Bean 的依赖注⼊。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论