当前位置: 首页 > news >正文

小架构step系列02:搭建工程

1 概述

对于技术学习,比较好的方式,先不管懂不懂,找个例子先跑起来再来慢慢学习细节。所以这里先建一个工程,先完成标志性的“Hello World”。

2 搭建过程

2.1 前提

假定已经安装好java、编译工具和写代码的IDE,如果这些不清楚的话可以单独到网上搜索。
这里的例子采用的是:
  • JDK:1.8
  • Maven:3.3.9
  • IDE:IntelliJ IDEA (Community Edition)
对于一个简单的例子来说,上面三个可以选最新的版本都不受影响,一些详细的知识在后面的文章再详细介绍如何选择。

2.2 使用Spring工具搭建

2.2.1 生成工程

spring提供了一个搭建工具,使得工程搭建更加容易。先访问 https://start.spring.io/ ,得到下面的界面:
这个功能没有支持比较老的版本,比如jdk最小支持的是17,没有支持jdk 1.8。不过没有关系,可以直接用新的,也可以呆会调整一下。下面说明一下各个字段的意思:
  • Project:指定工程的类型,maven类型的一般用maven来编译,目录结构也使用src/main/java这种源码目录,使用pom.xml文件记录依赖;同理,gradle也对应gradle的规则。
  • Language:代码语言,Java就是使用Java语言;Kotlin、Groovy都是可以运行在Java虚拟机上的Java体现的语言。
  • SpringBoot:选择SpringBoot的版本,其和Java版本匹配即可;
  • Project Metadata:工程的信息,一般需要填Group、Artifact、Name信息,Group和Artifact共同唯一确定一个jar的唯一标识。Description属于描述,可以随意定;Package Name则会自动根据Group和Artifact生成,当然也可以自定义修改成别的形式。
  • Packaging:最终代码打包成什么格式,war包含整个项目的配置文件、代码、静态文件、依赖包等,jar包则没有带静态文件,在前后端分离的今天,jar就基本可以了。
  • Java:选择jdk的版本。到2024年,Java 17、11 和 8 的用户比例分别为 35%、33% 和 29%,相差并不大,Java新版本的发布速度也加快了很多,Java 21在2023年9月发布了,Java 24在2025年3月发布了。
点击右侧的“Add Dependencies”可以增加Spring的依赖,这次是个Hello World例子,还用不到这些具体的依赖,就先不选了。
点击下发的“Generate”或“Explore”按钮,生产工程并下载下来,解压后的目录如下:
src目录就把包所对应的各个目录都生成了:
- src- main- java- com- qqian- stepfmk- srvpro- SrvproApplication.java- resources- application.properties- test- java
另外一个重要的文件是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.3.11</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.qqian.stepfmk</groupId><artifactId>srvpro</artifactId><version>0.0.1-SNAPSHOT</version><name>srvpro</name><description>Step by step to construct service</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</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>

从上面可以看到,已经在<parent>节点选上了指定版本的springboot,在依赖<dependencies>节点中也加上了spring-boot-starter和spring-boot-starter-test,在<build>节点中指定了maven编译插件。

而<groupId>、<artifactId>、<version>则指定了本工程的唯一标识,<name>和<description>则用于展示。
<licenses>可以补充license说明,<developers>可以指定开发者信息,<scm>可以指定版本管理信息,也可以不用管它们。

2.2.2 修改版本

使用spring工具的时候,指定了springboot和jdk的版本,如果里面没有自己要的版本,那么工程生成之后可以修改一下。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><relativePath/>
</parent>

可以在Maven仓库里找合适的版本:Central Repository:org/springframework/boot/spring-boot-starter-parent/

比如这里找的是支持JDK8的最后一个版本:2.7.18。
JDK的版本在pom.xml文件中只需要改节点里的即可。
JDK的版本需要在IDE中修改,以IDEA为例:
  • 更改全局编译器:File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler -> Project bytecode version,如果要选Java1.8则选8,其它的按需要选择。
  • 更改工程编码语言:File -> Project Structure -> Modules -> 当前工程 -> Language Level,如果要选Java1.8则选8,其它的按需要选择。

2.3 手工搭建

通过工具搭建之后,如果想了解一下细节,那也可以手工搭建一下,理解一下里面的原理。

2.3.1 POM文件

Maven工程是通过pom.xml文件来管理的,所以在建一个工程空的文件夹后,第一步就先加pom.xml文件。
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"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version></parent><groupId>com.qqian.stepfmk</groupId><artifactId>srvpro</artifactId><version>1.0.0-SNAPSHOT</version><name>srvpro</name><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</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>

2.3.2 源码目录

标准的目录结构为:
- src- main- java- resources- application.properties- test- java

其中:

  • main/java是主要放源码的目录,平时所说的包路径的根目录就在这个目录,从这个目录(不含)开始来定包路径;
  • main/resources是放配置文件的目录,在这个目录下符合一定规则的配置文件会被springboot自动加载;
  • test/java则是写测试代码的目录。
把工程引入到IDEA里,然后在src/main/java目录下右键,选择菜单New -> Package,创建包:com.qqian.stepfmk.srvpro
创建完之后,在src/main/java/com/qqian/stepfmk/srvpro目录下右键,选择菜单New -> Java class,建一个带main方法的启动类:SrvproApplication
@SpringBootApplication
public class SrvproApplication {public static void main(String[] args) {SpringApplication.run(SrvproApplication.class, args);}
}

其中使用@SpringBootApplication注解可以节省引多个注解。

2.4 运行

抄一下SpringBoot官方的例子: Getting Started | Building an Application with Spring Boot ,替换一下SrvproApplication里的代码:
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class SrvproApplication {public static void main(String[] args) {SpringApplication.run(SrvproApplication.class, args);}@Beanpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) {return args -> {System.out.println("Hello World");};}
}

在IDEA中代码区域,右键选菜单Run,可以看到在Console里打印出Hello World:

Starting SrvproApplication on DESKTOP-TEQFED1 with PID 34556
No active profile set, falling back to default profiles: default
Started SrvproApplication in 1.266 seconds (JVM running for 2.33)
Hello World

3 架构一小步

建一个Java工程,编写pom.xml文件指定依赖,创建代码和配置文件的目录,建一个带main方法的启动文件,即可以完成最简单的工程搭建。
可以使用Spring官网提供的工具来代替手工创建,平时搭建时,这种机械的工作应该留给工具,但如果想了解原理则手工搭建印象更加深刻。
http://www.lryc.cn/news/579113.html

相关文章:

  • 智能检测原理和架构
  • STM32WB55VGY6TR 蓝牙OTA升级
  • ZED相机与Foxglove集成:加速机器人视觉调试效率的实用方案
  • 观测云 × AWS SSO:权限治理可观测实践
  • 计算机组成笔记:缓存替换算法
  • [202106][凤凰架构][构建可靠的大型分布式系统][周志明][著]
  • 车载软件架构 -- SOA服务分层设计原则
  • MacOS 安装brew 国内源【超简洁步骤】
  • 线程同步【Linux操作系统】
  • Kafka 运维与调优篇:构建高可用生产环境的实战指南
  • Java学习第六部分——API部分(续)
  • 腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE PostgreSQL版)
  • 智慧城市的安全密码:商用密码如何守护万物互联?
  • 运用逆元优化组合计算#数论
  • Django服务开发镜像构建
  • C++主流编辑器特点比较
  • Java 并发编程的 CAS(Compare and Swap)是什么?
  • 讲解“/etc/ssh/sshd_config “的“HostKey /etc/ssh/ssh_host_ed25519_key“ 笔记250702
  • pdf删除一页 python实现(已验证)
  • 模板编译原理
  • 使用OpenCV识别图片相似度评分的应用
  • YOLOv11剪枝与量化(一)模型压缩的必要性
  • 深入理解C++11原子操作:从内存模型到无锁编程
  • SpringCloud系列(47)--SpringCloud Bus实现动态刷新定点通知
  • 04-动态规划
  • 数学建模_微分方程
  • 内存架构的十字路口:深入解析统一内存访问(UMA)与非一致内存访问(NUMA)
  • 虚拟机知识点-Vagrant 在通过 VirtualBox 启动 CentOS 虚拟机时失败-VERR_NEM_VM_CREATE_FAILED
  • 从0开始学习R语言--Day36--空间杜宾模型
  • maven仓库