SpringBoot学习总结(⼀):快速⼊门
什么是SpringBoot
SpringBoot是Spring项⽬中的⼀个⼦⼯程,与我们所熟知的Spring-framework 同属于spring的产品
官⽅介绍:
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
我们通常把Spring Boot称为搭建程序的脚⼿架。其最主要作⽤就是帮我们快速的构建庞⼤的spring项⽬,并且尽可能的减少⼀切xml配置,做到开箱即⽤,迅速上⼿,让我们关注于业务⽽⾮配置。
为什么要学习SpringBoot
java⼀直被⼈诟病的⼀点就是臃肿、⿇烦。当我们还在⾟苦的搭建项⽬时,可能Python程序员已经把功能写好了,究其原因主要是两点:
复杂的配置
项⽬各种配置其实是开发时的损耗, 因为在思考 Spring 特性配置和解决业务问题之间需要进⾏思维切换,所以写配置挤占了写应⽤程序逻辑的时间。
混乱的依赖管理
项⽬的依赖管理也是件吃⼒不讨好的事情。决定项⽬⾥要⽤哪些库就已经够让⼈头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这也是件棘⼿的问题。并且,依赖管理也是⼀种损耗,添加依赖不是写应⽤程序代码。⼀旦选错了依赖的版本,随之⽽来的不兼容问题毫⽆疑问会是⽣产⼒杀⼿。
⽽SpringBoot让这⼀切成为过去!
SpringBoot的特点
Spring Boot 主要特征是:
创建独⽴的spring应⽤程序
直接内嵌tomcat、jetty和undertow(不需要打包成war包部署)
提供了固定化的“starter”配置,以简化构建配置
尽可能的⾃动配置spring和第三⽅库
提供产品级的功能,如:安全指标、运⾏状况监测和外部化配置等
绝对不会⽣成代码,并且不需要XML配置
总之,Spring Boot为所有 Spring 的开发者提供⼀个开箱即⽤的、⾮常快速的、⼴泛接受的⼊门体验
更多细节,⼤家可以到官⽹查看。
SpringBoot快速⼊门
⽅式⼆:Idea 构建项⽬
1、环境要求:
2、Idea 创建⼀个空的demo⼯程,然后在⼯程中创建moduel(maven跳过⾻架)
3、引⼊依赖:SpringBoot如何帮助我们管理依赖?
SpringBoot提供了⼀个名为spring-boot-starter-parent的⼯程,⾥⾯已经对各种常⽤依赖(并⾮全部)
的版本进⾏了管理,我们的项⽬需要以这个项⽬为⽗⼯程,这样我们就不⽤操⼼依赖的版本问题了,需要什么依赖,直接引⼊坐标即可
添加⽗⼯程
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
添加启动器
为了让SpringBoot帮我们完成各种⾃动配置,我们必须引⼊SpringBoot提供的⾃动配置依赖,我们称为启动器。spring-boot-starter-parent⼯程将依赖关系声明为⼀个或者多个启动器,我们可以根据项⽬需求引⼊相应的启动器,因为我们是web项⽬,这⾥我们引⼊web启动器:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
这个时候,我们会发现项⽬中多出了⼤量的依赖,这些都是SpringBoot根据spring-boot-starter-web这个依赖⾃动引⼊的,⽽且所有的版本都已经管理好,不会出现冲突。
完整的POM
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ityang.springboot</groupId>
<artifactId>ityang-springboot</artifactId>
<version>1.0.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
4、添加全局的启动类:如果单独的写在⼀个个Controller⾥⾯,⽆法启动多个Controller,每个main⽅法都监听8080端⼝。所以单独写出做⼀些框架配置
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
5、编写HelloController
@RestController
public class HelloController {
@GetMapping("show")
public String test(){
return "hello Spring Boot!";
}
}
6、访问localhost:8080/show,测试
spingboot建议的⽬录结果如下(root package结构:project)
com
+- example
springmvc常用标签+- myproject
+- Application.java
|
+- domain
|  +- Customer.java
|  +- CustomerRepository.java
|
+- service
|  +- CustomerService.java
|
+- controller
|  +- CustomerController.java
|
注解分析
1、@EnableAutoConfiguration
注解说明:开启spring应⽤程序的⾃动配置,SpringBoot基于你所添加的依赖和你⾃⼰定义的bean,试图去猜测并配置你想要的配置。⽐如我们引⼊了spring-boot-starter-web,⽽这个启动器中帮我们添加了tomcat、SpringMVC的依赖。此时⾃动配置就知道你是要开发⼀个web 应⽤,所以就帮你完成了web及SpringMVC的默认配置了!
2、@ComponentScan
注解说明:配置组件扫描的指令。提供了类似与<context:component-scan>标签的作⽤,通过basePackageClasses或者basePackages属性来指定要扫描的包。如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及⼦包。
我们的@ComponentScan注解声明的类就是main函数所在的启动类,因此扫描的包是该类所在包及其⼦包。⼀般启动类会放在⼀个⽐较浅的包⽬录中。
3、@SpringBootApplication
它其实是⼀个组合注解,这⾥重点的注解有3个:
@SpringBootConfiguration
@EnableAutoConfiguration:开启⾃动配置
@ComponentScan:开启注解扫描
4、@SpringBootConfiguration
通过查看注解的源码,发现在这个注解上⾯,⼜有⼀个@Configuration注解。通过上⾯的注释阅读我们知道:这个注解的作⽤就是声明当前类是⼀个配置类,然后Spring会⾃动扫描到添加了@Configuration的类,并且读取其中的配置信息。⽽@SpringBootConfiguration 是来声明当前类是SpringBoot应⽤的配置类,项⽬中只能有⼀个。所以⼀般我们⽆需⾃⼰添加。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。