关于一些Spring全家桶面试题

228 阅读4分钟

1.说说你对spring的理解:

①Spring是开源框架,提供IOC和AOP降低了应用开发的复杂度。

②Spring全家桶,有关java应用开发的全部功能,Spring都提供了解决方案,包括对web的支持、微服务的支持。

2.说下Spring由哪些模块组成:

①spring-core:核心类库

②spring-beans:对bean的支持,包括控制反转和依赖注入,BeanFactory核心工厂就在这个模块

③spring-context:spring上下文支持数据验证、国际化、事件传播等支持,ApplicationContext 就在这里,可以理解为运行时的 Spring 容器

基于上面的核心模块,spring也提供许多重要支持

④spring-aop:Aop的支持

⑤spring-jdbc:jdbc的支持

⑥spring-orm:对象关系映射框架的支持

⑦spring-mvc:mvc的支持

3.什么是IOC:

IOC即控制反转(Inversion of Controller)

首先IOC是一种思想不是一种技术,其次IOC这个思想也不是spring创造的。

控制的含义就是控制对象的创建

反转的含义是创建对象原来是由我们来创建的,现在交给了IOC容器来创建注入

4.IOC有什么好处:

创建对象都由IOC控制的时候,对象之间就不会有明确的依赖关系,就可以设计出松耦合的程序,实现了解耦。

5.什么是DI:

DI是IOC的实现,即依赖注入

@resource:按name类型注入bean

@autowire:默认按type类型注入bean  required参数=false代表没有这个bean跳过,不报错,默认是required=true

6.什么是Bean:

用于依赖注入得对象就是Bean。即可已getBean返回的东西。

7.BeanFactory有什么用:

BeanFactory其实就是IOC的底层容器,是Bean的工厂用来创建Bean,是Spring的核心

8.Bean的作用域:

singleton:一个 IOC 容器内部仅此一个

prototype:原型,多实例

request:每个请求都会新建一个属于自己的 Bean 实例,这种作用域仅存在 Spring Web 应用中

session:一个 http session 中有一个 bean 的实例,这种作用域仅存在 Spring Web 应用中

application:整个 ServletContext 生命周期里,只有一个 bean,这种作用域仅存在 Spring Web 应用中

websocket:一个 WebSocket 生命周期内一个 bean 实例,这种作用域仅存在 Spring Web 应用中

9.Bean的生命周期:

创建实例→注入属性→初始化→使用→销毁

10.springMVC的理解:

springMVC是基于ServletApi构建的,核心是DispatcherServlet 即前端控制器

11.spring事务传播行为有什么用:

控制事务的边界

12.springboot的优点:

  1. 整合了spring和springmvc框架,简化了开发者对配置文件的配置

  2. 内部自带Tomcat,不用单独下载传统服务器然后把项目打成war包部署到服务器上,直接就可以运行。

  3. 有pom文件,可以简化maven依赖 13.对AOP的理解

实现AOP(在不改变核心业务代码基础上,增强功能,使外围业务代码与核心业务代码分离)思想可以使用AspectJ框架和Spring AOP框架实现,AspectJ需要编译器,因此比较麻烦,但是运行时没有开销,所以在性能上强于Spring AOP

如果项目使用的spring框架,选取spring aop,与spring ioc紧密结合,如果项目没有使用spring框架,那么选中AspectJ,或者说想在什么期间进行功能增强,若想在编译期间选择AspectJ,运行期间Spring AOP

14.springCloud核心组件:

  1. eureka注册中心:把各个服务注册到注册中心上

  2. feign远程调用:使用了动态代理,如果某个接口定义了@FeignClient注解,feign的动态代理会根据接口上的@RequestMapping、@PathVariable等注解动态构造出请求的服务地址

  3. ribbon负载均衡:Ribbon的负载均衡默认使用的最经典的Round Robin轮询算法 负载均衡的三种方式:(轮询Round Robin、随机Random、ResponseTime加权重)

  4. zuul网关(安全,监控,限流,路由)

  5. hystrix隔离、熔断、降级

  6. config配置中心

  7. shrio安全权限控制

15.springCloud和dubbo的本质区别

springcloud放弃了dubbo的rpc协议,使用的是http协议的restful风格