Spring Boot入门
一、Spring和Spring Boot
Spring框架优点:
- Spring的依赖反转功能让我们开发出容易测试的代码
- 提供了易用、灵活、强大的数据事务管理支持功能
- Spring是一个的开放的框架,使得其可以和很多框架,如JPA/Hibernate,JPF,RabbitMQ,Thymeleaf等整合,都可以轻易的整合到Web应用开发中。
- 提供了标准化的Web应用开发支持Spring MVC
二、Spring Boot启动器
2.1 Spring Boot的使用:
Spring boot通过提供一系列名称以spring-boot-starter开头的启动器来简化项目的依赖。
比如,在项1目中添加了spring-boot-starter-web时,Spring Boot就自动将相关依赖,如spring-mvc、jackson-json、tomcat等引入。
2.2 常用的启动器:
-
spring-boot-starter-web,Web应用开发
-
spring-boot-starter-logging,日志处理
-
spring-boot-starter-jpa,数据储存管理
-
spring-boot-starter-security,安全管理
-
spirng-boot-starter-actuator,应用监控
-
spirng-boot-starter-data-redis,Redis数据库集成
-
spirng-boot-starter-amqp,消息中间件集成
全部Spring Boot启动器列表:
http://t.cn/Rn30Zr7
三、Spring Boot应用实例
3.1搭建Spring Boot框架
-
使用Spring Boot快速搭建一个最基础的应用框架,可以通过Spring Boot初始化工具(https://start.spring.io/) 完成项目
[外链图片转存失败(img-Jp8njxc6-1564735735947)(https://i.loli.net/2019/07/31/5d414f0bb614029269.jpeg)]
-
编写pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!--使用spring boot的父类使用版本为2.1--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!--本项目的groupid,artifactID,版本等信息--> <groupId>com.chirshee</groupId> <artifactId>springbootdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springbootdemo</name> <description>Demo project for Spring Boot</description> <properties> <!--项目使用的第三方的包的版本,统一在同一个地方声明(建议)--> <!--JDK版本为1.8--> <java.version>1.8</java.version> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <guava.version>20.0</guava.version> <swagger.version>2.6.1</swagger.version> </properties> <!--springboot 启动器--> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--Guava可以提供一些缓存、集合等等一些方法的工具类--> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--该插件限定maven打包时所使用的版本,避免出现的版本不匹配的问题--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <!--该插件可以让Maven将工程直接打包成一个可以直接运行的jar--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>12 </plugin> </plugins> </build> </project>
-
编写应用引导类
- Spring Boot框架启动并初始化应用。引导类需要一个main主函数,并需要使用@SpingBootApplication注解标识
- Application类的main方法的调用了SpringApplication.run()方法,该方法会在项目启动的时候构建一个Spring容器,并返回一个ApplicationContext对象。
package com.chirshee.springbootdemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringbootdemoApplication { public static void main(String[] args) { SpringApplication.run(SpringbootdemoApplication.class, args); } }
- @SpringBootApplication注解,告诉Spring容器,使用该类作为所有Bean源,通过该起点构建应用的上下文。@SpringBootApplication继承自@EnableAutoConfigration和@ComponentScan,通过该注解使得在项目启动的时候Spring就会对该类所属目录下所有子包进行扫描并根据SpringBoot的自动配置机制进行配置。
- 引导类一般需要放在根包中,否则可能会造成部分配置/Bean不能被扫描到,一般建议项目刚开始的时候将引导类放到根包下,如果没有放到根包下的话,可以使用@ComponentScan注解来配置需要扫描的包的位置
- 有多个包需要扫描的时候,在注解中可以使用逗号(,)隔开。
//使用注解来设置自动扫描的起始位置是com.chrishee @ComponentScan(com.chrishee.**) @SpringBootApplication public class SpringbootdemoApplication { public static void main(String[] args) { SpringApplication.run(SpringbootdemoApplication.class, args); } }
-
编写配置文件
Spring boot应用中,通常会有一个properties或者yml两种格式的配置文件,默认名字都是application,存放在resources目录中。
配置文件用来存放应用所需的各项配置,如数据源,日志,启动端口等
# 应用启动后监听的端口 server.port=8080 # 配置日志输出级,将Spring框架设置为INFO级别,我们所编写的代码为debug级别 logging.level.org.springframework=INFO logging.level.org.springbootdemo=DEBUG
3.2 框架设计
- 经典三层应用架构
- 客户端层UI层:与用户进行交互
- 应用层:是系统核心价值部分,与UI层进行交互及数据储存的处理
- 存储层:也称为持久层,通常是数据库,用来保存业务数据
上述为整个应用架构上的划分。
- 后端开发在架构上分为以下三层
-
业务逻辑层:主要承担两大职责
定义业务领域对象——业务实体(Domain);
业务逻辑的具体实现——Service
-
接口层(API层):该层用来对接UI层,为UI层提供数据集业务处理接口,一般称为Controller,所以经常会使用REST方式提供API接口,供各个应用端使用,因此也可以称之为API层
-
数据接口层(DAO): 负责实体对象的数据处理,如增、删、查、改等,通常定义为repository.
ps:Spring Cloud微服务架构开发实战读书笔记