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

目录

一、引言

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.mzph.cn/diannao/42876.shtml

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

相关文章

分享外贸工作中常用英文标准表达和英文语句

常用英文表达 报拉格斯最低到岸价 quote the lowest price CIF Lagos经营纺织品多年 be in the line of textiles for many years货物受欢迎 the goods are very popular with customers / have met with a warm reception /be well received/accepted/ enjoy a wide populari…

Java线程死锁及解决方法

多线程环境下&#xff0c;死锁即两个或两个以上的线程去争夺同一个共享资源&#xff0c;而导致互相等待的情况。 要产生死锁&#xff0c;必须满足如下四个条件&#xff1a; 互斥条件&#xff0c;共享资源x和y只能被一个线程占有请求和保持条件&#xff0c;T1持有x&#xff0c…

解读BASE理论:高可用性与性能的完美平衡

Base概念 BASE 理论是一种处理大规模分布式系统中的数据一致性问题的思路。相比于传统的严格一致性&#xff0c;它更灵活&#xff0c;适用于那些需要高可用性和性能的系统。BASE 理论由三个部分组成&#xff1a; 基本可用&#xff08;Basically Available&#xff09; 基本可用…

利用亚马逊云科技云原生Serverless代码托管服务开发OpenAI ChatGPT-4o应用

今天小李哥继续介绍国际上主流云计算平台亚马逊云科技AWS上的热门生成式AI应用开发架构。上次小李哥分享​了利用谷歌云serverless代码托管服务Cloud Functions构建Gemini Pro API​&#xff0c;这次我将介绍如何利用亚马逊的云原生服务Lambda调用OpenAI的最新模型ChatGPT 4o。…

CSAL: the Next-Gen Local Disks for the Cloud——论文泛读

EuroSys 2024 Paper 论文阅读笔记整理 问题 云本地磁盘以其实惠的价格和高性能而极具吸引力。在云本地磁盘中&#xff0c;物理存储设备直接连接到计算服务器&#xff0c;并作为块设备虚拟化到虚拟机&#xff08;VM&#xff09;。在这种设置下&#xff0c;计算节点受其有限的计…

纯前端如何实现Gif暂停、倍速播放

前言 GIF 我相信大家都不会陌生&#xff0c;由于它被广泛的支持&#xff0c;所以我们一般用它来做一些简单的动画效果。一般就是设计师弄好了之后&#xff0c;把文件发给我们。然后我们就直接这样使用&#xff1a; <img src"xxx.gif"/>这样就能播放一个 GIF …

MPC学习资料汇总

模型预测控制MPC学习资料汇总 需要的私信我~ 需要的私信我~ 需要的私信我~ 【01】课件内容 包含本号所有MPC课程的课件&#xff0c;以及相关MATLAB文档。 【02】课件源代码 本号所有MPC课程的源代码。 【03】MPC仿真案例 三个MPC大型仿真案例&#xff1a; 1&#xff09;…

【数据结构】09.树与二叉树

一、树的概念与结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 根结点&#xff1a;根…

俯卧撑计数器(Python)

通过 MediaPipe 检测人体姿态&#xff0c;计算俯卧撑角度和计数&#xff0c;并在图像上进行可视化展示 需要有cv2库和mediapipe库 mediapipe库&#xff1a; MediaPipe是Google开源的机器学习框架&#xff0c;用于构建实时音频、视频和多媒体处理应用程序。它提供了一组预训练的…

一文清晰了解HTML

有这样一个txt记事本文件和一张图片&#xff1a; txt文本内容是这样的&#xff1a; <html><head><title>HTML学习</title></head><body><h1>hello HTML</h1><img src"高清修复.png"/></body> </html…

LabVIEW的JKI State Machine

JKI State Machine是一种广泛使用的LabVIEW架构&#xff0c;由JKI公司开发。这种状态机架构在LabVIEW中提供了灵活、可扩展和高效的编程模式&#xff0c;适用于各种复杂的应用场景。JKI State Machine通过状态的定义和切换&#xff0c;实现了程序逻辑的清晰组织和管理&#xff…

In Search of Lost Online Test-time Adaptation: A Survey--论文笔记

论文笔记 资料 1.代码地址 https://github.com/jo-wang/otta_vit_survey 2.论文地址 https://arxiv.org/abs/2310.20199 3.数据集地址 1论文摘要的翻译 本文介绍了在线测试时间适应(online test-time adaptation,OTTA)的全面调查&#xff0c;OTTA是一种专注于使机器学习…

【软件分享】我们都需要会用的ArcGIS10.8和ArcGIS Pro

ArcGIS是地理人必备的地理制图、空间分析常用的工具&#xff0c;读地理&#xff0c;或多或少都会接触到ArcGIS的使用&#xff0c;今天小编要带来的就是ArcGIS10.8软件资源和升级版ArcGIS Pro的软件资源。 软件安装包获取 公众号回复关键词&#xff1a;“ArcGIS"&#xff…

防爆手机终端安全管理平台

防爆手机终端安全管理平台能够满足国家能源、化工企业对安全生产信息化运行需求&#xff0c;能够快速搭建起高效、快捷的移动终端管理平台&#xff0c;提高企业安全生产管理水平&#xff0c;保证企业的安全运行和可持续发展。#防爆手机 #终端安全 #移动安全 能源、化工等生产单…

公有链、私有链与联盟链:区块链技术的多元化应用与比较

引言 区块链技术自2008年比特币白皮书发布以来&#xff0c;迅速发展成为一项具有颠覆性潜力的技术。区块链通过去中心化、不可篡改和透明的方式&#xff0c;提供了一种全新的数据存储和管理方式。起初&#xff0c;区块链主要应用于加密货币&#xff0c;如比特币和以太坊。然而&…

VBA-计时器的数据进行整理

对计时器的数据进行整理 需求原始数据程序步骤VBA程序结果 需求 需要在txt文件中提取出分和秒分别在两列 原始数据 数据结构 计次7 00:01.855 计次6 00:09.028 计次5 00:08.586 计次4 00:08.865 计次3 00:07.371 计次2 00:06.192 计次1 00:05.949 程序步骤 1、利用Trim()去…

CV每日论文--2024.7.4

1、InternLM-XComposer-2.5: A Versatile Large Vision Language Model Supporting Long-Contextual Input and Output 中文标题&#xff1a;InternLM-XComposer-2.5&#xff1a;支持长上下文输入和输出的多功能大视觉语言模型 简介&#xff1a;我们推出了InternLM-XComposer-…

学生护眼台灯哪个牌子实用?值得入手的学生护眼台灯十大排名分析

在这个数码时代&#xff0c;人们对屏幕的依赖程度越来越高&#xff0c;尤其是孩子们。他们不仅在学校里需要长时间盯着教科书&#xff0c;还会在学习和娱乐中使用各种数码设备。然而&#xff0c;这也使得眼睛健康问题逐渐凸显&#xff0c;尤其是儿童近视的问题。为了保护视力&a…

Flink 提交作业的方式

参考&#xff1a; Flink运行方式及对比-腾讯云开发者社区-腾讯云

济南网站建设费用为什么差距如此之大

济南网站建设费用的差距之所以如此之大&#xff0c;主要是由于以下几个因素的影响。 首先&#xff0c;不同的网站建设公司所提供的服务内容和质量不尽相同&#xff0c;这直接导致了费用的差距。一些知名的大型网络公司会提供全方位的网站建设服务&#xff0c;包括网站设计、页面…