Spring Boot 基础知识大补(1)

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 目录结构

Spring Boot 基础知识大补(1)


配置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>

nexus-aliyun

<name>nexus aliyun/<name>

http://maven.aliyun.com/nexus/content/groups/public

<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)


分享到:


相關文章: