第一部分:IDEA版本选择与安装
1.1 版本选择
老师强调 :IDEA常用版本涵盖2016至2026约十个大版本,低版本即可满足企业开发需求(Spring Boot、微服务等项目高低版本无区别)。
| 版本 | 建议 |
|---|---|
| 2017版 | 推荐,稳定,无AI提示干扰 |
| 2023-2026版 | 有提示词工程提速,但初学者用低版本更利于理解逻辑 |
| 社区版/企业版 | 学习阶段用不了正版企业版,进公司后有账号 |
老师强调 :建议用低版本 ,避免高版本依赖过强导致独立写代码能力退化。电脑可安装多个IDEA版本。尽量使用英文版编辑器,避免汉化工具翻译不准。
1.2 安装步骤
老师强调 :IDEA安装位置要放D盘根目录 ,并新建文件夹命名(如idea2017),避免直接装到D盘根目录导致文件散乱。
- 双击运行安装程序,选择D盘新建的文件夹
- 系统选64位
- 文件关联勾选
.java、.kt等,默认全支持 - 等待进度条走完,不要点其他东西,否则易安装不全
1.3 破解步骤
老师强调:有安装包就双击执行,否则进bin目录运行;协议选第二个"同意"。正规公司用账号密码,破解场景选第一项再选第二项。
- 从破解文档复制绿色部分密钥粘贴,首次会提示失败(正常)
- 进安装目录(如D盘idea2017)
- 把破解包移到bin目录
- 修改两个vm配置文件(
idea64.exe.vmoptions和idea.exe.vmoptions),去掉空行,修改前半段路径为实际安装目录 - 重开IDEA,选第二个文件再粘贴一遍密钥
1.4 关闭自动更新(重要)
老师强调:不关闭自动更新,破解会失效,需卸载重装。
路径 :Configure → Settings → Appearance & Behavior → System Settings → Updates,取消勾选Automatically check updates for。
1.5 卸载软件的三个维度
老师强调:仅删图标只是删了快捷方式,并非卸载软件。
| 维度 | 说明 |
|---|---|
| 安装目录 | 删除软件本体 |
| 服务列表 | 删除对应服务(无则忽略) |
| 过程文件 | 使用中产生的文件(如聊天记录) |
老师强调:仅控制面板或第三方管家卸载常有残留,三者齐了才真搬走。
第二部分:IDEA配置与快捷键
2.1 JDK配置
老师强调 :进入Config → Project Defaults → Project Structure,在No SDK处配置JDK环境。
- JDK 1.8默认装在
C:\Program Files (x86)\Java下 - 选
bin目录的前一层目录 (如jdk1.8.0_262),别选到bin里面 - 语言级别选8
2.2 常用设置
| 设置项 | 路径 | 说明 |
|---|---|---|
| 编码 | Editor → File Encodings | 设为UTF-8 |
| 字体 | Editor → Font | 字体类型、大小 |
| 代码提示 | Editor → General → Code Completion | Case sensitive completion设为none |
| 自动导包 | Editor → General → AutoImport | 拷贝类时默认导入包 |
| 序列化ID | Editor → Inspections | 勾选Serializable class without 'serialVersionUID' |
| 隐藏文件 | Editor → File Types | 添加*.idea;*.iml; |
2.3 常用快捷键
| 快捷键 | 功能 |
|---|---|
psvm |
生成main方法 |
sout |
生成输出语句 |
fori |
生成普通for循环 |
集合.for |
生成增强for循环 |
Ctrl+Alt+T |
生成流程控制语句 |
Alt+Insert |
生成构造方法、get/set、toString等 |
Ctrl+B |
进入方法/变量的定义处 |
Ctrl+D |
复制光标所在行 |
Ctrl+F |
当前文件文本查找 |
Ctrl+H |
查看类继承结构 |
Ctrl+N |
通过类名定位文件 |
Ctrl+O |
快速重写父类方法 |
Ctrl+X |
剪切选中行 |
Ctrl+Y |
删除光标所在行 |
Ctrl+Z |
撤销 |
Ctrl+F12 |
弹出当前文件结构层 |
Ctrl+/ |
注释光标所在行 |
Ctrl+Shift+/ |
多行注释 |
Alt+Enter |
快速修复选择 |
Ctrl+Alt+L |
格式化代码 |
Ctrl+Alt+O |
优化导入的类和包 |
Ctrl+Alt+V |
快速引进变量 |
Ctrl+Shift+U |
大小写轮流转换 |
Ctrl+Shift++/ |
代码块注释 |
2.4 Debug调试
老师强调:Debug是未来工作必用技能,务必实操。
步骤:
- 在指定位置加断点(鼠标左键点击)
- 使用Debug方式运行main主函数
- 掌握快捷键:单步执行、让程序走下去、进入方法内、返回上一级调用
第三部分:IDEA创建项目类型
3.1 五种Java项目类型
老师强调 :按项目管理方式划分,而非框架技术。
| 项目类型 | 有页面 | 部署 | 依赖管理 |
|---|---|---|---|
| 普通Java | ❌ | ❌ | 手动导包 |
| 普通Java Web | ✅ | Tomcat | 手动导包 |
| Maven Java | ❌ | ❌ | Maven坐标 |
| Maven Java Web | ✅ | Tomcat | Maven坐标 |
| Spring Boot | ✅ | 内嵌Tomcat | Maven坐标 |
老师强调:
- 普通Java/普通Java Web打jar包
- 普通Java Web/Maven Java Web打war包
- Spring Boot打jar包(内嵌Tomcat,无需外部容器)
3.2 Spring Boot五种创建方式
- IDEA和Spring.io官网整合创建
- IDEA和阿里云官网整合创建
- 直接从Spring官网创建
- 直接从阿里云官网创建
- 通过Maven项目改造(推荐)
老师强调:考虑因素包括Maven版本和IDEA版本适配、本地库健全、镜像源配置、网络配置、IDEA和Maven整合。
第四部分:Maven核心概念
4.1 什么是Maven
老师强调 :Maven翻译为"专家/内行",是跨平台的项目管理工具 ,主要服务Java项目,负责依赖管理 和项目信息管理。
理想的项目构建:高度自动化、跨平台、可重用组件、标准化流程。
为什么用Maven:
- 拥有约定,知道代码在哪里
- 拥有生命周期,一条命令完成构建
- 只需要一个
pom.xml - 拥有依赖管理和仓库管理
4.2 依赖管理
老师强调 :依赖指开发时模块间相互需要,如A依赖B、B依赖C、C依赖D,这叫传递依赖。
传递依赖管理:
- 大项目中多层版本嵌套(A→B2.0→C3.0→D3.0)
- 自己下包控版本很麻烦
- Maven只需声明依赖A,自动解析后续链条并下载
4.3 项目构建
老师强调:项目构建是从编写源代码到编译、测试、运行、打包、部署的过程。
构建流程:
清理 → 编译 → 测试 → 报告 → 打包 → 部署
第五部分:Maven安装与配置
5.1 安装步骤
- 安装JDK 1.8或以上版本
- 下载Maven(地址:http:内部工具.html)
- 解压到相应目录(无中文路径)
5.2 安装目录分析
| 目录 | 说明 |
|---|---|
| bin | 含有mvn运行的脚本 |
| boot | 含有类加载器框架 |
| conf | 含有settings.xml配置文件 |
| lib | 含有Maven运行时所需的java类库 |
5.3 环境变量配置
| 变量 | 值 | 说明 |
|---|---|---|
| MAVEN_HOME | Maven解压路径 | 如C:\software\maven\apache-maven-3.6.0 |
| MAVEN_OPTS | -Xms128m -Xmx512m |
防内存溢出 |
| Path | %MAVEN_HOME%\bin |
添加bin目录 |
老师强调 :先配XXX_HOME变量,再配HOME/bin到Path。改路径只动前半段,后半段/bin不变。验证:敲mvn -v有版本输出即OK。
5.4 仓库配置
本地仓库(可修改):
- 默认
~/.m2/repository/ - 每个用户只有一个
远程仓库:
- 中央仓库:Maven默认的远程仓库
- 私服:架设在局域网内的仓库
修改本地仓库 :编辑conf/settings.xml,找到localRepository位置,改为自设目录。
5.5 依赖搜索顺序
查找依赖
│
▼
本地库是否存在?──是──→ 使用本地库
│
否
▼
中央仓库是否存在?──是──→ 下载到本地库
│
否
▼
远程仓库是否存在?──是──→ 下载到本地库
│
否
▼
报错
第六部分:IDEA整合Maven
6.1 全局配置
老师强调:没启动任何项目时选Settings,表示全局设置,Maven也一样。
路径 :Settings → Build, Execution, Deployment → Build Tools → Maven
| 配置项 | 说明 |
|---|---|
| Maven home directory | 指定Maven解压目录 |
| User settings file | 指定settings.xml文件 |
| Local repository | 本地仓库位置 |
老师强调:以上设置完成表示在本IDEA上,所有项目如未单独配置,默认均使用该Maven版本和本地库。
6.2 创建Maven项目
Maven Java项目:新建项目选Maven,不勾选模板,填GroupId、ArtifactId、Version。
Maven Java Web项目 :勾选maven-archetype-webapp模板。
老师强调 :若创建Web项目速度慢,在Maven → Runner的VM Options加-DarchetypeCatalog=local,指定从本地加载配置。
6.3 项目结构
项目名/
├── src/
│ ├── main/
│ │ ├── java/ ← Java代码
│ │ └── resources/ ← 资源文件
│ └── test/
│ ├── java/ ← 测试代码
│ └── resources/ ← 测试资源
├── target/ ← 输出位置
└── pom.xml ← Maven核心配置
6.4 Maven项目视图
老师强调:Maven项目视图用于查看项目属性,可进行打包、清理、测试等操作。
- Lifecycle:生命周期阶段
- Plugins:Maven插件
- Dependencies:Maven依赖
第七部分:pom.xml核心配置
7.1 坐标
老师强调 :坐标是构件的唯一标识,包括groupId、artifactId、version、packaging、classifier。
| 元素 | 说明 | 是否必须 |
|---|---|---|
| groupId | 组织标识(公司网址反写+项目名) | ✅ |
| artifactId | 项目名称(项目名-模块名) | ✅ |
| version | 版本号 | ✅ |
| packaging | 打包方式(jar/war/pom) | 可选(默认jar) |
| classifier | 附属构件 | 可选 |
<groupId>cn.tx.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
7.2 依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
</dependencies>
7.3 第三方依赖查找
老师强调 :不确定坐标时,通过中央仓库查找:https://mvnrepository.com/
第八部分:依赖范围(scope)
老师强调 :Maven项目在开发工程中有三套classpath:
- 主代码:main下的代码在编译时的依赖
- 测试代码:test下的代码编译时的依赖
- 运行时:main代码运行时对包的依赖
共6种scope:compile、provided、runtime、test、system、import。
| 依赖范围 | 主代码 | 测试代码 | 打包运行 | 例子 |
|---|---|---|---|---|
| compile | ✅ | ✅ | ✅ | log4j |
| test | ❌ | ✅ | ❌ | junit |
| provided | ✅ | ✅ | ❌ | servlet-api |
| runtime | ❌ | ✅ | ✅ | JDBC驱动 |
老师强调:
- compile:默认使用,编译、测试、运行classpath都有效
- test:只对测试classpath有效,典型如junit
- provided:编译与测试有效,运行时由web容器提供,打war包时不打进去
- runtime:运行时classpath有效,典型如JDBC(编写时是接口规范,运行时才需要具体实现类)
第九部分:依赖传递与可选依赖
9.1 依赖传递
老师强调:
- 第一直接依赖:HelloFriend项目依赖Hello项目
- 第二直接依赖:MakeFriend项目依赖HelloFriend项目
- MakeFriend项目只依赖HelloFriend,但也把Hello依赖进来
9.2 依赖范围对传递的影响
| 第一直接依赖\第二直接依赖 | compile | test | provided | runtime |
|---|---|---|---|---|
| compile | compile | -- | -- | runtime |
| test | test | -- | -- | test |
| provided | provided | -- | provided | provided |
| runtime | runtime | -- | -- | runtime |
9.3 依赖阻断
老师强调 :在依赖处添加<optional>true</optional>配置,项目就不会再引入该依赖。
9.4 可选依赖(exclusion)
<dependency>
<groupId>cn.tx.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>cn.tx.maven</groupId>
<artifactId>Hello</artifactId>
</exclusion>
</exclusions>
</dependency>
老师强调:排除Hello后,依赖包中就不会引用Hello。
第十部分:Maven生命周期
10.1 三套生命周期
老师强调:Maven有三套相互独立的生命周期。
| 生命周期 | 目的 |
|---|---|
| clean | 清理项目 |
| default | 构建项目 |
| site | 建立项目站点 |
10.2 完整生命周期(default)
| 阶段 | 说明 |
|---|---|
| validate | 验证项目 |
| compile | 编译 |
| test | 测试 |
| package | 打包 |
| verify | 验证 |
| install | 安装到本地仓库 |
| deploy | 部署到远程仓库 |
老师强调 :执行mvn clean命令会依次执行clean生命周期中的pre-clean阶段及clean阶段。mvn命令后可以指定多个阶段,按输入顺序依次执行。
第十一部分:Maven继承与聚合
11.1 继承
老师强调:继承就是避免重复,把公共配置写到父模块,子模块继承后自动获得。
可继承的POM元素:groupId、version、description、organization、url、developers、properties、dependencies、dependencyManagement、repositories、build等。
11.2 依赖管理
| 方式 | 说明 |
|---|---|
| 父类直接引用 | 子类都会继承该依赖 |
| dependencyManagement | 子类不会默认继承,使用时无需考虑版本 |
11.3 聚合
老师强调:项目划分为多个模块时,需要一次构建多个模块,不用每个模块都mvn。
聚合配置:
<modules>
<module>core</module>
<module>manage</module>
<module>portal</module>
</modules>
老师强调 :对parent进行mvn install时,会对core、manage、portal项目均进行install操作。
11.4 properties属性
<properties>
<spring.version>5.2.0.RELEASE</spring.version>
</properties>
老师强调 :通过properties定义属性,然后在其他地方用${属性名称}引用,消除重复和统一管理。
第十二部分:Maven私服架构
12.1 私服介绍
老师强调 :公司在局域网内搭建自己的远程仓库服务器,称为私服。每个员工的电脑连接私服,员工将项目打成jar发布到私服,其他项目组从私服下载依赖。
私服的作用:
- 公司内部的maven远程仓库
- 充当代理服务器,私服没有的jar包会从中央仓库下载
12.2 Nexus仓库类型
| 类型 | 说明 |
|---|---|
| hosted | 宿主仓库,内部项目发布 |
| proxy | 代理仓库,代理中央仓库 |
| group | 仓库组,合并多个仓库 |
| virtual | 虚拟仓库,兼容Maven1 |
12.3 发布到私服
settings.xml配置:
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
pom.xml配置:
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8079/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8079/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
老师强调 :id标签的值要和settings.xml配置文件中的id值保持一致。执行deploy命令发布项目到私服。
第十三部分:实训基础与三层架构
13.1 环境检查
| 环境 | 检查方式 |
|---|---|
| JDK | 找到安装目录的bin目录,测试java -version |
| MySQL | 服务列表的mysql服务能否正常启动 |
| Maven | 命令行mvn -v |
13.2 服务端三层开发
老师强调:B/S(浏览器/服务)架构,前端HTML/CSS/JS/VUE → 服务层(表现层/业务层/数据层)。
| 层 | 职责 | 对应技术 |
|---|---|---|
| 表现层 | 接收前端请求和参数,响应数据结果和视图 | Servlet → Spring MVC |
| 业务层 | 处理请求接口的业务逻辑 | Spring |
| 数据层 | 操作数据库,完成数据查询和修改 | JDBC → MyBatis |
13.3 MVC概念
| 概念 | 说明 |
|---|---|
| Model | 模型,面向对象,类(User) |
| View | 视图,页面,呈现数据和样式 |
| Controller | 控制器,接受前端请求(Servlet) |
附录一:核心易错点速查表
| 类别 | 易错点 | 正确理解 |
|---|---|---|
| IDEA版本 | 用高版本 | 低版本更稳定,无AI提示干扰 |
| 安装路径 | 装C盘或D盘根目录 | D盘新建文件夹 |
| 卸载 | 仅删图标 | 三个维度:安装目录+服务+过程文件 |
| JDK配置 | 选到bin里面 | 选bin的前一层目录 |
| 编码 | 不设置UTF-8 | 必须设置,防乱码 |
| Maven版本 | IDEA 2017用高版本Maven | IDEA 2017最高支持Maven 3.6.2 |
| 环境变量 | 只配Path | 先配XXX_HOME,再配HOME/bin |
| 本地仓库 | 用默认C盘 | 修改settings.xml指定目录 |
| 依赖范围 | test和provided混淆 | test仅测试,provided编译测试有效 |
| 依赖传递 | optional默认值搞反 | 默认true可传递,false禁止 |
| 打war包 | 打jar包 | Web项目打war包,Spring Boot打jar包 |
| pom坐标 | 忘写version | groupId、artifactId、version必须写 |
| 私服id | settings和pom不一致 | 两处id必须保持一致 |
附录二:Maven命令速查表
| 命令 | 作用 |
|---|---|
mvn clean |
清理target目录 |
mvn compile |
编译 |
mvn test |
运行测试 |
mvn package |
打包 |
mvn install |
安装到本地仓库 |
mvn deploy |
部署到远程仓库 |
mvn -v |
查看版本 |