java-spring boot光速入门教程(超详细!!)

目录

一、引言

[1.1 初始化配置](#1.1 初始化配置)

[1.2 整合第三方框架](#1.2 整合第三方框架)

[1.3 后期维护](#1.3 后期维护)

[1.4 部署工程](#1.4 部署工程)

[1.5 敏捷式开发](#1.5 敏捷式开发)

二、SpringBoot介绍

[spring boot](#spring boot)

[2.1 搭建一个spring boot工程](#2.1 搭建一个spring boot工程)

[2.2 使用idea创建项目](#2.2 使用idea创建项目)

[2.3 在线创建姿势](#2.3 在线创建姿势)

[2.4 项目的目录结构](#2.4 项目的目录结构)

[2.5 项目的运行方式](#2.5 项目的运行方式)

[2.6 yml文件格式](#2.6 yml文件格式)

[2.7 多环境配置](#2.7 多环境配置)

[2.8 配置类的使用](#2.8 配置类的使用)

[2.9 静态资源处理](#2.9 静态资源处理)


一、引言


1.1 初始化配置

为了使用SSM框架去开发,准备SSM框架的模板配置。

1.2 整合第三方框架

为了Spring整合第三方框架,单独的去编写xml文件。

1.3 后期维护

后期SSM项目后期xml文件特别多,维护xml文件的成本是很高的

1.4 部署工程

SSM工程部署也是很麻烦,依赖第三方的容器

1.5 敏捷式开发

基于Java的SSM开发方式是很笨重,而现在的python,php,NodeJS的敏捷式开发已经盖过Java一头

二、SpringBoot介绍


SpringBoot是由Pivotal团队研发的,SpringBoot并不是一门新技术,只是将之前常用的Spring,SpringMVC,data-jpa等常用的框架封装到了一起,帮助你隐藏这些框架的整合细节,实现敏捷开发。

SpringBoot就是一个工具集。
SpringBoot特点:

  • SpringBoot项目不需要模板化的配置。

  • SpringBoot中整合第三方框架时,只需要导入相应的starter依赖包,就自动整合了。

  • SpringBoot默认只有一个.properties的配置文件,不推荐使用xml,后期会采用.java的文件去编写配置信息。

  • SpringBoot工程在部署时,采用的是jar包的方式,内部自动依赖Tomcat容器,提供了多环境的配置。

  • 后期要学习的微服务框架SpringCloud需要建立在SpringBoot的基础上。

三、spring boot

使用的版本是: 2.6.8, 暂不要使用spring boot3.x版本.
官方文档: Spring Boot

spring boot的整个文档:

3.1 搭建一个spring boot工程

必须会这种.

  1. 新建一个java se的maven工程.

  2. spring boot的依赖.

java 复制代码
<!-- 注意,这个标签是parent, 表示当前的父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.8</version>
</parent>
  1. 引入一个组件, spring boot starter web.
java 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 创建一个启动类.
java 复制代码
/**
 * @author 听忆
 */
@SpringBootApplication // 表示我是一个启动类.
public class MyApplication {
    // 通过main启动当前的spring boot工程.
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
  1. 编写一个控制器的方法

原则: 之前怎么写这里还是怎么写,一点变化都没有.

java 复制代码
/**
 * @author 听忆
 */
@RestController
public class UserController {
    @GetMapping("/hello")
    public String hello(){
        return "你好啊,spring boot";
    }
}
复制代码

3.2 使用idea创建项目

3.3 在线创建姿势

通过start.spring.io或者start.aliyun.com,可以在网页端进行项目的创建,然后下载创建的压缩包解压之后,导入到idea当中即可;

注意事项:

  • 如果start.spring.io无法访问,「在idea当中」, 则可以尝试去修改idea的配置为: start.aliyun.com, 然后按照后续流程进行创建项目.

  • 目前版本号是: 2.6.8

3.4 项目的目录结构

咱们手动创建的项目, 这个结构就是一个标准的javaSE工程,没有配置文件.如果用这种方式,我们会手动去创建这些个目录. --> 之后会使用这种方式.

采用idea内置的方式创建,给我们生成了:

  • resouce

    • static

    • templates

    • applicaton.properties --> 文件名称不能修改.

3.5 项目的运行方式

开发阶段,一般情况我们都使用idea直接运行.

测试/上线 --> 打包

  • 使用maven,必须得安装上打包插件.
复制代码
java 复制代码
<!-- 打包插件, 将当前的工程,打包成xxx.jar包。必须得有此插件。 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>
注意事项:
  • 如果你这个报红, 但是咱们如果不打包的话,则直接将它删除掉.打包必须得下载成功.

    • 如果实在下载不了,拷贝一个,放到自己maven本地仓库.

==特别重要的注解:==

复制代码
@SpringBootApplication就是一个组合注解:
​
-  @SpringBootConfiguration就是@Configuration注解,代表启动类就是一个配置类。
-  @EnableAutoConfiguration帮你实现自动装配的,SpringBoot工程启动时,运行一个SpringFactoriesLoader的类,加载META-INF/spring.factories配置类(已经开启的),通过SpringFactoriesLoader中的load方法,以for循环的方式,一个一个加载。
    - 好处:无需编写大量的整合配置信息,只需要按照SpringBoot提供好了约定去整合即可。
    - 坏处:如果说你导入了一个starter依赖,那么你就需要填写他必要的配置信息。
    - 手动关闭自动装配指定内容:@SpringBootApplication(exclude = QuartzAutoConfiguration.class)
-  @ComponentScan就相当于<context:component-scan basePackage=“包名” />,帮助扫描注解的。
    

复合注解。

  • 实现包扫描, 自动装配。
java 复制代码
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited // 四个元注解
------------------------------
@SpringBootConfiguration // sprnig自动装配
@EnableAutoConfiguration // 启动spring 自动装配
// 包扫描配置
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
        @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {}



@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
-------------------------------------------
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {}

复制代码
自动装配.
xxxAutoConfiguration, --> 自动装配的类.
xxxProperties --> 在配置文件当中,要覆盖的属性.

以spring mvc为例,查看一下自动装配和我们自定义配置如何做的.

每一个组件都会有: xxxAutoConfiguration, 必须要有的.相当于一个规范.

java 复制代码
@Configuration(proxyBeanMethods = false)
@Import(EnableWebMvcConfiguration.class)
// 开启配置
@EnableConfigurationProperties({ WebMvcProperties.class, WebProperties.class })
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer, ServletContextAware {

通过观察发现了: 有两个xxxProperties的文件.这个文件就是: 我们可以在配置文件当中: application.properties文件进行属性覆盖的文件.也就是说, 在xxxProperties文件当中,全部都是默认的配置项.如果我们想更改这些个默认的配置,则只需要, 直接通过: 前缀.属性名称=值 进行覆盖即可;

java 复制代码
@ConfigurationProperties(prefix = "spring.mvc") // 定义一个, 在application.properties文件当中,进行配置的前缀.
// 通过前缀.属性名称  = 值,覆盖当前这个配置类的相关属性.
public class WebMvcProperties {
}

spring.mvc.view.prefix=/pages/xx # 在配置文件当中,覆盖view.prefix

spring.mvc.view.suffix=.jsp # 在配置文件当中, 覆盖view.suffix

==xxxAutoConfiguration.java==

==xxxProperties.java==

对于这些类的加载.它是有条件的,当符合装配条件,则spring boot才会去加载.并且进行自动装配.如果不符合条件,则不加载.使用起来更加灵活.

类似于:

java 复制代码
ConditionalOnMissingBean
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
@ConditionalOnClass(RedisOperations.class)

3.6 yml文件格式

一般情况下,我们都写: application.yml这种姿势的,但是实际也可以写: application.yaml格式.更推荐: yml文件格式的.

也可以配置一些数据或者集合

java 复制代码
# 表示配置一个数组或者集合.注意:
# -空格 值
# tingyi.student
tingyi:
  student:
    - 张三
    - 李四
    - 王五

集合或者数组的表示方式.
如果同时使用application.properties文件,和application.yml文件,则生效的是 :applicaton.properties文件.

3.7 多环境配置

实际工作当中有三个环境:

  • 开发环境,就是我们程序员自己的开发环境.

  • 测试环境, 测试的同学们,使用的一种环境,可能跟这个开发环境还一样.

  • 生产环境, 对外给用户用的环境.「线上环境」

生产需要, 从开发环境的数据库.要切换到测试环境的数据,怎么来做方便一些.你不能直接修改配置配置. 此时就需要我们在开发阶段就将这个多环境配置好.这样我们打包之后,就可以在运行的时候,方便的切换各种各样的环境;
测试, 修改端口号:

  • 开发环境: 9000

    • application-dev.yml
  • 测试环境: 9001

    • application-test.yml
  • 生产环境: 9002

    • application-prod.yml

  • 加载的配置文件

    • application.yml, 在这个文件当中咱们可以指定一个环境.

多环境配置的写法总结:

  • 配置环境这样写:

    • application-{环境名称}.yml
  • 主配置文件当中对环境进行激活

    复制代码
    spring:
      profiles:
        active: 环境名称
复制代码
在部署工程时,通过 java -jar jar文件 --spring.profiles.active=环境

3.8 配置类的使用

使用:

  • 必须将类标记一注解: @Component, 将这个类对象放到容器当中.

  • 添加配置类注解: @ConfigurationProperties(prfix='要写在配置文件当中的前缀')

  • 必须得有getter/setter方法,方可配置.

用途:

  • 在配置文件当中对我们的配置类的属性进行赋值了.也就是配置好了.

  • 那么在其它类当中可以随意使用, 使用的时候,通过注解的姿势来获取配置在配置文件当中的配置类的属性的值;

  • @Value('前缀.配置类的属性名称')

如果不写配置类的,可以直接在配置文件当中进行字段相关配置也是可以的.

java 复制代码
# 没有配置类,我们直接可以这样配置.
tingyi:
  name: 听忆
  sex: 男
  address: 呀呼

tingyi并没有类与之相对应,只是我们手动搞了一个前缀,使用起来感觉跟咱们有配置的方式一毛一样.结果也是一样的.但是这样写的话,并不好.不方便维护,且前缀可以随意的更改的.因为有配置类的方式前缀已经约定好了.不能随意的更改.
用法.一毛一样,没有啥区别;

3.9 静态资源处理

java 复制代码
public static class Resources {
​
    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
            "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
​
    /**
     * Locations of static resources. Defaults to classpath:[/META-INF/resources/,
     * /resources/, /static/, /public/].
     */
    private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS;

以上四个目录都可以配置静态资源.咱们可以放到任意一个静态资源目录.

访问的时候,不要访问静态资源的目录名称.

如果要修改的,不建议修改.

相关推荐
Swift社区2 分钟前
Excel 列名称转换问题 Swift 解答
开发语言·excel·swift
一道微光5 分钟前
Mac的M2芯片运行lightgbm报错,其他python包可用,x86_x64架构运行
开发语言·python·macos
矛取矛求10 分钟前
QT的前景与互联网岗位发展
开发语言·qt
Leventure_轩先生10 分钟前
[WASAPI]从Qt MultipleMedia来看WASAPI
开发语言·qt
向宇it24 分钟前
【从零开始入门unity游戏开发之——unity篇01】unity6基础入门开篇——游戏引擎是什么、主流的游戏引擎、为什么选择Unity
开发语言·unity·c#·游戏引擎
wm104326 分钟前
java web springboot
java·spring boot·后端
smile-yan27 分钟前
Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法
java·maven
老马啸西风28 分钟前
NLP 中文拼写检测纠正论文-01-介绍了SIGHAN 2015 包括任务描述,数据准备, 绩效指标和评估结果
java
Earnest~32 分钟前
Maven极简安装&配置-241223
java·maven
皮蛋很白35 分钟前
Maven 环境变量 MAVEN_HOME 和 M2_HOME 区别以及 IDEA 修改 Maven repository 路径全局
java·maven·intellij-idea