【Spring Boot】从入门到放弃【基础篇】

本文是Spring Boot的基础教程,详细介绍了从入门到简单应用的全过程。包括Spring Boot的入门步骤,如创建Maven工程、配置及运行,强调了其便捷性,如自动配置、内嵌Tomcat等特性。同时,文章还提及了微服务概念,讨论了单体应用与微服务的区别,并简单介绍了Spring Boot的配置文件、JavaBean和测试。最后,文章涵盖了日志框架的选择和配置,以及Spring Boot与Web开发、数据访问的整合。
摘要由CSDN通过智能技术生成

要想学习Spring Boot你需要拥有相应的Spring框架使用经验和Maven的使用:Spring教程

基础篇

  • 一、Spring Boot 入门

    在这里插入图片描述

    • 简介:

      SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

    • 特点:

      (1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
      (2)内嵌Tomcat或Jetty等Servlet容器;
      (3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
      (4)尽可能自动配置Spring容器;
      (5)提供准备好的特性,如指标、健康检查和外部化配置;
      (6)绝对没有代码生成,不需要XML配置。

    • 微服务简介
      • 提到微服务首先需要提一下单体应用。单体应用就是我们平时一般在做练习时会使用的,将所有的东西都写在一起打成一个war包部署到Tomcat中。

        • 优点:
        1. 开发测试简单
        2. 部署简单
        3. 扩展比较简单

        但是随着软件需求的日益增长,单体应用因为其“牵一发而动全身”的问题也越来越显著。为维护与分工合作造成了极大地困扰

      在这里插入图片描述

      • 微服务:架构风格。一个应用应该是一组小型服务;可以通过HTTP的方式进行互通,它将每个元素功能放进一个独立的服务中,并且通过跨服务器分发这些服务进行扩展,只在需要时才复制。每一个功能元素最终都是一个可独立替换和独立升级的软件单元

      在这里插入图片描述

      • maven配置(在maven安装目录conf文件夹下配置setting.xml)
        	在profiles标签中添加
        
        <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.compliler.compilerVersion>1.8</maven.compliler.compilerVersion>
              </properties>
            </profile>
        
      • HelloWorld入门程序
        • 创建一个Maven工程(无需骨架)

        • 导jar包

           <parent>
                  <artifactId>spring-boot-starter-parent</artifactId>
                  <groupId>org.springframework.boot</groupId>
                  <version>1.5.9.RELEASE</version>
              </parent>
              <dependencies>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-web</artifactId>
                  </dependency>
              </dependencies>
          
        • 编写一个主程序,启动SpringBoot应用

          package com.boot.main;
          
          import org.springframework.boot.SpringApplication;
          import org.springframework.boot.autoconfigure.SpringBootApplication;
          
          /**
           * @Author: 东方老赢
           * @Date: 2020/4/25 14:34
           *
           * @SpringBootApplication:来标注一个主程序类,说明这是一个SpringBoot应用
           */
          @SpringBootApplication
          public class HelloWorld {
                     
              public static void main(String[] args) {
                     
                  //spring应用启动起来
                  SpringApplication.run(HelloWorld.class,args);
              }
          }
          
        • 编写controller

          package com.boot.controller;
          
          import org.springframework.stereotype.Controller;
          import org.springframework.web.bind.annotation.RequestMapping;
          import org.springframework.web.bind.annotation.ResponseBody;
          
          /**
           * @Author: 东方老赢
           * @Date: 2020/4/25 14:46
           */
          @Controller
          @RequestMapping("/controller")
          public class HelloController {
                     
              @ResponseBody
              @RequestMapping("/hello")
              public String hello(){
                     
                  return "Hello World";
              }
          }
          
          

    然后直接运行main方法:当出现下面界面时,说明启动成功
    在这里插入图片描述
    然后在网页测试
    在这里插入图片描述
    这便是运行成功啦!是不是非常方便呢,不用引入繁琐的jar包,不用配置Tomcat,甚至不必写配置文件,你就可以轻松运行起一个简单的web项目,SpringBoot入门就开始啦!

    • 简化部署

      • 首先在pom.xml导入插件

        <!--    这个插件,可以将应用打成一个可执行的jar包-->
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        
      • 单击IDEA右边侧栏的Maven找到图中package双击,他会自动将该工程打成jar包放在target目录下
        在这里插入图片描述 在这里插入图片描述
        在这里插入图片描述

      • 将jar包复制到桌面启动命令提示符(使用java -jar命令启动jar包)
        在这里插入图片描述

      • 然后继续在网页测试,是依然可以的,根本都没有用到tomcat,是不是很神奇呢
        在这里插入图片描述

      • 细节,为什么没有tomcat也可以部署jar包呢?这是因为你导入SpringBoot的jar包后,他自动给你导入了一系列的jar包,其中就包含了tomcat的jar包,现在我们可以更加了解到SpringBoot是有多方便了吧
        在这里插入图片描述

    • 细节:HelloWorld探究
      • pom.xml文件

        • 父项目
          在这里插入图片描述
        • 启动器starter(导入的依赖)

        在这里插入图片描述

      • 自动配置(主程序类、主入口类)
        在这里插入图片描述

      • 使用向导快捷键快速创建SpringBoot的应用(Spring Initializer)
        请添加图片描述

        请添加图片描述
        请添加图片描述
        请添加图片描述
        在这里插入图片描述
        resources文件夹的目录结构

        • static:保存所有的静态资源;js、css、images;
        • templates:保存所有的模板页面;(SpringBoot默认jar包使用嵌入式的Tomcat,默认不支持jsp页面);可以使用模板引擎(freemarker、thymeleaf);
        • application.properties:SpringBoot应用的配置文件;可以修改一些默认设置
  • 二、Spring Boot 配置

    • 配置文件
      • SpringBoot使用一个全局的配置文件(配置文件名是固定的)
        application.properties 或者 application.yml
      • 配置文件的作用:修改SpringBoot自动配置的默认值;
      • yml:是YAML语言的文件,以数据为中心,比 json、xml 等更适合做配置文件
        在这里插入图片描述
    • YAML语法
      • 基本语法:

        • k:(空格)v:表示一对键值对(冒号与值之间必须有空格,如果没有字体颜色会变白)
        • 以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
        • 属性值的大小写也敏感;
      • 值的写法

        • 字面量:普通的值(数字,字符串,布尔)

          • k: v:字面直接来写;
            字符串默认不用加引号(无论单双)
            双引号:不会转移字符串里面的特殊字符;特殊字符会作为本身想表达的意思
            单引号:会转义特殊字符,特殊字符最终只是一个普通的字符串数据
            在这里插入图片描述
        • 对象、Map(属性和值)(键值对)

          • k: v:在下一行来写对象的属性和值;注意缩进
            对象还是k: v的方式
          # k: v方式
          people:
          	name: Lisa
          	age: 22
          #行内写法
          people: {
                     name: Lisa,age: 22}
          
        • 数组(List、Set)

          • 用 - 值表示数组中的一个元素
          #使用-值
          pets:
          	- cat
          	- dag
          	- pig
          # 行内写法
          pets: [cat,dog,pig]
          
      • 配置文件注入

        • 配置文件

          person:
            name: Lisa
            age: 22
            boss: false
            bir: 2008/7/8
            map: {
                     k1: v1,k2: 14}
            list:
              - a
              - b
            dog:
              name: 小狗
              age: 2
          
          
        • JavaBean

          package com.boot.bean;
          
          import org.springframework.boot.context.properties.ConfigurationProperties;
          import org.springframework.stereotype.Component;
          
          import java.io.Serializable;
          import java.util.Date;
          import java.util.List;
          import java.util.Map;
          
          /**
           * @Author: 东方老赢
           * @Date: 2020/4/26 15:25
           *
           *
           * @Component: 将其注入到容器中
           * @ConfigurationProperties: 告诉SpringBoot将本类中所有的属性和配置文件中相关的配置进行绑定
           *  prefix = "person":配置文件中那个下面的所有属性进行一一映射
           */
          
          @Component
          @ConfigurationProperties(prefix = "person")
          public class Person implements Serializable {
                     
              private String name;
              private Integer age;
              private Boolean boss;
              private Date bir;
          
              private Map<String,Object> map;
              private List<Object> list;
              private Dog dog;
          
              public String getName() {
                     
                  return name;
              }
          
              public void setName(String name) {
                     
                  this.name = name;
              }
          
              public Integer getAge() {
                     
                  return age;
              }
          
              public void setAge(Integer age) {
                     
                  this.age = age;
              }
          
              public Boolean getBoss() {
                     
                  return boss;
              }
          
              public void setBoss(Boolean boss) {
                     
                  this.boss = boss;
              }
          
              public Date getBir() {
                     
                  return bir;
              }
          
              public void setBir(Date bir) {
                     
                  this.bir = bir;
              }
          
              public Map<String, Object> getMap() {
                     
                  return map;
              }
          
              public void setMap(Map<String, Object> map) {
                     
                  this.map = map;
              }
          
              public List<Object> getList() {
                     
                  return list;
              }
          
              public void setList(List<Object> list) {
                     
                  this.list = list;
              }
          
              public Dog getDog() {
                     
                  return dog;
              }
          
              public void setDog(Dog dog) {
                     
                  this.dog = dog;
              }
          
              @Override
              public String toString() {
                     
                  return "Person{" +
                          "name='" + name + '\'' +
                          ", age=" + age +
                          ", boss=" + boss +
                          ", bir=" + bir +
                          ", map=" + map +
                          ", list=" + list +
                          ", dog=" + dog +
                          '}';
              }
          }
          
          
          package com.boot.bean;
          
          import java.io.Serializable;
          
          /**
           * @Author: 东方老赢
           * @Date: 2020/4/26 15:27
           */
          public class Dog implements Serializable {
                     
              private String name;
              private Integer age;
          
              public String getName() {
                     
                  return name;
              }
          
              public void setName(String name) {
                     
                  this.name = name;
              }
          
              public Integer getAge() {
                     
                  return age;
              }
          
              public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值