Spring boot 入门

Posted breeze

tags:

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

  •   Spring  boot 简介 

  1.       是一个简化Spring  应用开发的一个框架 ;
  2.       是整合了整个Spring技术栈的集合。
  3.       是J2E 开发的一站式解决方案;
  • 微服务

  1. 微服务架构风格 ;  服务微化, 将单个的功能模块拆开来。一个应用就是一个小型服务,可以通过HTTP 的方式进行互通;
  2. 单体应用 : ALL IN ONE 
  3. 微服务每个功能元素最终都是一个可以独立替换和升级的软件单元;

      更多关于微服务的 参照    这里 官网 。

  环境准备: 

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/Spring-Boot 学习2 入门知识

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式

Spring Boot的简单入门