【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        spring mvc开发相比较servlet-jsp-mysql而言,是简单很多。但是它也有一个缺点,就是xml配置文件较多,比如说pom.xml、web.xml、***-servlet.xml、applicationContext.xml等等。所以在spring基础之上,为了进一步简化spring开发的流程,人们开发了spring boot。它相当于一个spring全家桶,大大简化了spring的开发步骤。今天正好来学习下。

        文章部分内容参考了这个链接,,在此表示感谢。

1、IDEA创建工程,选择Spring Initializr

java web开发(从spring boot到spring cloud)_嵌入式-老费的博客

2、略过group和artifact的设置,直接下一步,

java web开发(从spring boot到spring cloud)_嵌入式-老费的博客

3、选择web和spring web,下一步

java web开发(从spring boot到spring cloud)_嵌入式-老费的博客

                目前这里设置的选项是web和spring web。但是大家可以看下左下角的选项,这里出现了很多spring cloud的内容,这说明spring cloud的很多配置本身也是依赖于spring boot来开发的。

4、工程命名为Hello,

java web开发(从spring boot到spring cloud)_嵌入式-老费的博客

5、在com.example.demo添加HelloController.java文件

package com.example.demo;  import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;  @RestController public class HelloController {      @RequestMapping("/hello")     public String get(){         return "Hello Spring Boot";     } } 

6、设置内置web server启动端口为8090

java web开发(从spring boot到spring cloud)_嵌入式-老费的博客

        因为默认端口是8080,所以这部分一定要修改一下。

7、不需要继续配置tomcat server,直接使用默认server即可,单击绿色按钮,不出意外你会看到这样的打印,

"C:Program Files (x86)Javajdk1.8.0_91binjava.exe" -Dserver.port=8090 -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:C:Program FilesJetBrainsIntelliJ IDEA 2020.1.1libidea_rt.jar=63113:C:Program FilesJetBrainsIntelliJ IDEA 2020.1.1bin" -Dfile.encoding=UTF-8 -classpath "C:Program Files (x86)Javajdk1.8.0_91jrelibcharsets.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibdeploy.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextaccess-bridge-32.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextcldrdata.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextdnsns.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextjaccess.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextjfxrt.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextlocaledata.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextnashorn.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextsunec.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextsunjce_provider.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextsunmscapi.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextsunpkcs11.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibextzipfs.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibjavaws.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibjce.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibjfr.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibjfxswt.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibjsse.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibmanagement-agent.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibplugin.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibresources.jar;C:Program Files (x86)Javajdk1.8.0_91jrelibrt.jar;C:UsersfeixiaoxingDesktopHellotargetclasses;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkbootspring-boot-starter-web2.7.4spring-boot-starter-web-2.7.4.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkbootspring-boot-starter2.7.4spring-boot-starter-2.7.4.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkbootspring-boot2.7.4spring-boot-2.7.4.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkbootspring-boot-autoconfigure2.7.4spring-boot-autoconfigure-2.7.4.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkbootspring-boot-starter-logging2.7.4spring-boot-starter-logging-2.7.4.jar;D:softwareapache-maven-3.6.3-binrepositorychqoslogbacklogback-classic1.2.11logback-classic-1.2.11.jar;D:softwareapache-maven-3.6.3-binrepositorychqoslogbacklogback-core1.2.11logback-core-1.2.11.jar;D:softwareapache-maven-3.6.3-binrepositoryorgapachelogginglog4jlog4j-to-slf4j2.17.2log4j-to-slf4j-2.17.2.jar;D:softwareapache-maven-3.6.3-binrepositoryorgapachelogginglog4jlog4j-api2.17.2log4j-api-2.17.2.jar;D:softwareapache-maven-3.6.3-binrepositoryorgslf4jjul-to-slf4j1.7.36jul-to-slf4j-1.7.36.jar;D:softwareapache-maven-3.6.3-binrepositoryjakartaannotationjakarta.annotation-api1.3.5jakarta.annotation-api-1.3.5.jar;D:softwareapache-maven-3.6.3-binrepositoryorgyamlsnakeyaml1.30snakeyaml-1.30.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkbootspring-boot-starter-json2.7.4spring-boot-starter-json-2.7.4.jar;D:softwareapache-maven-3.6.3-binrepositorycomfasterxmljacksoncorejackson-databind2.13.4jackson-databind-2.13.4.jar;D:softwareapache-maven-3.6.3-binrepositorycomfasterxmljacksoncorejackson-annotations2.13.4jackson-annotations-2.13.4.jar;D:softwareapache-maven-3.6.3-binrepositorycomfasterxmljacksoncorejackson-core2.13.4jackson-core-2.13.4.jar;D:softwareapache-maven-3.6.3-binrepositorycomfasterxmljacksondatatypejackson-datatype-jdk82.13.4jackson-datatype-jdk8-2.13.4.jar;D:softwareapache-maven-3.6.3-binrepositorycomfasterxmljacksondatatypejackson-datatype-jsr3102.13.4jackson-datatype-jsr310-2.13.4.jar;D:softwareapache-maven-3.6.3-binrepositorycomfasterxmljacksonmodulejackson-module-parameter-names2.13.4jackson-module-parameter-names-2.13.4.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkbootspring-boot-starter-tomcat2.7.4spring-boot-starter-tomcat-2.7.4.jar;D:softwareapache-maven-3.6.3-binrepositoryorgapachetomcatembedtomcat-embed-core9.0.65tomcat-embed-core-9.0.65.jar;D:softwareapache-maven-3.6.3-binrepositoryorgapachetomcatembedtomcat-embed-el9.0.65tomcat-embed-el-9.0.65.jar;D:softwareapache-maven-3.6.3-binrepositoryorgapachetomcatembedtomcat-embed-websocket9.0.65tomcat-embed-websocket-9.0.65.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkspring-web5.3.23spring-web-5.3.23.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkspring-beans5.3.23spring-beans-5.3.23.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkspring-webmvc5.3.23spring-webmvc-5.3.23.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkspring-aop5.3.23spring-aop-5.3.23.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkspring-context5.3.23spring-context-5.3.23.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkspring-expression5.3.23spring-expression-5.3.23.jar;D:softwareapache-maven-3.6.3-binrepositoryorgslf4jslf4j-api1.7.36slf4j-api-1.7.36.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkspring-core5.3.23spring-core-5.3.23.jar;D:softwareapache-maven-3.6.3-binrepositoryorgspringframeworkspring-jcl5.3.23spring-jcl-5.3.23.jar" com.example.demo.DemoApplication    .   ____          _            __ _ _  /\ / ___'_ __ _ _(_)_ __  __ _     ( ( )___ | '_ | '_| | '_ / _` |      \/  ___)| |_)| | | | | || (_| |  ) ) ) )   '  |____| .__|_| |_|_| |___, | / / / /  =========|_|==============|___/=/_/_/_/  :: Spring Boot ::                (v2.7.4)  2022-10-06 18:29:19.419  INFO 19036 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 1.8.0_91 on DESKTOP-IG2CVO4 with PID 19036 (C:UsersfeixiaoxingDesktopHellotargetclasses started by feixiaoxing in C:UsersfeixiaoxingDesktopHello) 2022-10-06 18:29:19.422  INFO 19036 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default" 2022-10-06 18:29:20.033  INFO 19036 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8090 (http) 2022-10-06 18:29:20.039  INFO 19036 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat] 2022-10-06 18:29:20.039  INFO 19036 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.65] 2022-10-06 18:29:20.116  INFO 19036 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext 2022-10-06 18:29:20.116  INFO 19036 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 661 ms 2022-10-06 18:29:20.382  INFO 19036 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8090 (http) with context path '' 2022-10-06 18:29:20.389  INFO 19036 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 1.24 seconds (JVM running for 1.724) 2022-10-06 18:30:59.461  INFO 19036 --- [nio-8090-exec-4] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet' 2022-10-06 18:30:59.461  INFO 19036 --- [nio-8090-exec-4] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet' 2022-10-06 18:30:59.462  INFO 19036 --- [nio-8090-exec-4] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms 

8、打开一个浏览器,输入localhost:8090/hello,如果你看到这样的网页,那基本上代表配置ok了,那代表第一个spring boot程序ok了。

java web开发(从spring boot到spring cloud)_嵌入式-老费的博客

9、总结

        和之前spring mvc生成class、lib、resources文件,拷贝到tomcat开启服务不同,spring boot可以直接和web server打包,单独形成一个服务。所以这也就是所谓的微服务。微服务的功能不多,相互之间实现解耦,每一个服务除了对外的接口之外,没有共享的内容,我想着这也许就是微服务的由来把。

        spring boot是spring cloud的重要基础。spring boot一般用来开发单个服务,而spring cloud用于集成很多的服务,并在上面做流量管制,spring cloud上面继承的这些服务一般也是基于spring boot开发的,只是在上面添加了不同的注解,比如@RestController、@EnableConfigServer、@EnableEurekaServer、@EnableCircuitBreaker、@EnableFeinClients等等。

        如果只是开发单个web程序,学习spring boot就可以了。如果需要进一步深造,spring cloud是一个相对比较成熟的方案,值得学习一下。