SpringBoot框架梳理

1.什么是SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

2.SpringBoot层结构:DAO->Service->Controler

  1. 表示层:(jsp、html)界面展示。
  2. 控制层:(Controller) 控制界面跳转。
  3. 业务层:(Service) 调用DAO层,实现解耦合目的,虽然不要它也可以运行项目,但是会使项目后期的延展和维护变得困难。
  4. 持久层:(DAO) 也叫数据访问层,实现对数据库的访问。
  5. 此外,一般还有Entity实体层和Config设置层,wsf参数校验层和constant常量层,dao和service一般分为接口和实现两部分,接口主要是interface,别人如果需要调用就直接按照接口函数进行调用,实现通过implements进行实现。
  6. 持久层有两种方式,一种是原生xml一种是注入的方式,个人更喜欢xml方式。Xml需要在文件开头引入

3.SpringBoot优点

  1. 开箱即用,提供各种默认配置来管理项目,无需XML配置;
  2. 内嵌式容器简化Web项目,无需部署War文件;
  3. 简化Maven配置;
  4. 核心:约定大于配置,这是一种设计范式,旨在减少开发人员所需做决定的数量,获得简单的好处,而又不失灵活性。如果您所用工具的约定与你的期待相符,便可省去配置;反之,你可以配置来达到你所期待的方式。

4.Servet,SpringMVC和Struts2。

  1. Servlet是MVC模型最为基本的表现形态。
  2. 在Servlet规范中所定义的请求处理响应接口是这样的
  3. 相比较Webwork2 / Struts2,SpringMVC走了一条比较温和的改良路线。因为SpringMVC自始至终都没有突破传统Servlet编程模型的限制,而是在这过程中不断改良,不断重构,反而在发展中开拓了一条崭新的道路。 
  4. Struts2对于技术革新的力度远不及SpringMVC,在JDK1.5普及之后,Annotation作为一种新兴的Java语法,逐渐被大家熟知和应用。这一点上SpringMVC紧跟了时代的潮流,直接用于请求-响应的映射。而Struts2却迟迟无法在单一配置源的问题上形成突破。

5.Spring Boot和SpringMVC的区别

  1. springboot只是一个配置工具,整合工具,辅助工具,SpringMVC是框架,项目中实际运行的代码;
  2. MVC模式(Model–view–controller)是一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
  3. Spring MVC是基于Servlet 的一个 MVC 框架主要解决 WEB 开发的问题,因为 Spring 的配置非常复杂,各种XML、 JavaConfig处理起来比较繁琐。于是为了简化开发者的使用,从而创造性地推出了Spring boot,约定优于配置,简化了Spring的配置流程;
  4. 说得更简便一些:Spring 最初利用“工厂模式”(DI)和“代理模式”(AOP)解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC框架(一些用Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后发现每次开发都写很多样板代码,为了简化工作流程,于是开发出了一些“懒人整合包”(starter),这套就是 Spring Boot。

6.Spring的ioc,di,aop

1.Spring IOC原理(Inversion of Control)

IOC的意思是控件反转也就是由容器控制程序之间的关系,这也是spring的优点所在,把控件权交给了外部容器,之前的写法,由程序代码直接操控,而现在控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。换句话说之前用new的方式获取对象,现在由Spring给你,至于怎么给你就是di了。

2.什么是DI机制?

这里说DI又要说到IOC,依赖注入(Dependecy Injection)和控制反转(Inversion of Controll)是同一个概念,具体的讲:当某个角色 需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring中 创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由Spring来完成,然后注入调用者 因此也称为依赖注入。

3.Spring以动态灵活的方式来管理对象,注入的四种方式:

  1. 接口注入
  2. Setter方法注入
  3. 构造方法注入
  4. 注解注入(@Autowire)

7.什么是AOP

面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面

1.面向切面编程提供声明式事务管理

2.spring支持用户自定义的切面

面向切面编程(aop)是对面向对象编程(oop)的补充,

面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。

AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象, 是对应用执行过程中的步骤进行抽象,从而获得步骤之间的逻辑划分。

1.SpringBoot 中@Controler/@RestController的区别

  1. @RestController加在类上面的注解,使得类里面的每个方法都将json/xml返回数据加返回到前台页面中。
  2. @Controller加在类上面的注解,使得类里面的每个方法都返回一个视图页面。
  3. @RestController是@ResponseBody和@Controller的组合注解。

2.RequestMapping和@GetMapping @PostMapping 区别

  1. @GetMapping用于将HTTP get请求映射到特定处理程序的方法注解,具体来说,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
  2. @PostMapping用于将HTTP post请求映射到特定处理程序的方法注解,具体来说,@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
  3. 一般情况下用@RequestMapping(method = RequestMethod. XXXX)即可。

3.注解

@Controller注解:处理http请求 

@RestController注解:Spring4之后新加的注解,等同于返回json注解。等同于@ResponseBody+@Controller注解的组合注释;

@RequestMapping 配置url配置

@PathVariable 获取url中的数据

@RequestParam 获取请求参数的值

@RequestBody 获取请求的对象信息

@Configuration 用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被扫描,并用于构建bean定义,初始化Spring容器。

@SpringBootApplication之前用户使用的是3个注解注解他们的main类。分别是@Configuration,@EnableAutoConfiguration,@ComponentScan。由于这些注解一般都是一起使用,spring boot提供了一个统一的注解@SpringBootApplication。

@ComponentScan 配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中

@Component 是一个元注解,意思是可以注解其他类注解,泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@EnableAutoConfiguration 允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。

SpringBoot面试题:https://www.cnblogs.com/aishangJava/p/10546741.html

你可能感兴趣的:(Web应用)