spring面试题

AOP

 *      前置通知:@Before("切入点表达式")
 *      后置通知:@AfterReturning("切入点表达式")
 *      异常通知:@AfterThrowing("切入点表达式")
 *      最终通知:@After("切入点表达式")
 *      环绕通知:@Around("切入点表达式")

什么事AOP

面向切面编程,通过预编译方式或者运行期动态代理实现功能的统一维护的技术

在不修改源码的情况下进行功能性增强,通过动态代理实现,减少重复代码,提高开发效率,方便维护

给功能增加日志输出,事务管理

IOC

Ioc:容器的概念,控制反转,依赖注入

ioc容器实际上就是一个map,里面存储的各种对象,在项目启动时会读取配置文件里的bean节点,根据全限定类名使用反射创建对象到map里,这个时候map中就有对象了在通过Autowired,Resource等注注解注入对象

控制反转:在没有引入ioc容器钱,对象a依赖于对象b,那么对象a在初始化或运行到某一节点的时候,自己必须主动创建b或者使用已经创建好的b,无论那种创建方式,控制权都在自己手上,

引入ioc容器后,当对象a运行到需要对象b的时候ioc容器会主动创建一盒对象B注入到A需要的地方

依赖注入:获取依赖对象的过程中被反转了,控制反转后获取依赖对象的过程由自身管理变为了ioc容器主动注入,依赖注入是实现ioc的方法,就是由ioc容器在运行期间,动态的将某种依赖关系注入到对象之中

springMVC的执行流程

  1. 用户发送请求到前端控制器(DispatcherServlet)

  2. 前端控制器(DispatcherServlet)收到请求调用处理器映射器(HandlerMapping),去查找处理器(Handler)

  3. 处理器映射器(HandlerMapping)找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。

  4. DispatcherServlet 调用 HandlerAdapter 处理器适配器

  5. 处理器适配器(HandlerAdapter)去执行 Handler(Controller,也叫后端控制器)。

  6. Controller 将得到的参数进行处理并返回结果给 HandlerAdapter

  7. HandlerAdapter 将得到的结果返回给 dispatcherServlet

  8. DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器

  9. ViewReslover 将得到的参数从逻辑视图转换为物理视图并返回给 dispatcherServlet

  10. dispatcherServlet 调用物理视图进行渲染并返回

  11. dispatcherServlet 将渲染后的结果返回

springboot的优点

SpringBoot 对上述 Spring 的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。版本锁定:解决是 maven 依赖版本容易冲突的问题,集合了常用的并且测试过的所有版本起步依赖 :解决了完成某一个功能要整合的 jar 包过多的问题,集合了常用的 jar 包自动配置:解决了整合框架或者技术的配置文件过多,集合了所有的约定的默认配置内置 Tomcat:通过内置的 tomcat,无需再用其他外置的 Tomcat 就直接可以运行 javaEE 程序总之:人们把 Spring Boot 称为搭建程序的脚手架。其最主要作用就是帮我们快速的构建庞大的spring 项目,并且尽可能的减少一切 xml 配置,做到开箱即用,迅速上手,让我们关注与业务而非配置。  

springboot的自动装配原理

在项目启动时,创建ioc容器,run方法会把引导类直接注册bean对象到ioc容器,加载引导类上的注解

springboot的启动类上的注解@SpringbootApplication是一个组合注解,注解中的@EnableAutoConfiguration用来自动装配的,他也是一个组合注解其中有一个注解@Import(AutoConfigurationImportSelector.class)AutoConfigurationImportSeletor.class这个类中最终会从META-INF/spring.factories加载配置文件,这个名单中的类名点进去为配置类,spring.factories文件中的全限定类名的类都会注册到ioc容器  

springcloud的组件

服务注册与发现  Eureka

负载均衡    Ribbon

服务容错,断路器,降级处理  Hystrix

服务网关  Zuul

分布式配置  Config

声明式服务调用Feign

网关 Gateway

启动Eureka

1.在注册中心模块的启动类上添加注解  @EnableEurekaServer 开启注册中心服务

2.在启动类上通过添加@EnableDiscoveryClient来开启客户端功能

启动Ribbon

因为Eureka已经继承了Ribbon可直接使用

@Bean
@LoadBalanced  //Ribbon注解
public RestTemplate restTemplate(){
    return new RestTemplate();
}

 启动Hystrix

启动类上加注解 @EnableHystrix

方法上添加注解  @HystrixCommand(fallbackMethod="方法名")

feign

启动类上加@EnableFeignClients

springCloud和Springboot的关系

spirngboot专注于单个个体微服务

Springcloud是关注于全局的微服务协调治理,他将Springboot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供配置管理,服务发现,断路器,路由,微代理,等继承服务

spirngCloud依赖于springcloud

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值