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。


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

相关推荐
2401_837088503 小时前
从零到一:Vue3 + Spring Boot + MySQL 全栈项目部署到阿里云服务器完整教程
spring boot·mysql·阿里云
程序猿DD3 小时前
Spring Boot 4 与 Spring Framework 7 全面解析:新特性、升级要点与实战指南
java·spring boot·后端
用户6120414922133 小时前
jsp+servlet做的咖啡品牌管理后台
java·前端·后端
汇匠源3 小时前
基于springboot家政、上门服务、Java源码系统功能结构
java·spring boot·后端
tuokuac3 小时前
异常:java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
java
麦兜*3 小时前
Spring Boot集群 集成Nginx配置:负载均衡+静态资源分离实战
java·spring boot·后端·nginx·spring·缓存·负载均衡
一叶飘零_sweeeet3 小时前
攻克 大 Excel 上传难题:从异步处理到并发去重的全链路解决方案
java·excel·大文件上传
huan19933 小时前
Java中实现html转pdf
java