SpringBoot -- SpringBoot入门

Posted 灰色天空_graySky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot -- SpringBoot入门相关的知识,希望对你有一定的参考价值。

一.简介
  Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用.
  1.快速创建独立运行的Spring项目以及与主流框架集成;
  2.使用嵌入式的Service容器,应用无需打成war包;
  3.starters(启动器)自动依赖于版本控制;
  4.大量的自动配置,简化开发,也可修改默认值;
  5.无需配置XML,无代码生成,开箱即用;
  6.准生产环境的运行时应用监控;
  7.与云计算的天然集成;
  Spring Boot是基于Spring 框架的一个再封装,在Spring Boot的自动配置中,有很多与Spring框架相关的API
  总结:
    Spring Boot就是用来简化Spring应用开发的一个框架;是整个Spring技术栈的一个大整合;而Spring技术栈则是面向J2EE的企业级开发的,因此Spring Boot是J2EE开发的一个一站式解决方案.

二.微服务的简介
   在2014年Martin fowler发表了一片关于微服务的博客,介绍了微服务的设计思想和理念;
   微服务:
   微服务即是一种架构风格,一个应用应该是一组小型服务的组合,而这些小型服务都运行在自己的进程内,而这些小型服务可以通过HTTP的方法进行互通.每一个功能元素最终都是一个可独立替换,可独立升级的软件单元.
   单体应用:
   开发,测试,部署简单.但是一次简单的修改,就可能需要重新部署整个应用以及所有服务器.

三.环境准备
  开发环境:JDK 1.8
  maven3.X
  IntellijIDEA 2019
  Spring Boot 1.5.9RELEASE
  1.在maven配置文件中添加当前的编译环境配置:

 1         <profile>
 2             <id>jdk-1.8</id>
 3             <activation>
 4                 <activeByDefault>true</activeByDefault>
 5                 <jdk>1.8</jdk>
 6             </activation>
 7             <properties>
 8                 <maven.compiler.source>1.8</maven.compiler.source>
 9                 <maven.compiler.target>1.8</maven.compiler.target>
10                 <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
11             </properties>
12         </profile>

   2.IDEA设置使用自己下载安装的Maven

四.Hello World案例
  功能描述:浏览器发送hello请求,服务器接收请求并处理,响应hello world字符串;
  1.创建一个Maven工程:(jar)
  2.导入Spring Boot相关的依赖:

 1     <parent>
 2         <groupId>org.springframework.boot</groupId>
 3         <artifactId>spring-boot-starter-parent</artifactId>
 4         <version>1.5.9.RELEASE</version>
 5     </parent>
 6     <dependencies>
 7         <dependency>
 8             <groupId>org.springframework.boot</groupId>
 9             <artifactId>spring-boot-starter-web</artifactId>
10         </dependency>
11     </dependencies>

  3.编写一个主程序来启动Spring Boot应用

 1 package com.skykuqi.springboot.helloworld;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 /**
 7  * @author : S K Y
 8  * @version :0.0.1
 9  * 使用@SpringBootApplication注解来标注这是一个Spring Boot应用
10  */
11 
12 @SpringBootApplication
13 public class HelloWorldMainApplication {
14     public static void main(String[] args) {
15         SpringApplication.run(HelloWorldMainApplication.class, args);
16     }
17 }

  4.编写相关的controller

 1 package com.skykuqi.springboot.helloworld.controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.ResponseBody;
 6 
 7 /**
 8  * @author : S K Y
 9  * @version :0.0.1
10  */
11 @Controller
12 public class HelloController {
13 
14     @ResponseBody
15     @RequestMapping("/hello")
16     public String hello() {
17         return "Hello world!";
18     }
19 }

  5.启动程序
  6.简化部署:可以将应用打包成一个可执行的jar包

1     <!--导入Maven的Spring Boor插件-->
2     <build>
3         <plugins>
4             <plugin>
5                 <groupId>org.springframework.boot</groupId>
6                 <artifactId>spring-boot-maven-plugin</artifactId>
7             </plugin>
8         </plugins>
9     </build>

五.项目pom文件解析
  1.父项目

1  <!--父项目,还存在一个父项目spring-boot-dependencies,其中的properties中定义了所有依赖的版本
2     dependencies项目用来管理所有的依赖,即Spring Boot的版本仲裁中心,以后我们导入依赖默认是不需要写版本的;
3     也有一部分jar包是没有依赖管理的则需要自行确定版本-->
4     <parent>
5         <groupId>org.springframework.boot</groupId>
6         <artifactId>spring-boot-starter-parent</artifactId>
7         <version>1.5.9.RELEASE</version>
8     </parent>

  2.导入的依赖

1     <!--Spring boot自定仲裁,不需要定义版本号;
2      spring-boot-starter-web: springBoot场景启动器,帮我们导入了Spring web模块运行所依赖的所有jar 包;
3         -->
4     <dependencies>
5         <dependency>
6             <groupId>org.springframework.boot</groupId>
7             <artifactId>spring-boot-starter-web</artifactId>
8         </dependency>
9     </dependencies>  

  Spring-Boot 将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景,它的相关依赖都会导入进来.开发什么样的功能就使用什么样的场景启动器;
  3.主程序类

 1 package com.skykuqi.springboot.helloworld;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 /**
 7  * @author : S K Y
 8  * @version :0.0.1
 9  * 使用@SpringBootApplication注解来标注这是一个Spring Boot应用,需要将主程序入口放在根目录
10  */
11 
12 @SpringBootApplication
13 public class HelloWorldMainApplication {
14     /*@SpringBootApplication该注解标注在某个类上,说明这个类是springBoot的主配置类,SpringBoot就应该运行这个类的
15     main方法来启动SpringBoot应用程序,在该注解中含有如下注解:
16         @SpringBootConfiguration:Spring Boot的配置类,标注在某个类上表示这是一个Spring boot的配置类;
17             @Configuration:配置注解,在使用Spring时标注在配置类上来声明一个javaConfig;配置类也是容器中的一个组件:@Component;
18         @EnableAutoConfiguration: 开启自动配置功能,以前我们需要配置的东西,Spring Boot帮我们自动配置,该注解则可以告知
19         springBoot开启自动配置;
20                 @AutoConfigurationPackage:自动配置包
21                     @Import:Spring的底层注解,给容器导入一个组件;导入的组件由
22                         AutoConfigurationPackages.Registrar.class:new PackageImport(metadata).getPackageName()
23                         将主配置类(@SpringBootApplication)所在的包及所有子包里面的所有组件扫描到Spring容器中
24                 @Import(EnableAutoConfigurationImportSelector.class):导入哪些组件的选择器,将所有需要导入的组将以全类名的方式返回,
25                 这些组件就会被加入到容器中(xxxAutoConfiguration),就是给容器中导入这个场景需要的所有组件,并配置到这些组件
26                     getCandidateConfigurations(annotationMetadata,attributes):
27                             public static List<String> loadFactoryNames(Class<?> factoryClass, ClassLoader classLoader)
28                             1.从类路径下的"META-INF/spring.factories"中获取EnableAutoConfiguration指定的值;将这些值作为自动配置
29                             类导入到容器中,自动配置类就生效,帮我们进行自动配合工作,以前我们需要自己配置的东西自动配置类都帮我们完成了;
30                org.springframework.boot.autoconfigure中包含了所有的依赖配置类*/
31     public static void main(String[] args) {
32         SpringApplication.run(HelloWorldMainApplication.class, args);
33     }
34 }

  有了自动配置类就免去了我们手动编写配置注入功能组件等的工作.
六.快速创建SpringBoot的应用
  我们所使用的ide都支持我们使用springBoot项目的创建向导来快速创建SpringBoot项目;选择我们需要的模块,向导会联网创建SpringBoot项目;
  1.主程序已经生成好了,我们只需要编写我们自己的业务逻辑
  2.resources文件夹中的目录结构:
    static:保存所有的静态资源  JS CSS html
    templates:保存所有的模板页面,Spring Boot默认是jar包的方式,使用嵌入式的TomCat,默认不支持JSP页面,想要做JSP页面我们可以使用模板引擎(freemarker,thymeleaf);
    appliction.properties:Spring Boot应用的配置文件
       修改默认端口号为80:server.port=80

以上是关于SpringBoot -- SpringBoot入门的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot 入门第一章

Springboot之初入江湖

应届本科生凭借一份神级 SpringBoot 学习笔记,成功入职阿里

SpringBoot入门第一章:Hello World

springboot~入门第二篇~页面html跳转~

Java:SpringBoot整合hibernate-validator实现入参数据校验