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 添加本地仓库 以及 镜像仓库, 推荐阿里仓库

 本地仓库地址

 下面是阿里的云仓库: 在 miroors 标签中  ,添加仓库地址 

 <mirrors>
    

    <mirror>
    <id>nexus-aliyunid>
    <mirrorOf>*mirrorOf>
    <name>Nexus aliyunname>
    <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
    mirror>

mirrors>

 

 idea maven配置 这里就不说了。自行研究, 下面 创建第一个springboot 项目 。  

   新建工程 选择

Spring boot 入门_第1张图片

然后下一步下一步, 工程项目名字可以在其中修改 。

Spring boot 入门_第2张图片

这里可以添加我们需要的组件, 就会自动添加依赖, 然后导入相关的组件,然后下一步下一步 确定。工程就生成了 

 Spring boot 入门_第3张图片 

删除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";
     }
}

运行上面的主程序文件之后 ,我们来访问 

Spring boot 入门_第4张图片

 

这就完成了访问 ,就实现了一个简单的helloword程序。相当方便。

 

  •  简化部署

Spring boot 入门_第5张图片

我们的这个插件。可以使我们将程序直接打包成一个可执行的jar 包文件, 直接访问, 不用在安装Tomcat服务器,其中内嵌了Tomcat服务器。

我们找到项目的 Maven Project   点击package  开始打包, 

 Spring boot 入门_第6张图片

打包日志 

Spring boot 入门_第7张图片

完成后 项目工程会出现一个文件 

Spring boot 入门_第8张图片

这就是我们打包的可执行jar包文件, 将jar包放到桌面上 , 然后我们通过cmd 命令去运行这个包

Spring boot 入门_第9张图片

看到我们最后一个文件就是刚刚放到桌面的jar包    ,通过java -jar + 项目名 命令运行这个项目(Linux 中也是一样的方法)

Spring boot 入门_第10张图片

这样我们项目就运行成功了, 然后再来浏览器输入地址

Spring boot 入门_第11张图片

和我们刚刚 在Idea 中 运行的结果一样, 这就是spring boot 的简化部署功能, 是不是很强大, 为我们以后部署测试项目提供了很大的方便。

  •  深入分析POM文件

  Spring Boot的版本仲裁中心:以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)

<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>1.5.9.RELEASEversion>
parent>

他的父项目是
<parent>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-dependenciesartifactId>
  <version>1.5.9.RELEASEversion>
  <relativePath>../../spring-boot-dependenciesrelativePath>
parent>
他来真正管理Spring Boot应用里面的所有依赖版本;

 

启动器 :

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
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 注解 发现其内容是这样的

Spring boot 入门_第12张图片

所以说 

SpringBootApplication   是集成了 SpringBootConfiguration 配置注解 。  EnableAutoConfiguration自动配置注解 。ComponentScan 容器扫描注解

 @SpringBootConfiguration:Spring Boot的配置类 ​,标注在某个类上,表示这是一个Spring Boot的配置类; ​     

 @Configuration:配置类上来标注这个注解; 配置类 -----  配置文件(以前的XML);配置类也是容器中的一个组件;

@Component @EnableAutoConfiguration:开启自动配置功能;以前我们需要配置的东西,Spring Boot帮我们自动配置;

@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

我们进去 

EnableAutoConfiguration 注解 

Spring boot 入门_第13张图片

@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 入门_第14张图片

以上都是spring boot 内置的自动配置组件。

 

你可能感兴趣的:(Spring boot 入门)