Spring Boot 概念
用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。
基于Spring4.0设计,继承了Spring框架原有的优秀特性,通过简化配置简化Spring应用的整个搭建和开发过程。SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
SpringBoot的特征
(1)创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的starter项目对象模型,简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置
SpringBoot框架有两个非常重要的策略:开箱即用和约定优于配置。
- 开箱即用Outofbox
是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,使用对应注解来代替繁琐的XML配置文件,达到管理对象的生命周期。使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。
- 约定优于配置
是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
SpringBoot应用系统开发模板的基本架构设计从前端到后台进行说明:
前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它们都是用Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离,同时前端开发还会使用到Bootstrap、AngularJS、JQuery等;在浏览器的数据传输格式上采用Json,非xml,同时提供RESTfulAPI;SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架;数据库常用MySQL;
Spring boot与Spring cloud 关系(*)
- Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务;
- Spring Cloud是一个基于Spring Boot实现的云应用开发工具;
- Spring boot专注于快速、方便集成的单个个体;
- Spring Cloud是关注全局的服务治理框架;
- spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置;
- Spring Cloud很大的一部分是基于Spring boot来实现
- Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot,属于依赖的关系。
存在这样的关系:spring -> spring boot > spring cloud
Spring Boot 相关注解
常用启动器starter注解:
- spring-boot-starter-web (嵌入tomcat和web开发需要servlet与jsp支持)
- spring-boot-starter-data-jpa (数据库支持)
- spring-boot-starter-data-redis (redis数据库支持)
- spring-boot-starter-data-solr (solr搜索应用框架支持)
- mybatis-spring-boot-starter (第三方的mybatis集成starter)
注解具体含义
- @SpringBootApplication 相当于以下3个注解
- @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
- @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })。
- @ComponentScan:Spring组件扫描。
Spring boot 项目技术选型
核心框架:
● 分布式协调服务:ZooKeeper 3.4.11
●校验框架:
Hibernate Validator 5.3.5.Final
● 安全框架:Apache Shiro 1.4.0
● 代码生成:MyBatis Plus Generator 2.1.6
● 持久层框架:MyBatis 3.4.5 + MyBatis-Plus 2.1.6
● 数据库连接池:Druid 1.1.5
● 缓存框架:Redis.clients:jedis 2.8.2
● 队列框架:Apache ActiveMQ 5.14.5
● 会话管理:Spring-Session 1.3.1
● 日志管理:SLF4J
● 前端框架:Layui 2.2.45
● 公用工具集:Hutool 3.2.3
● 支付组件:Egan pay-java-parent 2.0.4
● 代码简化:Lombok 1.16.18
● 序列化框架:Fastjson 1.2.41
● HTTP客户端:Hutool-http 3.2.3
● 接口测试框架:Swagger2
Spring Boot 安装
目录结构
spring boot 目录结构
配置Maven
1、Maven官网下载十分的慢,此处提供给大家一个很好的国内镜像网站,清华园镜像站 -
https://mirrors.tuna.tsinghua.edu.cn/
- 下载Maven的zip包后解压到本地。
- 设置环境变量 “MAVEN_HOME" 为maven的解压位置 如:“c:\\maven-3.6.3”。
- 给环境变量 “Path” 增加内容 “%MAVEN_HOME%\\bin”.
- 测试Maven是否安装成功,管理员身份打开cmd,运行mvn -v 命令,如果显示maven版本号信息则表示maven安装配置成功。
2、修改默认配置
- a) 打开 MAVEN_HOME\\conf下的 settings.xml 文件,添加本地仓库,内容如下:
<localrepository>D:\\maven_locan_repository/<localrepository>
- b) 修改默认远程仓库镜像
Maven默认远程仓库官网在国外,下载经常出问题,使用阿里云的镜像仓库可以解决问题,配置如下:
<mirror>
<name>nexus aliyun/<name>
<mirrorof>*/<mirrorof>
3、关联Idea 和本地maven
根据使用的开发工具进行关联即可,如开发工具推荐IntelliJIDEA 。
Spring Boot HelloWorld
- Idea 中新建Maven项目,过程中会自动下载Maven相关依赖。
- 配置项目对象模型文件pom.xml
a) 配置父类starter依赖
<parent>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-parent/<artifactid>
<version>2.2.2.RELEASE/<version>
<relativepath>
b) 配置web starter 依赖
<dependencies>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-web/<artifactid>
- 编写程序-Spring Boot HelloWorld
a) 编写入口类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args){
//启动spring 应用
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}
b) HelloController 编写
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
这样就可以运行入口类,控制台会显示端口信息,根据端口号访问/hello就可以看到浏览器显示了服务端返回的“Hello World !”。
请继续看:Spring Boot 基础知识大补(2)
閱讀更多 天天面試題 的文章