SpringBoot是什么
简单来说Spring Boot是一套框架,其设计目的是用来简化Spring应用的搭建以及开发过程。Spring Boot其实只是Spring本身的扩展,使开发,测试和部署更加的方便。
SpringBoot的原理
SpringBoot的实现是由启动器和自动配置以及大量的注解来共同完成的。
启动器:是我们在pom文件中引入的依赖,比如spring-boot-starter-xxx(spring-boot-starter-web)。
自动配置: SpringBoot不是一个全新框架,而是其中内部继承其他的框架并做了一些默认配置,这就是自动配置。就是在引入依赖之后,Springboot就认为我们需要使用到一些相关的技术,maven就会自动去加载相关的jar包依赖,就会自动加载默认的配置。
SpringBoot核心功能
- 独立运行Spring项目
Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar来运行。 - 内嵌servlet容器
Spring Boot可以选择内嵌Tomcat、jetty或者Undertow,这样我们无须以war包形式部署项目。 - 提供starter简化Maven配置
spring提供了一系列的start pom来简化Maven的依赖加载,例如,当你使用了spring-boot-starter-web,会自动加入所需依赖包。 - 自动装配Spring
SpringBoot会根据在类路径中的jar包,类、为jar包里面的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,SpringBoot只考虑大多数的开发场景,并不是所有的场景,若在实际开发中我们需要配置Bean,而SpringBoot灭有提供支持,则可以自定义自动配置。 - 准生产的应用监控
SpringBoot提供基于http ssh telnet对运行时的项目进行监控。 - 无代码生产和xml配置
SpringBoot不是借助与代码生成来实现的,而是通过条件注解来实现的,这是Spring4.x提供的新特性。
SpringBoot常见注解
- @SpringBootApplication 注解(开启springboot自动配置)。SpringBoot的核心注解,是一个组合注解,由@Configuration , @EnableAutoConfiguration , @ ComponentScan组成。
- @MapperScan:spring-boot支持mybatis组件的一个注解,通过此注解指定mybatis接口类的路径,即可完成对mybatis接口的扫描。
- @Controller 表明这个类是一个控制器类,和@RequestMapping来配合使用拦截请求,如果不在method中注明请求的方式,默认是拦截get和post请求。这样请求会完成后转向一个视图解析器。但是在大多微服务搭建的时候,前后端会做分离。所以请求后端只关注数据处理,后端返回json数据的话,需要配合@ResponseBody注解来完成。
- @RestController 是@Controller 和@ResponseBody的结合,一个类被加上@RestController 注解,数据接口中就不再需要添加@ResponseBody。更加简洁。
- @RequestMapping(value="",method= RequestMethod.GET ),我们都需要明确请求方式。这样的写法又会显得比较繁琐,于是乎就有了Rest风格。
- @Autowired:这是个最熟悉的注解,是spring的自动装配,这个个注解可以用到构造器,变量域,方法,注解类型上。当我们需要从bean 工厂中获取一个bean时,Spring会自动为我们装配该bean中标记为@Autowired的元素。
- @PathVariable:路径变量注解,@RequestMapping中用{}来定义url部分的变量名。
- @Service:这个注解用来标记业务层的组件,我们会将业务逻辑处理的类都会加上这个注解交给spring容器。事务的切面也会配置在这一层。当让 这个注解不是一定要用。有个泛指组件的注解,当我们不能确定具体作用的时候 可以用泛指组件的注解托付给spring容器。
- @Resource:@Resource和@Autowired一样都可以用来装配bean,都可以标注字段上,或者方法上。 @resource注解不是spring提供的,是属于J2EE规范的注解。
- @Transactional: 通过这个注解可以声明事务,可以添加在类上或者方法上。
SpringBoot优势
- 为Spring的开发提供了更快的入门体验
- 零配置
- 继承了大量常用的第三方库的配置,为这些第三方库提供了开箱即使用的能力
- 提供一系列大型项目常用的非功能特征,如嵌入式服务器、安全性、度量、运行状况检查、外部话配置等
IDEA简单创建SpringBoot项目
- 进入创建项目界面选择Spring Initializr:
- 填写项目的基本信息:
- 最后选择需要的依赖: