如何玩转一个开源项目-如何运行和读代码

1. 了解项目是干嘛的,有没有兴趣学习,有哪些技术点,一般在开源项目最后作者都会留有自述文件。(可以提前拆分了解技术点,大体有个概念后,对项目入手有较大的帮助)image
2. 将项目跑起来(跑起来才有信心进行接下的学习)

image.png

3. 阅读项目源并调试(可结合某个运行起来的功能入手,一个组件一个组件的弄熟、看报错、看日志、看打印变量)

正好准备搞一个个人博客,凑着一块来吧,Github搜Halo
此项目是基于SpringBoot写的,下面了解一下项目结构

首先是build.gradle 项目管理文件 里面是各种依赖(直接在此文件就可以看出用了那些技术点,可以拆分了解一下具体的知识点)

image.png

其次就是src文件夹 里面是源码以及资源文件

image.png

Java文件夹中的Application文件为SpringBoot项目的入口文件(有些可能命名不是这个,根据位置找就行了,main方法在就是)

image.png

resources目录下的.yaml 为配置文件

image.png

banner文件 启动时的样式,类似于欢迎页的东西

image.png

resources目录下的目录里面存档的是静态资源

image.png

下面是看源码的主要步骤:
建议首先从controller(控制器)看起,以为这里是前后端交互的入口image.png
示例:例如登录 在admincontorller中 可以看到login 调用了adminService 按住ctrl点击 》》可以看到引用的哪个

image.png

继续按住Ctrl 点击AdminService就会跳转到对应的Service文件,可以看到此文件是实现的接口,点击左侧的向下箭头,就会跳转到接口

image.png

到这里就转到了Service层(服务层) Service层是服务于Controller层的(Controller层没有具体的代码,仅仅是调用,调用的对象就定义在Service里面)

示例:老样子按住Ctrl 跳转到更深一步的代码
image.png

文件定位在repository目录下。这里就到了第三层,点开文件就会发现里面是一些SQL语句,所以这层就是数据交互层。

image.png

有数据库操作语句就得有实现对象,这时就到了model层,可以看到这里都是一些与数据库强相关的东西

image.png

到这里主要的实现代码基本上都有了,后面就是一些其他的(不需要主要去看的东西,而且也不一定能看懂的。。。。):

utils 工具类 存放各种工具
image.png

Security 安全类 登录验证等东西
image.png

listener 监听类 监听项目运行时的状态等打印在控制台中(有些项目可能没有,个人认为不是太重要)
image.png

hander 存放一些处理器 总之就是一些辅助工具
image.png

filter 过滤器
image.png

factory 工厂
image.png

exception 异常定义
image.png

event 事件 可能会有继承关系 直接按住Ctrl追踪就行
image.png

config 配置
image.png

cache 与缓存相关的

下面就到了喜闻乐见的总结环节

Controller ==>Service ==>repository ==>model
主线基本上就这些,其他都是辅助
SpringBoot 我学习的时候是从Spring开始再到SpringMVC再到SpringBoot真的是非常非常吃力,无数个配置文件,几乎都要放弃了。硬着头皮往下学发现SpringBoot我竟然学的还算轻松。如果你和我一样,不妨试着反向学习。

调试:点击左上角的小虫子,以调试模式启动

image.png

之后在谷歌浏览器中运行,F12进入开发者模式

image.png

例如我想调试登录:

将控制台显示界面切换到Network,点击登录

image.png

控制台就会跳出请求过程,在Name栏找到login点击,就会出现如下页面,URL中login复制下来备用

image.png

此页面拉到最后,就会看到刚刚代码干的事情

image.png

点击Preview可以看到预览

image.png

接下来转到Idea中,项目上右击,找到Find in path点击,将刚刚复制的地址粘贴进去

image.png

找到后点击

image.png

跳转到对应的代码页

image.png

由此就可以看出来刚刚浏览器中的操作就是此代码块实现的,在这个地方打个断点,浏览器中退出登录重新点击登录,就会跳入断点

image.png

鼠标放代码上就会显示传的参数

image.png

在此代码块中找到实现的方法方法,按住Ctrl点击

image.png

可以看出这是实现的接口,点击左侧的向下箭头,这里就找的了真正的登录校验代码

image.png

在这里打个断点,按F8进入本行代码

image.png

之后按F5慢慢调试

image.png

一个功能结束之后,同样的方法,一个功能一个功能的慢慢调试,直到吃透整个项目

4. 自己改东西加自己的功能模块(内化为自己的东西)

你可能感兴趣的:(java,springboot,intellij-idea)