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入门的主要内容,如果未能解决你的问题,请参考以下文章