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

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

image

2. 将项目跑起来(跑起来才有信心进行接下的学习)

image.png

基本上github上面的开源项目有两种管理方式maven或者gradle,直接在github就可以看出来。有pom.xml文件的为maven管理,build.gradle文件为gardle管理,导入方式不同需注意。
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

image.png

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

image.png

tip:左上有个小图标,可以定位当前正在编辑的文件的目录
image.png

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

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

  • 之后点击定位
    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
  • 之后按F6慢慢调试
    image.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值