技术标签: spring spring boot java xml 后端
pom.xml是Maven项目的核心配置文件,用于管理项目的依赖、插件、构建配置等。在Spring Boot项目中,pom.xml文件也扮演着重要的角色。在pom.xml文件中,可以配置项目的资源文件。在Spring Boot的pom.xml文件中,通常会有一个<resources>标签文件,用于指定资源文件的路径和名称 。
<project>元素是pom.xml文件的根元素,它包含了整个项目的配置信息。在<project>元素下,可以定义一些子元素来配置项目的不同方面,如<dependencies>用于定义项目的依赖项,<build>用于定义项目的构建配置,<properties>用于定义项目的属性等。
通过配置<project>元素和其子元素,可以实现对项目的各种配置和管理,使得项目在构建和运行时具备所需的依赖和配置。
#定义了 pom(4.0) 命名空间(xmlns)
xmlns="http://maven.apache.org/POM/4.0.0"
#创建了一个 xsi 命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
#定义了 xsd 文件的位置,以便 XML 解析器解析 XML 文件
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd
在SpringBoot项目的pom.xml中,<parent>元素用于定义该项目的父依赖,通常会指定为spring-boot-starter-parent。一个典型的<parent>配置如下:
xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
</parent>
它指定了:
groupId:org.springframework.boot,Spring Boot项目的groupId
artifactId:spring-boot-starter-parent,一个特殊的启动器
version: 具体的Spring Boot版本通过继承这个父项目
Spring Boot项目可以获得以下好处:
继承Spring Boot的依赖管理(dependencyManagement元素)
获得合理的默认配置,如编译级别、资源过滤等
使用Spring Boot提供的插件配置,如repackage插件
能够使用常见的依赖版本,不需要显式指定版本号
注意,<parent>并不会直接继承依赖,只是引入了依赖管理功能。我们仍然需要在<dependencies>中显式声明需要的依赖。所以在SpringBoot项目中,使用spring-boot-starter-parent作为<parent>是标准做法,可以很好地管理项目的依赖。
定义了名称的副本,与<groupId>一起定义了一个Maven项目中某个模块的坐标。
在SpringBoot项目中,<artifactId>的值通常遵循以下规范:
项目模块的名称,比如core、web、config等
服务或应用的名称,比如user-service、e-commerce-app等
通用名称,比如common、util等
另外,<artifactId>还会出现在依赖声明中:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在SpringBoot的pom.xml文件中,<groupId>元素用于定义该项目隶属的组织或团体:<groupId>出现在pom.xml文件的顶层元素中,它和<artifactId>一起定义了一个Maven项目中的模块坐标。<groupId>通常与Java包命名类似,采用分层的命名空间,例如:
<groupId>com.example.organization</groupId>
SpringBoot项目中的<groupId>通常遵循一些规范:
公司/组织域名反转,如com.example- 项目名称,如org.springframework.boot
功能模块,如org.springframework.boot.autoconfigure
通用名称,如org.example.common
另外,<groupId>还会出现在依赖声明中:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在SpringBoot项目的pom.xml文件中,<version>元素用于定义这个Maven项目的版本号。<version>出现在pom.xml文件的顶层元素中,与<groupId>和<artifactId>一起定义项目的坐标。<version>的格式通常为X.Y.Z,其中X是主版本号,Y是次版本号,Z是增量版本号。
例如:
<version>1.0.0</version>
对于SpringBoot项目,<version>的定义通常遵循以下规范:- 使用语义化版本号,如1.0.0
主版本号:标识项目重大版本
次版本号:标识新增功能
增量版本号:标识Bug修复另外,SNAPSHOT表示当前为快照版本,还在开发中。
在依赖管理中,Maven根据<version>的值来区分不同版本的构件。SpringBoot的依赖也会指定版本:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
在SpringBoot项目的pom.xml文件中,<properties>元素用于定义Maven项目中可用的属性。<properties>出现在pom.xml文件的顶层元素中,是一个容器标签。在其中可以定义多个<property>来指定不同的属性。例如:
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
这为项目定义了java版本、项目构建编码和报告输出编码。SpringBoot项目的pom.xml通常会在<properties>中定义一些常用属性,如:- Java版本
资源过滤属性
Encoding设置
Spring Boot版本
其他通用属性
这样可以通过${propertyName}的形式在pom.xml中重用这些属性值,避免重复书写,提高可维护性。另外,子模块可以覆盖从父pom.xml继承的属性。所以SpringBoot项目中使用<properties>来定义可重用的Maven属性是非常有用的实践。它提高了pom.xml的配置效率。
在SpringBoot项目的pom.xml文件中,<dependencies>元素用于声明该项目的各种依赖。<dependencies>是pom.xml中的一个重要元素,Spring Boot项目的功能都是通过依赖来实现的。一个典型的<dependencies>示例如下:
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
它显示了:
spring-boot-starter-web:包含了web开发的依赖
mybatis-spring-boot-starter:MyBatis与Spring Boot集成的依赖
Spring Boot提供了众多的启动器依赖,可以通过组合启动器快速搭建项目。需要注意的是,并不是<dependencies>中的所有依赖都会实际被使用,它们可能用于提供依赖管理而不引入实际的依赖 jar。
总之,SpringBoot项目主要通过<dependencies>来管理功能实现需要的各种依赖。合理选择和声明依赖对项目开发非常重要。
在SpringBoot项目的pom.xml文件中,<dependencyManagement>元素用于提供依赖的版本管理,它通常继承自spring-boot-dependencies。在Spring Boot项目中,一个典型的<dependencyManagement>配置如下:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
它显示了:
从spring-boot-dependencies导入依赖管理
不需要指定版本,继承自Boot的依赖管理
使用<dependencyManagement>的好处是:
控制依赖的版本,避免版本冲突
依赖版本可以集中管理
依赖版本不需要重复声明
与Spring Boot依赖管理相兼容注意它只是声明了版本管理,并不会引入实际的依赖。需要在<dependencies>中显式声明。
总之,通过<dependencyManagement>可以很好地管理Spring Boot项目中的依赖版本,是标准的依赖管理方式。
在SpringBoot项目的pom.xml文件中,<build>元素用于定义项目的构建配置,主要包括插件和资源过滤等配置。<build>出现在pom.xml的顶层元素中,是一个重要的构建配置区。一个典型的<build>示例:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
它显示了:
spring-boot-maven-plugin:Spring Boot的Maven插件
资源过滤配置:开启src/main/resources的资源过滤
SpringBoot项目通常需要的<build>配置有:
编译插件:maven-compiler-plugin
打包插件:spring-boot-maven-plugin
资源过滤配置
插件管理配置
合理利用<build>可以控制Spring Boot项目的构建过程,比如创建可执行的Fat jar包等。是项目构建的重要一环。
在SpringBoot项目的pom.xml文件中,<repositories>元素用于配置该Maven项目需要访问的各种仓库地址。<repositories>出现在pom.xml文件的顶层元素中,它包含一个或多个<repository>元素,每个元素指定一个仓库地址,例如:
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
这个配置添加了Spring Milestones仓库地址。SpringBoot项目中常见的仓库地址包括:
Maven中央仓库:默认不需要配置
Spring仓库:包含Spring的发布版本和里程碑版本
SpringSnapshot仓库:包含Spring的快照版本
其他第三方库仓库通过<repositories>配置,Maven可以从这些仓库下载依赖的Jar文件。
注意企业级项目中,通常会搭建私有Nexus仓库,并配置使用该私服地址。所以SpringBoot项目使用<repositories>管理依赖仓库是非常常见和重要的实践。它支持从多种渠道获取依赖。
不同环境的配置文件,比如开发、测试、生产环境。
在SpringBoot项目的pom.xml文件中,<profiles>元素用于定义不同环境的构建配置文件。<profiles>包含一个或多个<profile>元素,每个<profile>指定了一个环境,例如:
<profiles>
<profile>
<id>dev</id>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
</profile>
</profiles>
这里定义了dev和prod两个环境。通常一个profile可以指定:
environment:执行环境
properties:不同的属性配置
dependencies:不同的依赖
plugins:不同的插件配置
resources:不同的资源
然后通过mvn命令使用参数"-Pprofile"激活不同环境的profile。这允许SpringBoot项目基于profile进行多环境构建。是实现不同环境隔离的重要方式。
插件仓库列表。
在SpringBoot项目的pom.xml文件中,<pluginRepositories>元素用于配置访问Maven插件的仓库地址。<pluginRepositories>与<repositories>类似,也包含多个<pluginRepository>子元素,例如:
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
这个配置添加了一个Spring Milestones仓库,用于下载Maven插件。它与<repositories>的区别在于:
<repositories>:用于依赖 jars 的仓库
<pluginRepositories>:用于插件 jars 的仓库
一般需要配置的插件仓库包括:
Maven中央仓库:默认可用
Spring Milestones/Snapshot仓库:获取Spring插件
其他第三方库提供的插件仓库
通过<pluginRepositories>,Maven可以从配置的仓库地址下载并使用插件。
对于SpringBoot项目,如果使用了Spring提供的自定义插件,则需要配置对应的Spring仓库地址,才能正确下载这些插件。所以它是启用Maven插件所必需的配置。
项目名称。
项目简单描述。
在SpringBoot项目的pom.xml文件中,<packaging>元素用于定义项目的打包方式。<packaging>出现在pom.xml的顶层元素中,默认为"jar"。对于SpringBoot项目,通常会设置为"jar",用于构建一个可执行的、包含所有依赖的Fat jar。例如:
<packaging>jar</packaging>
这会将SpringBoot应用打包成一个运行时可以直接执行的jar包。其它可选的打包方式还包括:
war:打包为一个Web应用的war包文件
ear:打包为一个Enterprise Archive(EAR)文件
SpringBoot也支持这两种打包方式,但更常见的还是使用"jar"进行打包。另外,如果要打成war包,则需要移除<dependency>中对spring-boot-starter-tomcat的依赖,而使用外置的Tomcat来运行war包。
总之,使用<packaging>元素指定"jar"是SpringBoot项目标准的做法,可以构建出一个自包含、可执行的jar包。
定义Spring Boot应用入口类名称。
项目主页的URL, Maven产生的文档用。
<url>http://maven.apache.org</url>
在SpringBoot多模块项目的pom.xml文件中,<modules>元素用于定义该项目包含的各个子模块。<modules>出现在多模块项目的顶层父pom.xml中,包含各个子模块的名称,例如:
<modules>
<module>spring-boot-module-A</module>
<module>spring-boot-module-B</module>
</modules>
这个多模块项目包含了两个子模块:
spring-boot-module-A
spring-boot-module-B
每个子模块会有自己的pom.xml文件。使用<modules>的好处包括:
一键构建整个项目
统一依赖管理和版本控制
代码重用和优化项目结构
SpringBoot多模块开发是很常见的实践,它有助于按功能或服务拆分工程,提高开发效率和维护性。所以合理使用<modules>管理多模块是SpringBoot项目中的重要配置。
文章浏览阅读2.1k次。物联网的出现逐渐改变和影响着大家生活的各个方面,物联网是以互联网为基础为智能设备提供通信支撑。在万物互联的大背景下,物质因连接而被赋予生命,但是还有小部分企业对物联网的认识存在简单的概念上。 一、物联卡的应用场景和流量划分 物联卡的应用场景可以划分为三类,分别是小流量应用场景、中流量应用场景、大流量应用场景。 ①小流量应用场景是指单用户量小于10MB,应用场景特征指文本类信息传输、单次使用流量小或每月连接次数少,一次性预付较长费用。适用行业主要有智能抄表、金融POS机、消费电子设备等, ②_物联卡套餐
文章浏览阅读5.9k次,点赞11次,收藏52次。某些特殊的应用场合可能要求PCIe设备能够以高可靠性持续不间断运行,为此,PCIe总线采用热插拔(Hot Plug)和热切换(Hot Swap)技术,来实现不关闭系统电源的情况下更换PCIe卡设备。热切换和热插拔的主要区别是应用领域不同,热插拔主要应用于PC以及服务器的主板上的板卡连接,而热切换主要针对的是CPCI(CompactPCI ,一种常用于仪器仪表的接口)应用的。热插拔分为两种,一是通知式热插拔,一个是暴力热插拔,_pcie dpc presence detect
文章浏览阅读385次。#!/usr/bin/env python # -*- coding: utf-8 -*- import sys, os import subprocess import re import shlex import time filename = sys.argv[0] ABSDIR = os.path.abspath(os.path.dirnam_自动部署cmd脚本
文章浏览阅读9.2k次,点赞8次,收藏36次。参考:http://acsc.cs.utexas.edu/cpabe/tutorial.htmlhttp://acsc.cs.utexas.edu/cpabe/事先先配置好cp-abe:http://www.cnblogs.com/rockorange/p/3757805.html我在ubuntu的主文件夹下面的hmj文件夹下新建了一个文件cp-abe。路径是:/home/_基于随机森林的cpabe
文章浏览阅读1.5k次。chapter3:finite-state automation. 原书中第三版中的这一章还没写完,所以是看的图书馆借来的第二版,并结合宗成庆老师的统计自然语言处理来看的。 有限状态自动机 finite-state automation, FSA前面一章节中的正则表达式只是一种用于文本搜索的方便的元语言,它是描述有限状态机的一种方法。任何正则表达式又可以用有限状态机来实现(除..._实现自动机的代码, 并以羊的语言(/baa+!/)为例对其进行测试
文章浏览阅读5.8k次,点赞7次,收藏18次。一个大学C语言试题的简单实现,供参考。题目:员工信息管理程序主要用结构体数组实现,用结构体表示每项记录,数据为:员工编号、姓名、性别、年龄、工龄、职务、部门、住址。设计各个函数,分别实现以下功能:(1)录入:完成职工信息的输入;(2)删除:完成职工信息的删除;(3)修改:允许对已经录入的数据重新进行编辑、修改;(4)显示:显示所有职工的信息;(5)查询:a. 按姓名查找职工记录;b_char department[max_students][50]
文章浏览阅读689次,点赞10次,收藏9次。利用Cesium自定义Primitive渲染多边形,并实现实时绘制多边形_cesium 画空间多边形
文章浏览阅读517次。MySQL数据库事务隔离级别有四种:READ-UNCOMMITTED(读未提交)、READ-COMMITTED(读提交)、REPEATABLE-READ(重复读)、SERIERLIZED(序列化读)。要真正理解数据库事务隔离级不能光看书,必须要上机操作,多练几次就会明白的了。上机环境有几点大家要注意的:1,把事务的自动提交功能关掉;2,把表引擎设置为InnoDB(支持事务操作);3,在做实验的_通俗的讲一下mysql的隔离级别
文章浏览阅读1.4k次。loop循环,计算2的8次方assume cs:codesgcodesg segment mov ax,2 mov cx,7 s: add ax,ax loop s mov ax,4c00h int 21Hcodesg endsend_16位汇编 循环
文章浏览阅读7.8k次,点赞7次,收藏69次。一 wxFormBuilder是什么wxFormBuilder是一款可视化的GUI设计工具,界面设计后可以自动生成代码,免去了手工码gui的繁琐,一套界面可支持生成C++\Python\PHP\Lua\XRC等代码形式,可以极大提升python GUI开发效能。项目发布网址:https://github.com/wxFormBuilder/wxFormBuilder/releases..._vscode wxformbuilder
文章浏览阅读268次。删除 mysqlsudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-get autoremove mysql-serversudo apt-get remove mysql-common //这个很重要上面的其实有一些是多余的。清理残_sudo apt-get remove mysql-common
文章浏览阅读2k次。------sqlserver 查询某个表的列名称、说明、备注、类型等SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号 = a.col..._sql 所有表 条件查询