IDEA初探:深入理解 Structure 功能

news/2024/10/28 14:37:05/

image

一、Structure - 类视图

  Structure 是 IDEA 中的一个视图工具,它提供了对当前文件中结构元素的快速访问。通过 Structure,我们可以方便地查看和导航到代码中的各个部分,从而提高代码编辑和浏览的效率。

1.1 基本概念

  Structure 视图以树形结构展示了当前文件中的元素,包括类、方法、变量等。通过这个视图,可以快速定位到所需的代码元素,并进行编辑或跳转。

1.2 使用方法

  要打开 Structure 视图,也可以在菜单栏中选择 View > Tool Windows > Structure,或者使用 Alt+7 打开。
image

  这将在IntelliJ的右侧打开一个新的窗口,显示项目中所有类的结构。在该窗口中,可以查看类的层次结构、方法和属性,并且可以可以通过单击元素名称来快速跳转到代码中的相应位置。
image

  • sort

    选项说明
    Alphabetically按字母顺序对类中的元素进行排序。
    By Visibility按项的可见性按以下顺序对项进行排序:public - protected - package local - private。

    启用这两个选项后,视图中的项将根据其可见性级别进行分组。在每个可见性级别组中,项目按字母顺序排序。当这两个选项都处于禁用状态时,这些项将按它们在代码中的显示顺序显示。

  • Show

    选项说明
    Anonymous Classes在树视图中显示内部匿名类。
    Fields显示树中的所有字段(属性)。
    Inherited显示当前类继承的和可从该类访问的所有方法和字段。继承的成员显示为灰色,以区别于当前类中定义的成员。
    Lambdas显示树中的所有 lambda。
    Non-public显示所有非 public 类成员。关闭该选项可隐藏所有非公共成员。
    HTML Outline(仅适用于 HTML 文件)显示 HTML 文件的 HTML 5 轮廓
    DDL statements(仅适用于 SQL 文件)仅显示 DDL 语句
    DML statements(仅适用于 SQL 文件)仅显示 DML 语句
    Select statements(仅适用于 SQL 文件)仅显示语句
    Other(仅适用于 SQL 文件)仅显示不属于上述类别的语句。
  • Group

    选项说明
    Methods by Defining Type按定义类型的方法,将重写或实现特定类或接口的方法的所有方法分组到与该类或接口对应的节点下。
    Properties显示树中的 getter、setter 和字段。
    Group by type(仅适用于 SQL 文件)按类型对语句进行分组

1.3 实际应用

  在编写代码时,可以使用 Structure 视图来快速浏览和编辑类、方法或变量。例如,当想重命名一个类或方法时,可以在 Structure 视图中找到该元素,然后直接在视图中进行编辑,而无需进入源代码编辑模式。另外,Structure 视图还可以帮助快速查找某个元素在整个项目中的引用,从而提高重构代码的效率。

二、Project Structure - 项目结构

  本节介绍 IntelliJ IDEA 的 Project Structure 配置,包括如何打开、项目配置如Project name、SDK,以及Modules配置中的项目名称、JDK版本、目录结构和依赖。强调了保持项目一致性的重要性,并提供了导入、新建和配置Module的方法。

2.1 功能介绍

  在IDEA中构建项目,我们肯定离不开 Project Structure 即“项目结构”,它几乎涵盖了一个项目所有的个性化的配置项。一般我们可以在 File->Project Structure 打开下图这个面板,当然也可以通过快捷键 Ctrl+Alt+Shift+S(Windows/Linux)Command+Option+Shift+S(Mac) 打开这个面板,那么接下来我们就来看看这个面板上的内容。
image

配置项说明及备注
Project Settings项目级别的设置
Project项目设置项目级别的设置,用来指定项目名称、SDK版本、语言级别、编译文件输出路径。
Modules模块信息设置模块名称、模块目录结构、模块编译、JavaDoc和外部注释的输出路径、模块依赖
Libraries项目类库项目级别的类库管理,用来管理依赖包。
Facets项目特征翻译为特性,配置模块使用的框架、工具等信息,常见的有WEB、Spring等。
Artifacts项目成品将来将我们的工程的打包成什么产品(jar、war……)
Platform Settings全局设置
SDKs平台SDK一般来讲,全局的JDK都会配置在此处。
Global Libraries全局类库全局类库,所有的项目都可以使用这里配置的类库。
Problems项目问题在项目异常的时候很有用,可以根据提示进行项目修复。

2.2 Project Settings(项目设置)

Project - 项目基本信息

image

序号说明
项目名称,使用此字段编辑项目名称。
就个人而言,一般会将此处的项目名与项目目录名和pom文件中的name三处保持一致,同时也避免IDEA在左侧会显示多个名称标识。
目的SDK版本。项目下的所有模块,默认使用此SDK版本,每个模块也可以指定各自的SDK版本。
者边界选中的SDK,点击后跳转到Platform Settings 下的 SDKs列表。
选择项目的语言级别。即项目的编译级别,也可以理解为项目的最低支持语言版本。
不同的JDK版本选择,对代码的语法有一定的影响,比如选择JDK8以前的版本,那么代码中有基于Lambda的语法将会报错。
项目编译器输出,指定IntelliJ IDEA将存储编译结果的路径。
各个模块的编译文件,默认都放在此路径下,当然各模块也可以指定各自的存放路径。
可以自定义输出路径

Modules - 模块信息

  Module 可谓是重点中的重点,甚至是最重要。毕竟 Module 作为实际存在形式,所有的源代码、配置、依赖等都在这里,因此大有可学呀。Modules 中的配置用的比较多的情况就是一组项目时,可以配置独立每个项目的参数。包括项目名称、目录结构、输出路径、依赖等。
image

  下面分析一下图中标注的四项内容,其中第三和第四项属于Source选项的子项。

  • 第一项,加号可以导入、新增各类Module项目,当然后面的减号可以移除对应的项目。
  • 第二项,项目名称,使用方式与前面的一致,也同样建议多处保持一致。
  • 第三项,JDK版本,与Project中一样,但此处针对的是当前Module。
  • 第四项,项目目录结构。对Module的开发目录进行文件夹分类,不同类型的文件进行指定的文件类型。
Souces

  这里对 Module 的开发目录进行文件夹分类,就是说这个模块里有什么内容,说明了不同性质的内容放在哪里。这些不同内容的标记代表了一个标准Java工程的各项内容,IDEA就是根据这些标记来识别一个Java工程的各项内容。比如,它会用javac去编译标记为Sources的源码,打包的时候会把标记为Resources的资源拷贝到jar包中,并且忽略标记为Exluded的内容。左边显示的是在选中内容的预览。
image

  其中,Language level 即语言级别列表,使用此列表为模块选择Java语言级别,可用选项对应于JDK版本。而Sources 为模块的资源分类,标识出文件夹用途,哪些是源码,哪些是配置文件等。
image

Sources源码源代码存放的文件,蓝色,一般用于标注类似 src 这种可编译目录。
只有 Sources 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。
Tests设置测试代码存放的文件件,绿色,一般用于标注可编译的单元测试目录。
Resources配置文件,如:log4j.properties,application.yml,一般用于标注资源文件目录。
Test Resources这个对应着Tests文件夹,存放着Tests代码的配置文件。
Excluded排除的目录,一般是编译文件的输出目录。
被排除的目录相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。
Paths

  为模块配置编译器输出路径,还可以指定与模块关联的外部JavaDocs和外部注释的位置。
image

Compiler output编译输出路径。
Inherit project compile output path继承项目编译输出路径,选择此选项以使用为项目指定的路径。
即上面在Project选项中设置的out文件路径。
Use module compile output path使用模块编译输出路径,可分为以下:
Output path:编译输出路径。
Test output path:测试代码编译输出路径。
Exclude output paths: 选中此复选框可以排除输出目录。
JavaDoc使用可用控件组合与模块关联的外部JavaDocs存储位置的列表。
External Annotations外部注释。管理与模块关联的外部注释的位置(目录)列表。
Dependencies

  在此选项卡上,可以定义模块SDK并形成模块依赖关系列表。一个中大型项目一般有多个模块,它们各司其职。模块与模块之间一般都存在依赖关系,比如常见的xxx-core模块一般会被其它几乎所有模块所依赖。
image

Module SDK模块SDK,选择模块SDK。要将项目SDK与模块相关联,请选择Project SDK。
Export依赖列表。

Libraries - 项目类库

  管理项目的类库,模块中需要引用才能使用这里的类库,如下图所示。
在这里插入图片描述

Facets - 项目特征

  Facets 可理解为用于配置 Project 项目的框架区,它能看到项目的每个Module模块使用的框架、语言等情况,并且还可以对它们进行配置。比如Spring框架,如果某个模块使用了它就可以来这里统一配置。优点是你会发现借助IDEA强大的功能它都给你想好了哪些地方可配置,你可以更改,让你实现配置界面化。
image

  不同的Facet对应的最右端窗口内容配置项是不一样的,通过此视窗,可以看到你当前Project项目,哪些模块使用了Spring框架,哪些是web项目,一目了然。它有个非常大的作用就是站在Project的视角对每个模块进行整体把控,比如若你发现有个模块不需要是web项目(并不需要对外提供服务接口),那铁定就是多引包了或者职责不清晰导致的,就可立马针对性解决,消除隐患。

Artifacts - 项目成品

  在Maven大行其道的今天,虽然用IDEA打包很少使用了,但是有些时候它对你本地调试还是蛮有用的,并且对理解maven的打包依旧有效,来,了解一下。Artifacts 这个概念不是特别好理解,Artifact 是 maven 中的一个概念,表示某个模块要何种打包形式,例如 war exploded、war、jar 等。Artifact 是一个项目资源的组合体,整合编译后的 java 文件、资源文件等。对于一个 module 而言,有了 Artifacts 就可以部署到应用服务器中了。

说明:war 和 war exploded区别就是后者不压缩,开发时选后者便于实时看到修改文件后的效果。
image

  默认情况下,IDEA 的 Modules 和 Artifacts 的 output 目录已经设置好了,不需要更改。打成 war 包 的时候会自动在 WEB-INF 目录 下生产 classes 目录 ,然后把编译后的文件放进去。

  • Web Application:Exploded:这个是以文件夹形式发布项目,发布项目时就会自动生成文件夹在指定的output directory。
  • Web Application:Archive:就是war包形式,将项目打成一个war包在指定位置。

2.3 Platform Settings(平台设置)

SDKs

  所有的项目都可以使用这里配置的SDK,此处看一下图,操作比较简单,就不展开了。
image

小结

  本文对 IntelliJ IDEA 的项目结构 Project Structure 的每个页签进行了分析,很多小伙伴们觉得 IntelliJ IDEA 不需要专门的学习分析,会用它导入maven项目、跑跑main函数启动下Spring Boot就成啦,我却不以为然。衡量一个新手和一个高手的差异不是顺风顺水时,而是遇到问题时谁能够快速解决,谁又只能望洋兴叹,相信薪资的差异也体现在此。

在这里插入图片描述


http://www.ppmy.cn/news/1542604.html

相关文章

Python Pandas 数据分析的得力工具:简介

Python Pandas 数据分析的得力工具:简介 在如今的大数据与人工智能时代,数据的收集和处理能力变得至关重要。无论是在科学研究、商业分析还是人工智能领域,如何快速、高效地分析和处理数据都是不可忽视的课题。在众多的数据分析工具中&#…

【PHP】ThinkPHP获取请求的域名及前缀

目录 1. 获取请求的域名 2. 获取请求的完整 URL 3. 获取请求的根 URL 4. 获取请求的前缀 5.示例代码 解释 注意事项 在 ThinkPHP 中,您可以通过 Request 对象来获取请求的域名及前缀。以下是一些常用的方法: 1. 获取请求的域名 $domain $this-…

【C++奇遇记】C++中的基础知识(缺省参数,函数重载,引用)

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如…

代码编辑组件

代码编辑组件 文章说明核心代码运行演示源码下载 文章说明 拖了很久,总算是自己写了一个简单的代码编辑组件,虽然还有不少的bug,真的很难写,在写的过程中感觉自己的前端技术根本不够用,好像总是方案不够好;…

【递归、回溯及搜索】No.4---综合练习

文章目录 前言一、综合练习示例:1.1 找出所有⼦集的异或总和再求和1.2 全排列 II1.3 电话号码的字⺟组合1.4 括号⽣成1.5 组合1.6 ⽬标和1.7 组合总和1.8 字⺟⼤⼩写全排列1.9 优美的排列1.10 N 皇后1.11 有效的数独1.12 解数独1.13 单词搜索1.14 ⻩⾦矿⼯1.15 不同…

鲸鱼优化算法(Whale Optimization Algorithm, WOA)原理与MATLAB例程

鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种基于鲸鱼捕食行为的智能优化算法。它模拟了座头鲸在狩猎时的“气泡网”捕食策略。 文章目录 1.适应度函数2. 更新公式2.1 突袭行为2.2 螺旋更新3.线性递减参数4. 边界处理 MATLAB 实现示例代码说明…

当我们在微服务中使用API网关时,它是否会成为系统的瓶颈?这种潜在的瓶颈如何评估和解决?如何在微服务架构中保证高效请求流量?|API网关|微服务|异步处理

目录 1. API网关在微服务中的角色与重要性 2. API网关瓶颈的评估 2.1 请求延迟分析 2.2 并发请求量监控 2.3 内存和CPU使用情况 2.4 限流和熔断机制评估 2.5 日志分析 3. API网关瓶颈的解决方案 3.1 缓存机制优化 3.2 负载均衡优化 3.3 异步处理与消息队列 3.4 限流…

中间人攻击(https降级攻击)和iptables命令分析

中间人攻击 以下是一个简单的中间人攻击示例,结合 ARP 欺骗和流量修改: 1. 进行 ARP 欺骗 首先,使用 arpspoof 进行 ARP 欺骗,将受害者的流量重定向到攻击者的机器上: sudo arpspoof -i eth0 -t 172.29.144.50 172…