阿里大佬的Spring面试题知识点总结 (一)

92 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1.什么是Spring?

Spring是一个生态。 Spring是一个轻量级的开源容器框架。 Spring是为了解决企业级应用的业务逻辑层和其他各层对象之间,对象和对象之间的耦合问题。 Spring是一个IOCAOP容器框架。 IOC:控制反转 AOP:面向切面编程 容器:包含并管理应用对象生命周期

2.Spring的优缺点是什么?

优点:

  1. 方便解构,简化开发。 集中管理对象,对象和对象之间的耦合度降低,方便维护。

  2. AOP编程的支持 在不改代码的情况下可以对代码进行增强,减少重复,提高效率,减少重复。

  3. 声明式事务支持 提高效率

  4. 方便测试 可以结合JUnit方便的进行程序测试。

  5. 方便集成各种优秀框架 集成能力强,简单配置即可使用第三方框架。

  6. 集合了很多功能性代码

  7. JAVA源码是经典学习范例

学习Spring底层实现,反射、设计模式等,。提供了非常多的扩展接口,供外部扩展。

缺点:

  • 从应用层面来说没有缺点
  • 简化开发,如果想深入到底层去了解非常困难。(上层使用简单,底层复杂)
  • 经过多年迭代,代码量非常庞大,给更新带来困难。

3. Spring IOC 的作用

控制反转,将对象的管理从程序员新建转变为Spring的IOC去新建,集中管理对象,方便维护,特别适合单例。

4. Spring IOC 的优点

  1. 集中管理对象,方便维护。
  2. 解耦,默认创建对象为单例,支持懒汉式和饿汉式。

5. Spring IOC的实现机制是什么?

工厂+反射的机制实现的。

Spring IOC和DI(依赖注入)的区别: DI是IOC中重要的一环。

6. 紧耦合和松耦合有什么区别

高耦合:类之间高度依赖。 松耦合:通过单一职责,关注点分离,依赖倒置原则来实现。

7. BeanFactory的作用

  • BeanFactory是Spring中非常核心的一个接口
  • 它是Bean的工厂,它的主要职责就是生产Bean;
  • 它实现了简单工厂的设计模式,通过getBean传入一个标识产生一个bean。

8. BeanDefinition的作用

它主要负责储存Bean的定义信息

Spring Bean 的加载过程:

  1. 代码中定义bean(通过XML,注解等),
  2. BeanDefinition中读取bean信息
  3. BeanFactory中创建bean。
  4. 在应用中使用。

9.BeanFactory和ApplicationContext有何区别?

ApplicationContext实现了BeanFactory,它不生产bean,而是通知FactoryBean生产bean。(类似于4s店和工厂的关系)

共同点:它也可以作为容器

ApplicationContext做的事情比beanFactory 更多:

  1. 会自动把我们配置的bean注册进来。
  2. 加载环境变量。
  3. 支持多语言。
  4. 实现事件监听。
  5. 注册很多对外扩展点。

10.BeanFactory和FactoryBean有什么区别。

BeanFactory是一个工厂。

FactoryBean是一个特殊的bean,它会表现出工厂的样子,是一个能生产或者修饰对象生成的工厂bean,可以通过getObject()来获取FactoryBean对象。在beanFactory中使用"&"来取得FactoryBean本身。