JavaEE--SpringBoot

目录

一、Maven

[1. 创建一个Maven项目](#1. 创建一个Maven项目)

[2. 核心功能](#2. 核心功能)

[2.1 项目构建](#2.1 项目构建)

[2.2 依赖管理](#2.2 依赖管理)

[2.2.1 依赖配置](#2.2.1 依赖配置)

[2.2.2 依赖传递](#2.2.2 依赖传递)

[2.2.3 依赖排除](#2.2.3 依赖排除)

[2.3 Maven Helper插件](#2.3 Maven Helper插件)

3.Maven仓库

二、第一个SpringBoot程序

[1. SpringBoot项目创建](#1. SpringBoot项目创建)

[1.1 使用IDEA创建](#1.1 使用IDEA创建)

[1.2 使用网页创建](#1.2 使用网页创建)

[2. 项目代码和目录介绍](#2. 项目代码和目录介绍)

[3. 运行项目](#3. 运行项目)

[4. 输出Hello World](#4. 输出Hello World)

[5. Web服务器](#5. Web服务器)


一、Maven

Maven 是一个基于 POM(Project Object Model)的项目管理和构建工具,主要用于 Java 项目。它简化了项目构建、依赖管理、报告生成和文档生成等任务,通过标准化的项目结构和生命周期管理,提高开发效率。

1. 创建一个Maven项目

IDEA本身已经集成了Maven,我们可以直接使用无需安装。

2. 核心功能
2.1 项目构建

Maven提供了标准的,跨平台(Linux,Windows,MacOS等)的自动化项目构建方式。

当我们开发了一个项目之后,代码需要经过编译,测试,打包,发布等流程,每次代码的修改,都需要经过这些流程,如果代码反复调试修改,这个流程就需要反复进行,就显得特别麻烦,而Maven给我们提供了一套简单的命令来完成项目的构建。

如点击package就可以完成项目的打包操作:

jar包(Java Archive)是Java平台的标准打包格式,用于封装编译后的Java类文件、资源文件和元数据。它通常用于库或独立应用程序。

war包 (Web Application Archive)是专为Web应用程序设计的打包格式,基于jar包扩展而来,包含Web应用所需的特定目录结构(如WEB-INF/)和配置文件(如web.xml)。

2.2 依赖管理

Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。获取的jar包,其实就是依赖。

pom.xml就是maven的配置文件,用以描述项目的各种信息。

2.2.1 依赖配置

如JDBC,需要我们手动下载mysql-connector-java的包,并且添加到项目中。

在maven环境下,我们只需要在pom.xml中引入mysql-connector-java的依赖就可以了。

XML 复制代码
<dependencies>
    <!--里面放置项目的依赖坐标,可为多个-->
</dependencies>

然后点击刷新:

就可以在项目中看到新加入的jar包。

2.2.2 依赖传递

依赖传递(Transitive Dependency)指在软件开发中,当项目A依赖项目B,而项目B又依赖项目C时,项目A会自动继承对项目C的依赖关系。这种机制简化了依赖管理,但可能引发版本冲突或安全性问题。

pom.xml中,通过<dependency>声明依赖,默认启用传递性。可通过<scope><optional>控制传递行为:

XML 复制代码
<dependency>
    <groupId>org.example</groupId>
    <artifactId>projectB</artifactId>
    <version>1.0</version>
    <!-- 禁止传递依赖 -->
    <optional>true</optional>
</dependency>
 

如上文中,我们只添加了mysql-connector-java的依赖,却另外产生了protobuf-java的jar包,就是因为前者依赖后者的依赖传递。

2.2.3 依赖排除

依赖排除是指在项目管理中,通过配置显式地移除某个依赖项中的特定传递性依赖。这通常用于解决版本冲突、重复依赖或不需要的依赖问题。

在Maven项目中,可以在<dependency>标签内使用<exclusions>标签来排除不需要的传递性依赖:

XML 复制代码
<dependency>
    <groupId>com.example</groupId>
    <artifactId>example-library</artifactId>
    <version>1.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.unwanted</groupId>
            <artifactId>unwanted-module</artifactId>
        </exclusion>
    </exclusions>
</dependency>
 
2.3 Maven Helper插件

安装Maven Helper插件后,打开pom.xml可以看到jar包之间的依赖关系:

3.Maven仓库

Maven 仓库是用于存储项目依赖(如 JAR 文件)和插件的地方。主要分为三类:

  • 本地仓库 :默认位于用户目录下的 .m2/repository,存储从远程仓库下载的依赖。
  • 中央仓库 :Maven 官方维护的公共仓库,包含大量开源库(默认地址:https://repo.maven.apache.org/maven2)。
  • 远程仓库 :包括私服(如 Nexus、Artifactory)或其他公开仓库(如 JCenter),需在 pom.xmlsettings.xml 中配置。

二、第一个SpringBoot程序

Spring官网

Spring 是一个轻量级的开源框架,用于构建企业级应用程序。它提供了一系列模块,如 Spring MVC、Spring Security、Spring Data 等,支持依赖注入(DI)和面向切面编程(AOP)。Spring 的核心是 IoC(控制反转)容器,负责管理对象的生命周期和依赖关系。

Spring Boot 是 Spring 的扩展,旨在简化 Spring 应用程序的初始搭建和开发过程。它通过自动配置、起步依赖(Starter Dependencies)和嵌入式服务器等特性,减少了开发者的配置工作。Spring Boot 默认集成了许多 Spring 模块,使得开发者可以快速构建独立运行的、生产级别的应用程序。

1. SpringBoot项目创建
1.1 使用IDEA创建

注:若使用社区版IDEA,则需要安装SpringBoot Helper插件,专业版不需要。

点next,

点create就创建好了。

1.2 使用网页创建

打开spring Initializr:

设置过程基本和IDEA差不多,最后点击CREATE,会触发下载项目:

然后再使用Idea打开之后,Spring Boot项目就算创建成功了。

2. 项目代码和目录介绍

观察pom文件:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bite</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-demo</name>
    <description>springboot-demo</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

主要观察<dependencies>标签里的内容,引入了两个依赖:

  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖

每一个SpringBoot工程,都有一个父工程,依赖的版本号,在父工程中统一管理。父工程指定版本号后,就会自动引入和所指定版本对应的依赖,创建的SpringBoot项目,会继承SpringBoot父工程。

项目目录:

  • src/main/java:Java源代码
  • src/main/resources:为静态资源或配置文件
  • src/test/java:测试代码源代码
  • target:编译后的文件路径
  • pom.xml:Maven配置文件
3. 运行项目

可以看到如下图所示的日志:

4. 输出Hello World

在创建的项目包路径下创建Java文件HelloWorld,并实现如下代码:

java 复制代码
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorld {

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

重新启动项目,在浏览器上访问http://127.0.0.1:8080/hello:

5. Web服务器

Web服务器是用于存储、处理和传递网页内容的软件或硬件系统。它通过HTTP协议与客户端(如浏览器)通信,响应请求并返回HTML文件、图像、视频等资源。常见的Web服务器软件包括Apache、Nginx、IIS、Tomcat等。

SpringBoot内置了Tomcat服务器,无需配置即可直接运行。

Tomcat默认端口号是8080,所以我们程序访问时的端口号也是8080。


创作不易,麻烦给个三连支持一下吧

相关推荐
Full Stack Developme9 小时前
java.net 包详解
java·python·.net
一叶飘零_sweeeet9 小时前
深入 Spring 内核:解密 15 种设计模式的实战应用与底层实现
java·spring·设计模式
凤山老林9 小时前
排序算法:详解插入排序
java·开发语言·后端·算法·排序算法
彦楠9 小时前
IDEA实用快捷键
java·ide·intellij-idea
豆沙沙包?9 小时前
2025年--Lc197-077. 排序链表(链表,尾插法)--Java版
java·数据结构·链表
m0_6515939110 小时前
深入理解软件设计中的协议与规范:从理论到Java实践
java·软件工程·代码规范·设计规范
低音钢琴10 小时前
【SpringBoot从初学者到专家的成长18】SpringBoot中的数据持久化:JPA与Hibernate的结合
spring boot·后端·hibernate
paopaokaka_luck10 小时前
基于SpringBoot+Vue的社区诊所管理系统(AI问答、webSocket实时聊天、Echarts图形化分析)
vue.js·人工智能·spring boot·后端·websocket
Knight_AL10 小时前
Tomcat 类加载器隔离机制的实际应用
java·tomcat
FreeBuf_10 小时前
Spring两大漏洞可导致泄露敏感信息及安全防护绕过(CVE-2025-41253/41254)
java·安全·spring