首页 > 其他分享 >springBoot

springBoot

时间:2022-11-23 17:55:05浏览次数:45  
标签:容器 springBoot 视图 bean 实例 AOP DispatcherServlet

说说你对mvc的理解

	MVC是一种设计模式,在这种设计模式下软件被分为了3层:model、view、controller;model层主要是定义实体对象等数据,封装了数据和对数据的操作,是实际进行数据处理的地方;view层负责进行模型展示,一般就是我们见到的用户界面;cortorller层负责视图和模型之间的交互,主要有两方面的动作:一是把用户的请求分发到相应的模型,二是把模型的改变及时响应到视图上。springMVC框架已经成为mvc设计模式的最主流实现。将软件分层的好处是,可以将对象之间的耦合度降低,便于代码的维护。

索索悲观锁和乐观锁

	乐观锁:乐观锁总是假设最好的情况,每次去拿数据的时候默认别人不会修改,所以不会上锁,只有当更新的时候会判断一下在此期间有没有人更新了这个数据。适用于多读,可以使用版本号机制和CAS算法实现
	悲观锁:悲观锁总是假设最坏的情况,每次去拿数据都认为别人会修改,所以每次拿到数据都会上锁,这样别人想拿这个数据时会阻塞。

CAS算法

CAS的全程是:Compare And Swap(比较并交换),CAS是实现并发计算时常用到的技术,Java并发包中的很多类都使用了CAS技术,如ConcurrentHashMap,AtomicInteger原子操作等

CAS操作涉及到3个操作符:当前内存中的值、预估值、即将修改的新增,当且仅当预估值等于内存中的值的时候,才将新的值保存到内存中,否则什么都不做

说说你对AOP的理解

得分点 AOP概念、AOP作用、AOP的实现方式

AOP是面向切面编程,它是一种编程思想,它是一种通过预编译方式和运行期间动态代理的方式实现不修改源代码的情况下给程序动态添加功能的一种技术,可以降低代码的耦合度,便于管理,提高代码的可重用性。 AOP的实现方式有两种: JDK动态代理,可以在运行时创建接口的代理实例。 CGLIB动态代理:可以在运行期间创建子类的动态实例。 AOP的应用场景有:事务,日志管理等。

说说你对IOC的理解

IoC:控制反转。控制:对象的创建的控制权限;反转:将对象的控制权限交给spring。之前我们创建对象时用new,现在直接从spring容器中取,维护对象之间的依赖关系,降低对象之间的耦合度。 实现方式为DI:依赖注入,有三种注入方式:构造器、setter、接口注入

说说bean的生命周期

创建,初始化,调用,销毁; bean的创建方式有四种,构造器,静态工厂,实例工厂,setter注入的方式。 spring在调用bean的时候因为作用域的不同,不同的bean初始化和创建的时间也不相同。 在作用域为singleton的时候,bean是随着容器一起被创建好并且实例化的, 在作用域为pritotype的时候,bean是随着它被调用的时候才创建和实例化完成。 然后程序就可以使用bean了,当程序完成销毁的时候,bean也被销毁。

说说Spring Boot的自动装配

SpringBoot自动装配时,需要引入相应的Starters,启动SpringBoot后会自动配置相对应的依赖和配置相对应的初始化参数,以最便捷,最简单的方式完成第三方软件的集成。 具体的配置过程是:SpringBoot通过@EnableAutoConfiguration开启自动配置功能,加载Spring.factories中注册的AutoConfiguration类,当某个AutoConfiguration类满足指定的生效条件时,实例化该AutoConfiguration中定义的Bean,并注入到Spring容器中,完成依赖框架的自动配置。

说说@Autowired和@Resource注解的区别

@Autowied是Spring提供的注解,@Resource是JDK提供的注解。
@Autowied是只能按类型注入,@Resource默认按名称注入,也支持按类型注入。@Autowired按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用

介绍一下Spring MVC的执行流程

image-20221016153642981

    1.用户点击某个请求路径,发起一个 HTTP request 请求,该请求会被提交到 DispatcherServlet(前端控制器);
    2.由 DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。
    3.DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器);
    4.HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为 Controller);
    5.Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息);
    6.HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet ;
    7.DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
    8.ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet;
    9.DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);
    10.视图负责将结果显示到浏览器(客户端)。 

说说BeanFactory和FactoryBean的区别

beanfactory:是所有spring bean容器的顶级接口,是最基础的IOC容器,它为spring的容器定义了一套方法,并提供像getBean这样的方法从容器中获取指定的bean实例。它在产生bean的同时,还提供了解决bean之间的依赖注入的能力,也就是所谓的di。

factory bean:工厂bean,只是SpringIOC容器创建Bean的一种形式,它是一个接口,它的主要功能是动态去生成某一类型的bean的一个实例,也就是说 我们可以自定义一个bean并且加载到ioc容器里面,getObject是用来实现动态构建bean的一个过程。

标签:容器,springBoot,视图,bean,实例,AOP,DispatcherServlet
From: https://www.cnblogs.com/yufou/p/16919243.html

相关文章