一.简介
  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配置文件中添加当前的编译环境配置:

         <profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

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

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

     <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

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

 package com.skykuqi.springboot.helloworld;

 import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* @author : S K Y
* @version :0.0.1
* 使用@SpringBootApplication注解来标注这是一个Spring Boot应用
*/ @SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}

  4.编写相关的controller

 package com.skykuqi.springboot.helloworld.controller;

 import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; /**
* @author : S K Y
* @version :0.0.1
*/
@Controller
public class HelloController { @ResponseBody
@RequestMapping("/hello")
public String hello() {
return "Hello world!";
}
}

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

     <!--导入Maven的Spring Boor插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

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

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

  2.导入的依赖

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

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

 package com.skykuqi.springboot.helloworld;

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

  有了自动配置类就免去了我们手动编写配置注入功能组件等的工作.
六.快速创建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入门的更多相关文章

  1. SpringBoot+SpringData 整合入门

    SpringData概述 SpringData :Spring的一个子项目.用于简化数据库访问,支持NoSQL和关系数据存储.其主要目标是使用数据库的访问变得方便快捷. SpringData 项目所支 ...

  2. springboot整合elasticsearch入门例子

    springboot整合elasticsearch入门例子 https://blog.csdn.net/tianyaleixiaowu/article/details/72833940 Elastic ...

  3. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  4. SpringBoot起飞系列-入门(一)

    一.SpringBoot简介 1.1 什么是SpringBoot 说到spring系列,可能大家都很熟悉,spring.springmvc,美之名曰:spring全家桶,那么springboot其实也 ...

  5. SpringBoot开发快速入门

    SpringBoot开发快速入门 目录 一.Spring Boot 入门 1.Spring Boot 简介 2.微服务 3.环境准备 1.maven设置: 2.IDEA设置 4.Spring Boot ...

  6. SpringBoot之基础入门-专题一

    SpringBoot之基础入门-专题一 一.Spring介绍 1.1.SpringBoot简介 在初次学习Spring整合各个第三方框架构建项目的时候,往往会有一大堆的XML文件的配置,众多的dtd或 ...

  7. SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解

    SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...

  8. 【SpringBoot】快速入门

    博客主页:准Java全栈开发工程师 00年出生,即将进入职场闯荡,目标赚钱,可能会有人觉得我格局小.觉得俗,但不得不承认这个世界已经不再是以一条线来分割的平面,而是围绕财富旋转的球面,成为有钱人不是为 ...

  9. 【SpringBoot】SpringBoot 入门示例

    参考资料: http://www.tuicool.com/articles/mqeee2A http://www.cnblogs.com/suncj/p/4065589.html http://spr ...

  10. 【SpringBoot】SpringBoot与SpringMVC自动配置(五)

    本文介绍SpringBoot对Spring MVC自动配置,SpringBoot自动配置原理可以参考:[SpringBoot]SpringBoot配置与单元测试(二) 首先新建一个SpringBoot ...

随机推荐

  1. L3-016. 二叉搜索树的结构

    二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值:若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值:它的左.右子树也分别 ...

  2. 1125. Chain the Ropes (25)

    Given some segments of rope, you are supposed to chain them into one rope. Each time you may only fo ...

  3. Python核心技术与实战——九|面向对象

    在搞清了各种数据类型.赋值判断.循环以后如果是从C++.Java语言入手的,就会有一个深坑要过:OOP(object oriented programming):公私有保护.多重继承.多态派生.纯函数 ...

  4. java 模拟表单方式提交上传文件

    /** * 模拟form表单的形式 ,上传文件 以输出流的形式把文件写入到url中,然后用输入流来获取url的响应 * * @param url 请求地址 form表单url地址 * @param f ...

  5. SSM框架整合之单独整合Mybatis

    整合步骤 导入必须jar包 mybatis核心jar包 mybatis依赖jar包 数据库驱动包 建立数据库表 建立实体类 建立Mapper接口 建立sql映射文件 <?xml version= ...

  6. Textarea随着文本的字数自适应高度,后来发现用 contenteditable 代替textarea 效果更佳

    做移动端项目遇到很多问题,最近比如textarea 随着文本的字数自动撑开高度, 网上也查阅了一些资料发现比较有用的方法 就是获取 textarea的行数和换行符来动态改变textarea的高度  就 ...

  7. App 区别

    本文的结构主要分为以下部分: 1.app的分类 2.每类app的定义,明确各类app具体是什么 3.各类app的优缺点 4.具体开发过程中,到底该采用哪种类型的app 1.app的分类 大致可以分为这 ...

  8. shiro常见的异常以及处理方法

    1.shiro的常见异常 1.1  AuthenticationException 异常是Shiro在登录认证过程中,认证失败需要抛出的异常. AuthenticationException包含以下子 ...

  9. Java数据结构之单链表

    这篇文章主要讲解了通过java实现单链表的操作,一般我们开始学习链表的时候,都是使用C语言,C语言中我们可以通过结构体来定义节点,但是在Java中,我们没有结构体,我们使用的是通过类来定义我们所需要的 ...

  10. [CSP-S模拟测试]:导弹袭击(数学+凸包+单调栈)

    题目背景 $Guess$准备向敌军阵地发起进攻了!$Guess$的武器是自动制导导弹.然而在机房是不允许游戏的,所以班长$XZY$对游戏界面进行了降维打击,结果... 题目描述 众所周知,环境因素对导 ...