asp.net网站加速,网站备案查询不到说明啥,网页设计方案,wordpress访问量显示Spring Boot框架入门教程#xff08;快速学习版#xff09; Spring Boot教程BooTWiki.COM
1 Spring Boot
Spring Boot是Pivotal(关键性的)团队在Spring的基础上提供的一套全新的开源框架#xff0c;其目的是为了简化Spring应用的搭建和开发过程。Spring Boot去除了大量的X…Spring Boot框架入门教程快速学习版 Spring Boot教程BooTWiki.COM
1 Spring Boot
Spring Boot是Pivotal(关键性的)团队在Spring的基础上提供的一套全新的开源框架其目的是为了简化Spring应用的搭建和开发过程。Spring Boot去除了大量的XML配置文件简化了复杂的依赖管理。
Spring Boot具有Spring一切优秀特性Spring能做的事Spring Boot都可以做而且使用更加简单功能更加丰富性能更加稳定而健壮。随着近些年来微服务技术的流行Spring Boot也成了时下炙手可热的技术。
Spring Boot集成了大量常用的第三方库配置Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用out-of-the-box大部分的 Spring Boot应用都只需要非常少量的配置代码基于Java的配置开发者能够更加专注于业务逻辑。
1.1 Spring Boot是什么
简化Spring应用开发的一个框架;
整个Spring技术栈的一个大整合;
J2EE开发的一站式解决方案;众所周知Spring应用需要进行大量的配置各种XML配置和注解配置让人眼花缭乱且极容易出错因此Spring一度被称为“配置地狱”。
为了简化Spring应用的搭建和开发过程Pivotal团队在Spring基础上提供了一套全新的开源的框架它就是Spring Boot。
Spring Boot具有Spring一切优秀特性Spring能做的事Spring Boot都可以做而且使用更加简单功能更加丰富性能更加稳定而健壮。随着近些年来微服务技术的流行Spring Boot也成为了时下炙手可热的技术。
Spring Boot提供了大量开箱即用out-of-the-box的依赖模块例如 spring-boot-starter-redis、spring-boot-starter-data-mongodb和spring-boot-starter-data-elasticsearch等。这些依赖模块为Spring Boot应用提供了大量的自动配置使得Spring Boot应用只需要非常少量的配置甚至零配置便可以运行起来让开发人员从Spring的“配置地狱”中解放出来有更多的精力专注于业务逻辑的开发。 Spring Boot具有以下特点 (1)独立运行的Spring项目 Spring Boot可以以jar包的形式独立运行Spring Boot项目只需通过命令“ java–jar xx.jar” 即可运行。 (2)内嵌Servlet容器 Spring Boot使用嵌入式的Servlet容器例如 Tomcat、Jetty 或者 Undertow 等应用无需打成WAR包 。 (3)提供starter简化Maven配置 Spring Boot提供了一系列的“starter”项目对象模型POMS来简化Maven配置。 (4)提供了大量的自动配置 Spring Boot提供了大量的默认自动配置来简化项目的开发开发人员也通过配置文件修改默认配置。 (5)自带应用监控 Spring Boot可以对正在运行的项目提供监控。 (6)无代码生成和xml配置 Spring Boot不需要任何xml配置即可实现Spring的所有配置。
1.2 微服务简介
一、单体应用
一个单体应用程序把它所有的功能放在一个单一进程中。二、微服务
2014年Martin Fowler
微服务架构风格
一个应用应该是一组小型服务可以通过HTTP的方式进行互通。每一个功能元素最终都是一个可独立替换和独立升级的软件单元。1.3 配置开发环境
使用IDEA创建一个Spring Boot项目。
Spring Boot 2.x
JDK 8.0 及以上版本
Maven 3.x
IntelliJ IDEA 14.0 以上1.4 创建Spring Boot项目
Intellij IDEA 一般可以通过两种方式创建 Spring Boot 项目 方式一使用Maven创建。 方式二使用Spring Initializr创建。
本处使用Maven方式创建。 一、使用IntelliJ IDEA创建一个名称为helloworld的Maven项目。 D:\CODEjava\helloworld 二、在该Maven项目的pom.xml中添加以下配置导入Spring Boot相关的依赖。 三、在net.biancheng.www包下创建一个名为helloWorldApplication主程序用来启动Spring Boot应用代码如下。 四、为了能比较的清楚的看到效果我们在net.biancheng.www包下又创建一个controller包并在该包内创建一个名为HelloController的 Controller代码如下。
1.4.1 pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdhelloworld/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.5/versionrelativePath/ !-- lookup parent from repository --/parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies/project1.4.2 helloWorldApplication.java
package net.biancheng.www;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
SpringBootApplication
public class helloWorldApplication {public static void main(String[] args) {SpringApplication.run(helloWorldApplication.class, args);}
}
Spring Boot Application的入口点是包含SpringBootApplication注释的类。该类应具有运行Spring Boot应用程序的主要方法。 SpringBootApplication注释包括自动配置组件扫描和Spring Boot配置。 如果将SpringBootApplication批注添加到类中则无需添加EnableAutoConfigurationComponentScan和SpringBootConfiguration批注。SpringBootApplication注释包括所有其他注释。
1.4.3 HelloController.java
package net.biancheng.www.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
Controller
public class HelloController {ResponseBodyRequestMapping(/hello)public String hello() {return Hello World!;}
}1.4.4 启动项目
默认情况下Spring Boot项目会创建一个名为***Application的主程序启动类 该类中使用了一个组合注解SpringBootApplication用来开启Spring Boot的自动配置另外该启动类中包含一个main()方法用来启动该项目。
直接运行启动类HelloworldApplication中的main()方法便可以启动该项目结果如下图。 注意Spring Boot内部集成了Tomcat不需要人为手动配置Tomcat开发者只需要关注具体的业务逻辑即可。 重启Spring Boot项目然后在地址栏访问http://localhost:8080/hello。
2 Spring Boot starter
传统的Spring项目想要运行不仅需要导入各种依赖还要对各种XML配置文件进行配置十分繁琐但Spring Boot项目在创建完成后即使不编写任何代码不进行任何配置也能够直接运行这都要归功于Spring Boot的starter机制。
所有Spring Boot启动程序都遵循相同的命名模式
spring-boot-starter-*其中*表示它是应用程序的一种类型。(1)spring-boot-starter-actuator依赖关系用于监视和管理应用程序。 (2)spring-boot-starter-security依赖项用于Spring Security。 (3)spring-boot-starter-web依赖项用于编写Rest端点。 (4)spring-boot-starter-thymeleaf依赖项用于创建Web应用程序。 (5)spring-boot-starter-test依赖项用于编写测试用例。
2.1 starter
Spring Boot将日常企业应用研发中的各种场景都抽取出来做成一个个的starter(启动器)starter中整合了该场景下各种可能用到的依赖用户只需要在Maven中引入starter依赖Spring Boot就能自动扫描到要加载的信息并启动相应的默认配置。starter提供了大量的自动配置让用户摆脱了处理各种依赖和配置的困扰。所有这些starter都遵循着约定成俗的默认配置并允许用户调整这些配置即遵循“约定大于配置”的原则。
并不是所有的starter都是由Spring Boot官方提供的也有部分starter是第三方技术厂商提供的例如druid-spring-boot-starter和mybatis-spring-boot-starter等等。当然也存在个别第三方技术Spring Boot官方没提供starter第三方技术厂商也没有提供starter。
以spring-boot-starter-web为例它能够为提供Web开发场景所需要的几乎所有依赖因此在使用Spring Boot开发Web项目时只需要引入该Starter即可而不需要额外导入Web服务器和其他的Web依赖。
在pom.xml中引入spring-boot-starter-web示例代码如下。
!--SpringBoot父项目依赖管理--
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.5/versionrelativePath/
/parent
....
dependencies!--导入 spring-boot-starter-web--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency...
/dependencies在该项目中执行以下mvn命令查看器依赖树。 mvn dependency:tree 从以上结果中我们可以看到Spring Boot导入了springframework、logging、jackson以及Tomcat等依赖而这些正是我们在开发Web项目时所需要的。
您可能会发现一个问题即在以上pom.xml的配置中引入依赖spring-boot-starter-web时并没有指明其版本(version)但在依赖树中我们却看到所有的依赖都具有版本信息那么这些版本信息是在哪里控制的呢其实这些版本信息是由spring-boot-starter-parent(版本仲裁中心)统一控制的。
2.2 spring-boot-starter-parent
spring-boot-starter-parent是所有Spring Boot项目的父级依赖它被称为Spring Boot的版本仲裁中心可以对项目内的部分常用依赖进行统一管理。
!--SpringBoot父项目依赖管理--
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.5/versionrelativePath/
/parentSpring Boot项目可以通过继承spring-boot-starter-parent来获得一些合理的默认配置它主要提供了以下特性 (1)默认JDK版本(Java 8)。 (2)默认字符集(UTF-8)。 (3)依赖管理功能。 (4)资源过滤。 (5)默认插件配置。 (6)识别application.properties和application.yml类型的配置文件。
一、查看spring-boot-starter- parent的底层代码可以发现其有一个父级依赖spring-boot-dependencies。
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.4.5/version
/parent二、spring-boot-dependencies的底层代码如下。
modelVersion4.0.0/modelVersion
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-dependencies/artifactId
version2.4.5/version
packagingpom/packaging
....
propertiesactivemq.version5.16.1/activemq.versionantlr2.version2.7.7/antlr2.versionappengine-sdk.version1.9.88/appengine-sdk.versionartemis.version2.15.0/artemis.versionaspectj.version1.9.6/aspectj.versionassertj.version3.18.1/assertj.versionatomikos.version4.0.6/atomikos.version....
/propertiesdependencyManagementdependenciesdependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-amqp/artifactIdversion${activemq.version}/version/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-blueprint/artifactIdversion${activemq.version}/version/dependency.../dependencies
/dependencyManagementbuildpluginManagementpluginsplugingroupIdorg.codehaus.mojo/groupIdartifactIdbuild-helper-maven-plugin/artifactIdversion${build-helper-maven-plugin.version}/version/pluginplugingroupIdorg.flywaydb/groupIdartifactIdflyway-maven-plugin/artifactIdversion${flyway.version}/version/plugin.../plugins/pluginManagement
/build以上配置中部分元素说明如下 (1)dependencyManagement 负责管理依赖 (2)pluginManagement负责管理插件 (3)properties负责定义依赖或插件的版本号。 spring-boot-dependencies通过dependencyManagement 、pluginManagement和properties等元素对一些常用技术框架的依赖或插件进行了统一版本管理例如Activemq、Spring、Tomcat等。
2.3 Spring Boot应用程序
Spring Boot Application的入口点是包含SpringBootApplication注释的类。该类应具有运行Spring Boot应用程序的主要方法。 SpringBootApplication注释包括自动配置组件扫描和Spring Boot配置。 如果将SpringBootApplication批注添加到类中则无需添加EnableAutoConfigurationComponentScan和SpringBootConfiguration批注。SpringBootApplication注释包括所有其他注释。 请注意以下代码以便更好地理解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}3 编写一个Rest端点
要在Spring Boot Application主类文件本身中编写一个简单的Hello World Rest端点请按照以下步骤操作 (1)首先在类的顶部添加SpringBootApplication和Controller注释。 (2)使用ResponseBody和RequestMapping注释编写Request URI方法。 (3)Request URI方法应该返回Hello World!123字符串。
package net.biancheng.www;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;SpringBootApplication
Controller
public class helloWorldApplication {public static void main(String[] args) {SpringApplication.run(helloWorldApplication.class, args);}ResponseBodyRequestMapping(/hello)public String hello() {return Hello World!123;}
}4 配置文件
在IDEA中写application.properties没有自动提示原因之一。 编辑application.properties文件时需要添加Spring Boot插件并且打开。 解决办法如下 1.点击file选择Settings 2.点击Plugins 3.选择Marketplace并搜索“Spring Boot”并点击Install安装 记得一定要把Spring Boot后面的方框打上勾然后提示重启IDEA。 最后查看application.properties文件已经变成一片绿叶子了。 注意社区版本的IDEA无法安装Spring Boot插件。
4.1 基础配置
因为IDEA是社区版所以不能安装Spring Boot插件选择安装Spring Boot Assistant然后就可以用application.yml识别配置内容最后设置到application.properties。
1、SpringBoot默认配置文件application.properties,通过键值对配置对应属性。
# 服务器端口配置
server.port80
# 修改banner,logo
spring.main.banner-modeoff
# 修改日志级别
logging.level.rootINFO
2、Spring Boot中导入对应starter后提供对应配置属性。
3、书写Spring Boot配置采用关键字提示形式书写。4.2 三种配置文件类型
1、application.properties(传统格式/默认格式优先级最高)
server.port802、application.yml(主流格式)
server:port: 813、application.yaml(优先级最低)
server:port: 82