小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
1.什么是Spring?
Spring是一个生态。 Spring是一个轻量级的开源容器框架。 Spring是为了解决企业级应用的业务逻辑层和其他各层对象之间,对象和对象之间的耦合问题。 Spring是一个IOC和AOP容器框架。 IOC:控制反转 AOP:面向切面编程 容器:包含并管理应用对象生命周期
2.Spring的优缺点是什么?
优点:
-
方便解构,简化开发。 集中管理对象,对象和对象之间的耦合度降低,方便维护。
-
AOP编程的支持 在不改代码的情况下可以对代码进行增强,减少重复,提高效率,减少重复。
-
声明式事务支持 提高效率
-
方便测试 可以结合JUnit方便的进行程序测试。
-
方便集成各种优秀框架 集成能力强,简单配置即可使用第三方框架。
-
集合了很多功能性代码
-
JAVA源码是经典学习范例
学习Spring底层实现,反射、设计模式等,。提供了非常多的扩展接口,供外部扩展。
缺点:
- 从应用层面来说没有缺点
- 简化开发,如果想深入到底层去了解非常困难。(上层使用简单,底层复杂)
- 经过多年迭代,代码量非常庞大,给更新带来困难。
3. Spring IOC 的作用
控制反转,将对象的管理从程序员新建转变为Spring的IOC去新建,集中管理对象,方便维护,特别适合单例。
4. Spring IOC 的优点
- 集中管理对象,方便维护。
- 解耦,默认创建对象为单例,支持懒汉式和饿汉式。
5. Spring IOC的实现机制是什么?
工厂+反射的机制实现的。
Spring IOC和DI(依赖注入)的区别: DI是IOC中重要的一环。
6. 紧耦合和松耦合有什么区别
高耦合:类之间高度依赖。 松耦合:通过单一职责,关注点分离,依赖倒置原则来实现。
7. BeanFactory的作用
- BeanFactory是Spring中非常核心的一个接口。
- 它是Bean的工厂,它的主要职责就是生产Bean;
- 它实现了简单工厂的设计模式,通过getBean传入一个标识产生一个bean。
8. BeanDefinition的作用
它主要负责储存Bean的定义信息,
Spring Bean 的加载过程:
- 代码中定义bean(通过XML,注解等),
- BeanDefinition中读取bean信息
- BeanFactory中创建bean。
- 在应用中使用。
9.BeanFactory和ApplicationContext有何区别?
ApplicationContext实现了BeanFactory,它不生产bean,而是通知FactoryBean生产bean。(类似于4s店和工厂的关系)
共同点:它也可以作为容器
ApplicationContext做的事情比beanFactory 更多:
- 会自动把我们配置的bean注册进来。
- 加载环境变量。
- 支持多语言。
- 实现事件监听。
- 注册很多对外扩展点。
10.BeanFactory和FactoryBean有什么区别。
BeanFactory是一个工厂。
FactoryBean是一个特殊的bean,它会表现出工厂的样子,是一个能生产或者修饰对象生成的工厂bean,可以通过getObject()来获取FactoryBean对象。在beanFactory中使用"&"来取得FactoryBean本身。