Spring boot 入门
Posted breeze
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring boot 入门相关的知识,希望对你有一定的参考价值。
-
Spring boot 简介
- 是一个简化Spring 应用开发的一个框架 ;
- 是整合了整个Spring技术栈的集合。
- 是J2E 开发的一站式解决方案;
-
微服务
- 微服务架构风格 ; 服务微化, 将单个的功能模块拆开来。一个应用就是一个小型服务,可以通过HTTP 的方式进行互通;
- 单体应用 : ALL IN ONE
- 微服务每个功能元素最终都是一个可以独立替换和升级的软件单元;
更多关于微服务的 参照 这里 官网 。
环境准备:
JDK (至少1.7 以上)
maven (3.3以上)
.idea
.spring boot v2.1.0.RELEASE(版本自选)
maven 配置:
setting.xml 添加本地仓库 以及 镜像仓库, 推荐阿里仓库
<localRepository>本地仓库地址</localRepository>
下面是阿里的云仓库: 在 miroors 标签中 ,添加仓库地址
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
</mirrors>
idea maven配置 这里就不说了。自行研究, 下面 创建第一个springboot 项目 。
新建工程 选择
然后下一步下一步, 工程项目名字可以在其中修改 。
这里可以添加我们需要的组件, 就会自动添加依赖, 然后导入相关的组件,然后下一步下一步 确定。工程就生成了
删除mvn等其他没用的文件,得到就是这样一个工程目录。
IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;
选择我们需要的模块;向导会联网创建Spring Boot项目;
默认生成的Spring Boot项目;
- 主程序已经生成好了,我们只需要我们自己的逻辑
- resources文件夹中目录结构
- static:保存所有的静态资源; js css images;
- templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
- application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;
//主程序, 启动Spring boot的应用,也就是我们常说的程序入口。 /** * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */ @SpringBootApplication public class WebserviceApplication { public static void main(String[] args) { // 启动 Spring应用 SpringApplication.run(WebserviceApplication.class, args); } }
编写一个测试控制器
@RestController public class Hello { @RequestMapping("/hi") private String sayHello(){ return "Hello ,Wrod"; } }
运行上面的主程序文件之后 ,我们来访问
这就完成了访问 ,就实现了一个简单的helloword程序。相当方便。
-
简化部署
我们的这个插件。可以使我们将程序直接打包成一个可执行的jar 包文件, 直接访问, 不用在安装Tomcat服务器,其中内嵌了Tomcat服务器。
我们找到项目的 Maven Project 点击package 开始打包,
打包日志
完成后 项目工程会出现一个文件
这就是我们打包的可执行jar包文件, 将jar包放到桌面上 , 然后我们通过cmd 命令去运行这个包
看到我们最后一个文件就是刚刚放到桌面的jar包 ,通过java -jar + 项目名 命令运行这个项目(Linux 中也是一样的方法)
这样我们项目就运行成功了, 然后再来浏览器输入地址
和我们刚刚 在Idea 中 运行的结果一样, 这就是spring boot 的简化部署功能, 是不是很强大, 为我们以后部署测试项目提供了很大的方便。
-
深入分析POM文件
Spring Boot的版本仲裁中心:以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> 他的父项目是 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <relativePath>../../spring-boot-dependencies</relativePath> </parent> 他来真正管理Spring Boot应用里面的所有依赖版本;
启动器 :
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> **spring-boot-starter**-==web==: spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件; Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。
要用什么功能就导入什么场景的启动器
主程序入口类:
@SpringBootApplication public class WebserviceApplication { public static void main(String[] args) { SpringApplication.run(WebserviceApplication.class, args); } }
我们进去 SpringBootApplication 注解 发现其内容是这样的
所以说
SpringBootApplication 是集成了 SpringBootConfiguration 配置注解 。 EnableAutoConfiguration自动配置注解 。ComponentScan 容器扫描注解
@SpringBootConfiguration:Spring Boot的配置类 ,标注在某个类上,表示这是一个Spring Boot的配置类;
@Configuration:配置类上来标注这个注解; 配置类 ----- 配置文件(以前的XML);配置类也是容器中的一个组件;
@Component @EnableAutoConfiguration:开启自动配置功能;以前我们需要配置的东西,Spring Boot帮我们自动配置;
@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;
我们进去
EnableAutoConfiguration 注解
@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackages.Registrar.class):
Spring的底层注解@Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class;
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;
@Import(EnableAutoConfigurationImportSelector.class);
给容器中导入组件?
EnableAutoConfigurationImportSelector:导入哪些组件的选择器;
将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;
会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;
有了自动配置类,免去了我们手动编写配置注入功能组件等的工作;
SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);
Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们;
J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-2.1.0.RELEASE.jar;
以上都是spring boot 内置的自动配置组件。
以上是关于Spring boot 入门的主要内容,如果未能解决你的问题,请参考以下文章
一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式
一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式
一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式