SpringBoot入门

什么是SpringBoot:

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(就是能够帮助我们快速整合第三方框架)。

SpringBoot特性:

  • 创建独立的Spring应用程序
  • 嵌入的Tomcat,无需部署WAR文件
  • 简化Maven配置
  • 自动配置Spring
  • 提供生产就绪型功能,如外部配置

SpringBoot默认的情况下已经帮助我们整合好了SpringBootMvc

SpringBoot快速入门:

创建SpringBoot项目:

1.选择File –> New –> Project –>Spring Initialer
在这里插入图片描述

2.设置基本信息(可以修改Group(包名)和Artifact(项目名称)以及Version(版本)等信息。)
在这里插入图片描述

3.我们可以看到一个选择依赖的页面,里面提供了很多常见的依赖,选择你想要的依赖也可以不选,我们想要建立一个Web项目,必须要选择Web下面的Web
在这里插入图片描述

4.项目目录结构
在这里插入图片描述

主程序(启动类)

package com.example.javaspringboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//@SpringBootApplication 来标注一个主程序,说明这是一个Sping Boot项目
@SpringBootApplication
public class JavaSpringbootApplication {

    public static void main(String[] args) {
  		//代表运行SpringBoot的启动类,参数为SpringBoot启动类的字节码对象,和main方法的参数
        SpringApplication.run(JavaSpringbootApplication.class, args);
    }

}

@SpringBootApplication开启了Spring的组件扫描和springboot的自动配置功能,相当于将以下三个注解组合在了一起

1、@SpringBootConfiguration:表名将此类作为配置类。

他是@Configurationb注解的派生注解,功能一样,只不过@SpringBootConfiguration是SpringBoot的注解@Configurationb是Spring的注解

2、@ComponentScan:启用注解扫描。

扫描的范围是当前主程序的同级包和子包下面的,所以项目的包和类要和主程序在同级目录下

3、@EnableAutoConfiguration:开启springboot的自动配置功能。

@RestController和@Controller区别

如果在类上添加@RestController注解,该类所以SpringMVCURL接口映射都是返回Json数据,他是有SpringBoot提供的,是@Controller和@ResponseBody注解一起组合的

@RestController
public class HelloController {
    
    @RequestMapping("/hello")
    public String Hello(){
        return "helloSpringBoot";
    }
    
}

@Controoler 控制层注解,该类所以SpringMVCURL接口映射默认都是返回页面,如果想返回Json数据@ResponseBody

@Controller
public class HelloController {
    
    @ResponseBody
    @RequestMapping("/hello")
    public String Hello(){
        return "helloSpringBoot";
    }
    
}

pom.xml配置文件

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>

任何一个springboot项目都会引入spring-boot-starter-parent依赖用来做项目版本管理进入spring-boot-starter-parent发现一个spring-boot-dependencies

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.5.2</version>
</parent>

这个dependencies是spring-boot-starter-parent父依赖,真正管理Spring Boot应用里面的所有依赖版本,是正真的boot版本仲裁中心,再次进入这个dependencies版本中心,可以看到许多的版本版本声明,列举如下

<properties>
    <activemq.version>5.16.2</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.89</appengine-sdk.version>
    <artemis.version>2.17.0</artemis.version>
    <aspectj.version>1.9.6</aspectj.version>
    <assertj.version>3.19.0</assertj.version>
    <atomikos.version>4.0.6</atomikos.version>
    <awaitility.version>4.0.3</awaitility.version>
    <build-helper-maven-plugin.version>3.2.0</build-helper-maven-plugin.version>
    <byte-buddy.version>1.10.22</byte-buddy.version>
    <caffeine.version>2.9.1</caffeine.version>
    <cassandra-driver.version>4.11.2</cassandra-driver.version>
    <classmate.version>1.5.1</classmate.version>
    <commons-codec.version>1.15</commons-codec.version>
    <commons-dbcp2.version>2.8.0</commons-dbcp2.version>
    <commons-lang3.version>3.12.0</commons-lang3.version>
    <commons-pool.version>1.6</commons-pool.version>
    <commons-pool2.version>2.9.0</commons-pool2.version>
    <couchbase-client.version>3.1.6</couchbase-client.version>
    <db2-jdbc.version>11.5.5.0</db2-jdbc.version>
    <dependency-management-plugin.version>1.0.11.RELEASE</dependency-management-plugin.version>
    <derby.version>10.14.2.0</derby.version>
    <dropwizard-metrics.version>4.1.24</dropwizard-metrics.version>
    <ehcache.version>2.10.9.2</ehcache.version>
    <ehcache3.version>3.9.4</ehcache3.version>
    <elasticsearch.version>7.12.1</elasticsearch.version>
    <embedded-mongo.version>3.0.0</embedded-mongo.version>
    <flyway.version>7.7.3</flyway.version>
    <freemarker.version>2.3.31</freemarker.version>
    .....
</properties>

所以以后导入其他此处已经存在的依赖默认不需要写版本,比如项目需要使用mysql驱动依赖,我们直接引入依赖,不需要写版本,自动引入默认的版本

如果不想使用默认的版本,在pom文件中使用properties标明,key使用版本中心使用的key,如mysql

<properties>
    <mysql.version>5.1.43</mysql.version>
</properties>

pom.xml文件中默认有两个模块:

spring-boot-starter :核心模块,包括自动配置支持、日志和YAML;
spring-boot-starter-test :测试模块,包括JUnit、Hamcrest、Mockito

导入starter场景启动器

在pom.xml可以见到很多 spring-boot-starter-xx:spring-boot-starter(spring-boot场景启动器) xx就是某种场景如:spring-boot-starter-web这就帮我们导入了web模块正常运行所依赖的组件;

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

所以Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景,所有依赖都会导入进来。要用什么功能就导入什么场景的启动器

SpringBoot所有支持的场景:https://docs.spring.io/springboot/docs/current/reference/html/using.html#using.build-systems.starters

见到的 *-spring-boot-starter: 这是第三方为我们提供的简化开发的场景启动器。

所有场景启动器最底层都依赖: spring-boot-starter

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
	<version>2.3.4.RELEASE</version>
	<scope>compile</scope>
</dependency>

application.yml配置文件

SpringBoot配置文件有两种方式一个是propeerties文件,还有一种是yml文件,建议使用yml文件方式(可以减少配置文件的重复性

SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件

ymll配置文件简介

YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁(非常适合用来做以数据为中心的配置文件,扩展名可以使用.yml或者.yaml)

yml配置文件的语法

配置普通数据:

#语法:
key: value

注意:value之前有一个空格

配置对象和Map数据:

#语法:
key:
	key: value
	key: value
	
或者:key:{key: value,key: value}

注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别

配置数组(List和set)数据:

#语法:
key: 
	- value1
	- value2
	
或者:key: [value1,value2]

实例:

@ConfigurationProperties(prefix = "person")
@Component
@Data
public class Person {
    private String userName;
    private Pet pet;
    private int[] arry;
    private List<String> list;
    private Map<String,String> map;
    private Map<String,List<Pet>> listMap;
}
<!--是@Data注解的依赖-->
<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>        
</dependency>

@Data:提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法

@@Value("${key.value}"):将配置文件中的值映射到一个Spring管理的Bean的字段上,但是这种注入配置方式有时显得很笨重。所以我们将使用更安全@ConfigurationProperties注解

@ConfigurationProperties(prefix=“配置文件中的key的前缀”):可以将配置文件中的配置,自动与实体进行映射,但需要字段必须提供set方法才可以,而使用@Value注解修饰的字段不需要提供set方法

package com.example.javaspringboot.pojo;

import lombok.Data;

@Data
public class Pet {
    private String name;
    private int age;
}
person:
  userName: KK
  pet: {name: 小狗,age: 25}
  arry: [10,20,30]
  list:
    - 撒旦
    - 天体
    - 元素
  map:
    name: 阿三
    age: 20
  listMap:
    sick: [{name: 拉萨,age: 25}]
package com.example.javaspringboot.controller;

import com.example.javaspringboot.pojo.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    private Person person;

    @RequestMapping("/person")
    public Person person(){
        return person;
    }
}

在这里插入图片描述

注意:yml编码,不然读取的中文数据会出现乱码

SpringBoot整合静态资源访问

静态资源存放的目录:

类路径下: /static,/public,/resources,/META-INF/resources
在这里插入图片描述
请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面
在这里插入图片描述

添加静态资源访问前缀

spring:
  #给静态资源访问添加前缀
  mvc:
    static-path-pattern: /resources/**

  #自定义静态资源位置
  web:
    resources:
      static-locations: [classpath:/abc/]

支持欢迎页面

Spring Boot 支持静态和模板化欢迎页面。是一个index.html的页面能在配置的静态位置中查找到的文件。如果没有找到,它就会寻找一个index模板。如果找到其中之一,它会自动作为程序的欢迎页面

添加网站小图标

在这里插入图片描述
只要在静态资源中放置一个名为faviocn.ico的图标就可

静态资源原理

先使用,在原理

Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它提供了一种简化的方法来配置和部署应用程序,使开发人员能够更快地开发和运行应用程序。 Spring Boot Actuator是Spring Boot的一个组件,它可以帮助我们监控和管理Spring Boot应用程序,包括健康检查、审计、统计和HTTP追踪等功能。要使用Spring Boot Actuator,只需引入相应的起步依赖,并在应用程序的入口点类上添加@SpringBootApplication注解即可。在该类中,使用@SpringBootApplication注解相当于同时添加了@Configuration、@EnableAutoConfiguration和@ComponentScan注解,它标识了当前应用程序是一个Spring Boot应用程序。要启动Spring Boot应用程序,只需在主启动类中编写main函数,通过调用SpringApplication.run(Application.class, args)方法来启动应用程序。在开发过程中,<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot入门](https://blog.csdn.net/weixin_45905210/article/details/121712027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [spring boot 入门](https://blog.csdn.net/zhshx19900318/article/details/129476812)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值