SpringBoot是什么

简单来说Spring Boot是一套框架,其设计目的是用来简化Spring应用的搭建以及开发过程。Spring Boot其实只是Spring本身的扩展,使开发,测试和部署更加的方便。

SpringBoot的原理

SpringBoot的实现是由启动器和自动配置以及大量的注解来共同完成的。

启动器:是我们在pom文件中引入的依赖,比如spring-boot-starter-xxx(spring-boot-starter-web)。

自动配置: SpringBoot不是一个全新框架,而是其中内部继承其他的框架并做了一些默认配置,这就是自动配置。就是在引入依赖之后,Springboot就认为我们需要使用到一些相关的技术,maven就会自动去加载相关的jar包依赖,就会自动加载默认的配置。

springBoot框架下各层的作用 springboot的框架原理_spring boot

SpringBoot核心功能

  1. 独立运行Spring项目
    Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar来运行。
  2. 内嵌servlet容器
    Spring Boot可以选择内嵌Tomcat、jetty或者Undertow,这样我们无须以war包形式部署项目。
  3. 提供starter简化Maven配置
    spring提供了一系列的start pom来简化Maven的依赖加载,例如,当你使用了spring-boot-starter-web,会自动加入所需依赖包。
  4. 自动装配Spring
    SpringBoot会根据在类路径中的jar包,类、为jar包里面的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,SpringBoot只考虑大多数的开发场景,并不是所有的场景,若在实际开发中我们需要配置Bean,而SpringBoot灭有提供支持,则可以自定义自动配置。
  5. 准生产的应用监控
    SpringBoot提供基于http ssh telnet对运行时的项目进行监控。
  6. 无代码生产和xml配置  
    SpringBoot不是借助与代码生成来实现的,而是通过条件注解来实现的,这是Spring4.x提供的新特性。

SpringBoot常见注解

  1. @SpringBootApplication 注解(开启springboot自动配置)。SpringBoot的核心注解,是一个组合注解,由@Configuration , @EnableAutoConfiguration , @ ComponentScan组成。
  2. @MapperScan:spring-boot支持mybatis组件的一个注解,通过此注解指定mybatis接口类的路径,即可完成对mybatis接口的扫描。
  3. @Controller 表明这个类是一个控制器类,和@RequestMapping来配合使用拦截请求,如果不在method中注明请求的方式,默认是拦截get和post请求。这样请求会完成后转向一个视图解析器。但是在大多微服务搭建的时候,前后端会做分离。所以请求后端只关注数据处理,后端返回json数据的话,需要配合@ResponseBody注解来完成。
  4. @RestController 是@Controller 和@ResponseBody的结合,一个类被加上@RestController 注解,数据接口中就不再需要添加@ResponseBody。更加简洁。
  5. @RequestMapping(value="",method= RequestMethod.GET ),我们都需要明确请求方式。这样的写法又会显得比较繁琐,于是乎就有了Rest风格。
  6. @Autowired:这是个最熟悉的注解,是spring的自动装配,这个个注解可以用到构造器,变量域,方法,注解类型上。当我们需要从bean 工厂中获取一个bean时,Spring会自动为我们装配该bean中标记为@Autowired的元素。
  7. @PathVariable:路径变量注解,@RequestMapping中用{}来定义url部分的变量名。
  8. @Service:这个注解用来标记业务层的组件,我们会将业务逻辑处理的类都会加上这个注解交给spring容器。事务的切面也会配置在这一层。当让 这个注解不是一定要用。有个泛指组件的注解,当我们不能确定具体作用的时候 可以用泛指组件的注解托付给spring容器。
  9. @Resource:@Resource和@Autowired一样都可以用来装配bean,都可以标注字段上,或者方法上。 @resource注解不是spring提供的,是属于J2EE规范的注解。
  10. @Transactional: 通过这个注解可以声明事务,可以添加在类上或者方法上。

SpringBoot优势

  1. 为Spring的开发提供了更快的入门体验
  2. 零配置
  3. 继承了大量常用的第三方库的配置,为这些第三方库提供了开箱即使用的能力
  4. 提供一系列大型项目常用的非功能特征,如嵌入式服务器、安全性、度量、运行状况检查、外部话配置等

IDEA简单创建SpringBoot项目

  1. 进入创建项目界面选择Spring Initializr:
  2. 填写项目的基本信息:
  3. 最后选择需要的依赖: