初识SpringBoot微服务与创建⼀个简单的demo
初识SpringBoot与创建⼀个简单的demo
⽬录
微服务与分布式介绍
传统的单体项⽬前端采⽤JSP等视图,后台采⽤servlet等MVC框架,整体项⽬采⽤Spring容器,持久层采⽤Hibernate或者MyBatis 做数据连接。最后把我们编译好的项⽬打成war包(或者编译好的字节码⽂件),放到我们的Apache服务器⾥,启动服务,⽤户访问Tomcat 服务器,就能获取到⾃⼰需要的信息。但是,在这⼀个单⼀的服务器⾥,每当我们有新的代码需要发布,都会使得我们的war不断庞⼤,最后成为⼀个臃肿的怪物,启动耗时不必多说,所有的代码都放在⼀个war包⾥,万⼀某个class⽂件的⼀个⽅法出现了内存泄露,迎来的就是整个项⽬的宕机,如果是⼀个传统⾏业的项⽬,和客户说⼀下,调试解决可能就处理好问题了,但是,如果作为⼀个互联⽹⾏业的项⽬,可能停机⼀个⼩时,就意味着公司的破产倒闭。
这就很⿇烦了,这样很影响使⽤者的体验。⼤多数的产品都会⾯临这样的⼀个问题。分布式微服务就能很好地解决这个问题。微服务是⼀种架构风格,⼀个⼤型复杂软件应⽤由⼀个或多个微服务组成。系统
中的各个微服务可被独⽴部署,各个微服务之间是松耦合的。每个微服务仅关注于完成⼀件任务并很好地完成该任务。在所有情况下,每个任务代表着⼀个⼩的业务能⼒。
例如要开发⼀个购票系统。就可以简单的拆分为⽤户管理微服务和售票系统微服务。两个服务都可以独⽴运⾏,都有⾃⼰的数据库,他们之间通过HTTP API 进⾏通信。
SpringBoot的出现
通过之前的架构学习,Spring也好Mybatis也好SpringMVC也好,都显⽰出了⼀个很⼤弊端,那就是笨重。配置复杂⽽且繁多,随着越来越多的动态语⾔的流⾏(Ruby,Groovy,Scala等等)这个笨重的问题越来越显著。繁多的配置,低下的开发效率,复杂的部署流程以及第三⽅技术集成难度⼤,这些问题⼀直冲击着java的地位。不过java作为第⼀开发语⾔还是有⼈给出了解决⽅案,于是SpringBoot就孕育⽽⽣了。
SpringBoot是很常⽤的微服 务架构,它使⽤习惯优于配置的理念(项⽬中存在了⼤量的配置,同时内置了习惯内置,⽆须⼿动地配置)让你的项⽬快速地运⾏起来。使⽤SpringBoot很容易地创建⼀个快速运⾏的,准⽣产级别基于Spring的微服务项⽬。⽆须你去⼿动地配置。
SpringBoot在微服务⾥使⽤⾮常⼴泛,在学习SpringCloud分布式架构之前⼀定得先学会SpringBoot微服务架构,因为SpringBoot 微服务架构是分布式的⽣态,也就是多个微服务组成分布式结构。
不过说到底,SpringBoot是基于Spring开发的,换句话说就是对Spring的⼀种集成,所以学习SpringBoot必须有Spring的基础。
SpringBoot的特点
SpringBoot微服务架构的特点:
1. 创建独⽴的Spring程序;
2. 内嵌了Tomcat,⽆须部署WAR⽂件;
3. 简化Maven配置;
4. ⾃动配置Spring;
5. 提供⽣产就绪型功能,如指标、健康检查和外部配置;
6. 绝对没有代码⽣成,对XML也没有配置要求。
SpringBoot微服务架构的优点:
1. 快速构建项⽬;
2. 对主流架构⽆须配置集成;
3. 项⽬可以独⽴运⾏,⽆须依赖外部Servlet容器;
4. 提供运⾏时的监控;
5. 提⾼了开发和部署效率;
6. 与云计算天然集成。
SpringBoot微服务架构的缺点:
1. 对于已经习惯了配置的⼈来说,这种纯注解真的很折磨⼈;
2. 配置SpringBoot很容易但是掌握却很难,因为注解⾥嵌套了很多的注解,你们点开注解的源代码就知道了。
创建⼀个简单demo
我们现在就来通过⼀个demo来学习搭架SpringBoot项⽬吧。
我们现在配置的是SpringBoot2.0的版本,现在还有很多资料是1.0的,所以看资料的时候要注意下版本号。
1. 创建⼀个SpringBoot⼯程:
我们SpringBoot微服务⼀般都是⽤Maven搭架的。所以我们先创建⼀个Maven项⽬。注意⼀下,因为SpringBoot是有⾃⼰        内嵌的Tomcat服务器所以我们这⾥不需要配置我们⾃⼰的Tomcat,⽽且我们不需要创建web⼯程,创建⼀个quickstart从⼯          程就好了。为什么这⾥就先不详述了,后⾯会有补充,这⾥我们就先完成⼀个demo就好了。
之后我们得到⼀个quickstart的Maven⼯程。⾃⼰补⼀个资源⽂件夹resources。
2. 对l⽂件进⾏配置:
⾸先我们需要配置⼀个⽗类⼯程,之前有说过SpringBoot其实就是对Spring的集成,我们配置这个⽗类⼯程就是将⽗类          ⾥的所有jar依赖继承。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
然后在properties节点添加⼀个节点。不添加项⽬会报错。
<maven-jar-plugin.version>2.6</maven-jar-plugin.version>
然后我们需要添加关于SpringBoot的⼀些依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
attribute sth to sb造句<artifactId>spring-boot-starter-web</artifactId>
</dependency>
最后配置插件plugin。这⾥需要配置的插件有⼏个,⾸先就是规定jdk版本号的插件,之前的学习中我们也有提到,在没          有任何配置的情况下Maven项⽬总是会把jdk的版本拉成1.5,⽽且强⾏更改也会在updata之后刷成1.5,所以我们需要配置            ⼀个jdk 版本号的插件。
<!-- 编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
然后配置⼀个查看源码的插件和查看javadoc的插件,这个不是必须的配不配都可以。
<!-- 添加查看源码插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 添加查看javadoc插件 -->
properties是什么文件<plugin>
<groupId>org.apache.maven.plugins</groupId>
网络工程师自学教程<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>bootstrap写一个表格
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
最后还有关于SpringBoot的插件。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
linux安装windows软件我这⾥给⼀份完整的l仅供参考。注意配置完以后updata⼀下,⾸次配置下载依赖会很慢,请耐⼼等待。
<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>cn.edu.fjut</groupId>
<artifactId>MySpringBootTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<name>MySpringBootTest</name>
<url></url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven-jar-plugin.version>2.6</maven-jar-plugin.version>
</properties>
<dependencies>oracle ocp证书查询
<!-- mvnrepository/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>MySpringBootTest</finalName>
<plugins>
<!-- 编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<!-- 添加查看源码插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>

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