Spring Boot -01- 入门

Spring Boot快速入门

一、Spring Boot简介

Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot 是所有基于 Spring Framework 5.0 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。

设计目的: 用来简化新 Spring 应用的初始搭建以及开发过程。

从最根本上来讲,Spring Boot 就是一些库的集合,它能够被任意项目的构建系统所使用。它使用 “习惯优于配置” (项目中存在大量的配置,此外还内置一个习惯性的配置)的理念让你的项目快速运行起来。用大佬的话来理解,就是 spring boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架,总结一下及几点:

(1)为所有 Spring 开发提供一个更快更广泛的入门体验。

(2)零配置。无冗余代码生成和XML 强制配置,遵循“约定大于配置” 。

(3)集成了大量常用的第三方库的配置, Spring Boot 应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。

(4)提供一系列大型项目常用的非功能性特征,如嵌入式服务器、安全性、度量、运行状况检查、外部化配置等。

(5)Spring Boot 不是Spring 的替代者,Spring 框架是通过 IOC 机制来管理 Bean 的。Spring Boot 依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring 做好各种产品级准备

Spring Boot 在应用中的角色
Spring Boot 是基于 Spring Framework 来构建的,Spring Framework 是一种 J2EE 的框架(什么是 J2EE?)
Spring Boot 是一种快速构建 Spring 应用
Spring Cloud 是构建 Spring Boot 分布式环境,也就是常说的云应用
Spring Boot 中流砥柱,承上启下

二、使用IDEA快速搭建Spring Boot

1、创建一个Spring Boot项目:

(1) 新建Spring Initializr项目

1.png

(2)填写项目信息

2.png

(3)选择web依赖

3.png

(4)选择SQL下的MySQL、mybatis依赖

4.png

(5)选择项目路径

5.png

(6)项目目录

6.png

项目结构说明:

  • MydemoApplication:带main()方法的类,用于启动应用程序。
  • MydemoApplicationTests:一个空的Junit测试类,加载使用Spring Boot字典配置功能的SPring应用程序上下文。
  • application.properties:一个空的 properties 文件,可以根据需要添加配置属性。
  • pom.xml: Maven 构建说明文件。

2、创建HelloController并运行

  • 在 【main/java/com.example.mydemo】包下新建一个【HelloController】:


    7.png
package com.example.mydemo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 测试控制器
 * @author :zl
 * @create:
 */
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!";
    }
}

  • 启动程序:


    8.png
9.png

三、Spring Boot项目文件解析

(1)pom.xml文件
parent标签是在配置Spring Boot的父级依赖


    org.springframework.boot
    spring-boot-starter-parent
    2.2.1.RELEASE
     

有了这个,当前项目才算是Spring Boot项目,spring-boot-starter-parent是一个特殊的starter,用来提供特殊的maven默认依赖,常用的包依赖可以省去version标签。

(2)应用入口类DemoApplication
Spring Boot 项目通常有一个名为 *Application 的入口类,入口类里有一个 main 方法, 这个 main 方法其实就是一个标准的 Javay 应用的入口方法。

@SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:@Configuration@EnableAutoConfiguration@ComponentScan; 若不是用 @SpringBootApplication 注解也可以使用这三个注解代替。

  • 其中,@EnableAutoConfiguration让 Spring Boot根据类路径中的 jar 包依赖为当前项目进行自动配置,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。

  • Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 com.xpwi.springboot 包)

(3)Spring Boot配置文件
Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。

Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。

修改 properties 配置文件实例:

(1)打开 resources 下的 application.properties

server.port=8080
server.servlet.context-path=/cn

(2)访问路径由http://localhost:8080/变成了http://localhost:8080/cn/hello
(3)使用yml文件作为配置文件

  • 我们直接把 .properties 后缀的文件删掉,使用 .yml 文件来进行简单的配置


  • 然后使用在我们的 HelloController.java 类中使用 @Value 来获取配置属性,代码(请看注释):
package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 测试控制器
 *
 * @author:
 * @create:
 */
@RestController
public class HelloController {

    // 获取.yml文件中的值
    @Value("${name}")
    private String name;


    // 路径映射,对应浏览器url,访问该路径下的函数
    @RequestMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!"+name;
    }
}

【注意】: 我们并没有在 yml 文件中注明属性的类型,而是在使用的时候定义的。你也可以在配置文件中使用当前配置:

server:port: 8080

name: zl
url: http:dddd
content: "name:${name},url:${url}"

【问题】: 这样写配置文件繁琐而且可能会造成类的臃肿,因为有许许多多的 @Value 注解。可以封装配置信息:

server:port: 8080

author:
  name: zl
  url: http:dddd
  • 新建 author.java 和 HelloController.java 同级,内容如下:
package com.example.demo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "author")
public class author {
    private  String name;

    private  String csdnUrl;

    public String getCsdnUrl() {
        return csdnUrl;
    }

    public void setCsdnUrl(String csdnUrl) {
        this.csdnUrl = csdnUrl;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 此时可能会报错,如果报错,打开 pom.xml 文件,添加内容(注意位置):

            org.springframework.boot
            spring-boot-configuration-processor
            true
        
  • 重新编写 HelloController 类,内容如下:
package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 测试控制器
 *
 * @author: 
 * @create:
 */
@RestController
public class HelloController {

    // 获取.yml 文件中值
    //@Value("${name}")
    //private String name;

    // 获取 age
    //@Value("${csdnUrl}")
    //private String csdnUrl;

    @Autowired
    private author author;

    //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
    @RequestMapping("/hello")
    public String hello() {
        return "名字:" + author.getName() + " 地址:" + author.getCsdnUrl();
    }
}
  • 重启就可以看到内容
    【提示】:我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个 StudentProperties 的类用来封装这些信息,并用上两个注解:
  • @Component:表明当前类是一个 Java Bean
  • @ConfigurationProperties(prefix = “author”):表示获取前缀为 author 的配置信息

你可能感兴趣的:(Spring Boot -01- 入门)