springboot的理解面试题_面试题:说说你对spring的理解

SpringFramework

SpringData

SpringSecurity

SpringBoot

SpringCloud

当然,除了这些之外,Spring还包括很多其他的项目。

接着,着重介绍SpringFramework这个项目,它是一个开源的Java/JavaEE全功能栈的应用程序,SpringFramework提供了一个简易的开发方式,这种开发方式可以避免使用那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。

Spring的这种低侵入式设计使代码的污染极低。

SpringFramework包括以下部分:

然后,我们再介绍一下Spring的核心概念:

Bean管理

依赖注入(DI),又称为控制反转(IOC)

面向切面编程(AOP)

①Bean管理

与传统的应用程序不同,在Spring中将对象的创建交给Spring容器来管理,也就是说只有放入Spring容器中的类,Spring才能对其产生作用。那么Spring究竟是怎样获取类的对象的呢?

要想知道这个,我们首先要弄清楚这几点:

BeanFactory是Spring容器的根接口,ApplicationContext是它的子接口,通常用它的子接口ApplicationContext来访问Spring容器。

ApplicationContext子接口常用的有四个实现类:

ClassPathXmlApplicationContext 从 classpath 加载 spring 的配置文件

FileSystemApplicationContext 从系统文件加载 spring 的配置文件

AnnotationConfigApplicationContext 获取基于注解的 spring 容器对象

XmlWebApplicationContext 在 web 环境中获取 spring 容器对象

Spring通过BeanFactory来获取这些类的对象,在配置文件中通过节点将类交给Spring进行管理,ApplicationContext的实现类通过getBean()方法从Spring容器中获取对象,默认为单例的。

②依赖注入

它可以降低类之间的耦合性,有两种注入方式:

set注入,在配置文件中使用节点

set注入

· 构造方法注入,在配置文件中使用节点

构造方法注入

下面举个例子来说明一下什么是依赖注入:

假设类A因功能F需要调用类B,传统的程序中,我们就会去new一个类B的对象,因而类A就会依赖类于类B,这就是说如果类B不存在,则类A也就无法使用。而使用依赖注入以后,类A只需要去调用实现功能F接口的一个实现类,这个实现类可能是类B,C等等,具体调用谁是有Spring的配置文件决定的,这样类A就不再依赖于类B。

我们可以这样理解控制反转:

资源不是由使用资源的双方进行管理,而是由不使用资源的第三方(即Spring容器)进行管理,这样做的好处是:

资源集中管理,实现资源的可配置与易管理

降低使用资源双方的依赖程度

在传统程序中,当某个角色需要另外一个角色协助时,由调用者来创建被调用者的实例。而在Spring中,创建被调用者的的工作不再由调用者来完成,而由第三方Spring容器来完成,所以称为控制反转,Spring容器创建被调用者的实例,然后注入调用者,所以又称为依赖注入。

③面向切面编程

AOP在Spring中主要表现在两个方面:

提供声明式事务管理

Spring支持用户自定义切面

面向切面编程是对面向对象编程(OOP)的补充。面向对象编程将程序分解成为各个层次的对象,面向切面编程将程序运行过程分解成各个切面。面向切面编程基于动态代理实现,降低了类直接的耦合程度。Spring的事务管理就是基于AOP实现的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值