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

news2024/11/15 8:10:21

目录

一、引言

1.1 初始化配置

1.2 整合第三方框架

1.3 后期维护

1.4 部署工程

1.5 敏捷式开发

二、SpringBoot介绍

spring boot

2.1 搭建一个spring boot工程

2.2 使用idea创建项目

2.3 在线创建姿势

2.4 项目的目录结构

2.5 项目的运行方式

2.6 yml文件格式

2.7 多环境配置

2.8 配置类的使用

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的整个文档:

  • Spring Boot Reference Documentation

3.1 搭建一个spring boot工程

必须会这种.

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

  2. spring boot的依赖.

<!-- 注意,这个标签是parent, 表示当前的父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.8</version>
</parent>
  1. 引入一个组件, spring boot starter web.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 创建一个启动类.

/**
 * @author 听忆
 */
@SpringBootApplication // 表示我是一个启动类.
public class MyApplication {
    // 通过main启动当前的spring boot工程.
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
  1. 编写一个控制器的方法

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

/**
 * @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,必须得安装上打包插件.

 
<!-- 打包插件, 将当前的工程,打包成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=“包名” />,帮助扫描注解的。
    

复合注解。

  • 实现包扫描, 自动装配。

@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, 必须要有的.相当于一个规范.

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

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

@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才会去加载.并且进行自动装配.如果不符合条件,则不加载.使用起来更加灵活.

类似于:

ConditionalOnMissingBean
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
@ConditionalOnClass(RedisOperations.class)

3.6 yml文件格式

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

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

# 表示配置一个数组或者集合.注意:
# -空格 值
# 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(‘前缀.配置类的属性名称‘)

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

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

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

用法.一毛一样,没有啥区别;

3.9 静态资源处理

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;

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1906644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无线麦克风哪个品牌音质最好,揭秘手机收音麦克风哪个牌子好!

随着全球直播和短视频行业的蓬勃发展&#xff0c;领夹麦克风因其便携性和出色的录音质量而备受青睐。用户在各种场合下追求清晰、真实的录音效果&#xff0c;领夹麦克风无疑是一个理想的选择。 然而&#xff0c;面对市场上琳琅满目的品牌和型号&#xff0c;想要挑选一款性能优…

计算机网络之无线局域网

1.无线局域网工作方式 工作方式&#xff1a;每台PC机上有一个无线收发机&#xff08;无线网卡&#xff09;&#xff0c; 它能够向网络上的其他PC机发送和接受无线电信号。 与有线以太网相似&#xff0c;无线局域网也是打包方式发送数据的。每块网卡都有一个永久的、唯一的ID号…

【原理+使用】DeepCache: Accelerating Diffusion Models for Free

论文&#xff1a;arxiv.org/pdf/2312.00858 代码&#xff1a;horseee/DeepCache: [CVPR 2024] DeepCache: Accelerating Diffusion Models for Free (github.com) 介绍 DeepCache是一种新颖的无训练且几乎无损的范式&#xff0c;从模型架构的角度加速了扩散模型。DeepCache利…

小白·使用Tesseract-OCR工具读取图片

1、直接pip安装 工具使用vscode和pycharm都可以。 这里介绍使用vscode的方法。 (1)、调出终端 (2)、安装依赖 (3)、编写代码 import pyocr import pyocr.builders from PIL import Image import re# 获取Tesseract-OCR工具 tools pyocr.get_available_tools() tool tools[…

使用 MFA 保护对企业应用程序的访问

多因素身份验证&#xff08;MFA&#xff09;是在授予用户访问特定资源的权限之前&#xff0c;使用多重身份验证来验证用户身份的过程&#xff0c;仅使用单一因素&#xff08;传统上是用户名和密码&#xff09;来保护资源&#xff0c;使它们容易受到破坏&#xff0c;添加其他身份…

C# 实现基于exe内嵌HTTPS监听服务、从HTTP升级到HTTPS 后端windows服务

由于客户需要把原有HTTP后端服务升级为支持https的服务&#xff0c;因为原有的HTTP服务是一个基于WINDOWS服务内嵌HTTP监听服务实现的&#xff0c;并不支持https, 也不像其他IIS中部署的WebAPI服务那样直接加载HTTPS证书&#xff0c;所以这里需要修改原服务支持https和服务器环…

Java基础-Java中的常用类(上)

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 String类 创建字符串 字符串长度 连接字符串 创建格式化字符串 String 方法 System类 常用方法 方…

谨慎投稿!这本EI期刊正在被“劫持”!

Journsl ofTisniin lniversity Seience and Technology《天津大学学报&#xff08;自然科学与工程技术版&#xff09;》创刊于l955年&#xff0c;月刊&#xff0c;全国核心期刊&#xff0c;天津市一级期刊。该刊是由天津大学主办的综合性学术刊物&#xff0c;主要刊登自然科学和…

【第三版 系统集成项目管理工程师】第4章 信息系统架构

持续更新。。。。。。。。。。。。。。。 【第三版】系统集成项目管理工程师 考情分析4.1架构基础4.1.1指导思想&#xff08;非重点&#xff09; P1364.1.2设计原则&#xff08;非重点&#xff09; P1364.1.3建设目标&#xff08;非重点&#xff09; P1374.1.4总体框架 P138练习…

SaaS产品和独立部署型产品有什么区别,该怎么选择?

随着云计算和软件服务的多样化&#xff0c;产品形式主要划分SaaS型&#xff08;开通即用&#xff09;和独立部署&#xff08;完整交付&#xff09;两种模式&#xff0c;那么SaaS产品和独立部署产品有哪些区别&#xff0c;我们在选择产品的时候应该如何去抉择&#xff1f;本文我…

Java的Thread类中的常用方法解析

Java可以通过Thread类实现多线程&#xff0c;下面来介绍几个Thread类中常用的方法 void start() 开启线程&#xff0c;jvm自动调用run方法 void run() 设置线程任务&#xff0c;这个run方法是Thread重写的接口Runnable中的run方法 String getName() 获取线程名字 void s…

linux 安装Openjdk1.8

一、在线安装 1、更新软件包 sudo apt-get update 2、安装openjdk sudo apt-get install openjdk-8-jdk 3、配置openjdk1.8 openjdk默认会安装在/usr/lib/jvm/java-8-openjdk-amd64 vim ~/.bashrc export JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME${J…

【Linux】文件和目录管理命令——ls,cp,rm,mv

1.文件与目录的查看&#xff1a;Is ls [-aAdfFhilnrRst] 文件名或目录名称ls [ --color{never&#xff0c;auto&#xff0c;always} ]文件名或目录名称ls [ --full-time ]文件名或目录名称 选项与参数&#xff1a; -a&#xff1a;全部的文件&#xff0c;连同隐藏文件&am…

电子产品分销商 DigiKey 在新视频系列中探索智能城市中的AI

电子产品分销商DigiKey推出了一系列新视频&#xff0c;深入探讨了AI在智能城市中的集成应用。这个名为“智能世界中的AI”的系列是其“城市数字”视频系列的第四季&#xff0c;它审视了城市环境中从基础设施到公共服务的多种AI硬件和软件的部署情况。 该系列由电子制造商莫仕&…

Java的垃圾回收机制解说

Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭&#xff1b;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的&#xff08;尽管在运行期会由 JIT 编译器进行一些优化&…

苹果电脑视频压缩工具,苹果电脑视频压缩软件

随着数字媒体内容的爆炸性增长&#xff0c;视频文件的体积越来越大&#xff0c;如何在保证画质的前提下&#xff0c;有效地压缩视频文件&#xff0c;成为许多创作者和普通用户的一大需求。本文将为您详细介绍视频压缩界的佼佼者&#xff0c;让您轻松应对视频文件体积过大的难题…

vue3中使用 tilwindcss报错 Unknown at rule @tailwindcss

解决方法&#xff1a; vscode中安装插件 Tailwind CSS IntelliSense 在项目中的 .vscode中 settings.json添加 "files.associations": {"*.css": "tailwindcss"}

网络连接线相关问题

问题1&#xff1b; 直通线为什么两头都是T568B&#xff1f;是否可以两台T5568A&#xff1f;或者任意线序&#xff0c;只需两头一致&#xff1f; 不行&#xff0c;施工规范规定。&#xff08;原因&#xff1b;网线最长距离100m&#xff0c;实际用起来要把网线包管&#xff0c;走…

Mapboxgl 根据 AWS 地形的高程值制作等高线

更多精彩内容尽在dt.sim3d.cn&#xff0c;关注公众号【sky的数孪技术】&#xff0c;技术交流、源码下载请添加VX&#xff1a;digital_twin123 使用mapboxgl 3.0版本&#xff0c;根据 AWS 地形图块的高程值制作等高线&#xff0c;源码如下&#xff1a; <!DOCTYPE html> &…

CSS content 计数器

CSS content 计数器 CSS 计数器通过一个变量来设置&#xff0c;根据规则递增变量。 使用计数器自动编号 CSS 计数器根据规则来递增变量。 CSS 计数器使用到以下几个属性&#xff1a; counter-reset - 创建或者重置计数器&#xff0c;给计算器命名。注意声明计算器不能在自身…