怎么看java源代码
?媽的,開發(fā)快7年了,源代碼一致不知道怎么看,由于自己不是計(jì)算機(jī)專業(yè)的, 必要后只是簡單的java培訓(xùn)了下,沒有很好的編程功底,導(dǎo)致遇到很多問題,沒有找到正確的處理方式,也怪自己懶,3天打網(wǎng)兩天曬魚,自己就是那種遇到問題,解決了事的那種人,當(dāng)然以前工作的確也太忙了,外包項(xiàng)目一直做,知道的挺多了,但是都不精,本著完成任務(wù)了事的態(tài)度,沒有積累;看源代碼基本上就是使用crtl+t找進(jìn)入jar包看下,但是如果遇到一個(gè)方法多個(gè)實(shí)現(xiàn)的時(shí)候,基本上都不知道,真正的實(shí)現(xiàn)類是那個(gè)了
? ? ? 通過這段時(shí)間的總結(jié):大體知道了一點(diǎn),看源代碼主要有幾點(diǎn):
? ? ? ? ? ?1、需要了解基本的java的23種設(shè)計(jì)模型,
? ? ? ? ? ?2、需要了解框架的真正實(shí)現(xiàn)類[? ?配置與運(yùn)行結(jié)合看]
? ? ? ? ? ?3、多找一些源碼包進(jìn)行解析:如:tomcat的源碼:https://tomcat.apache.org/download-90.cgi??
下面舉一個(gè)例子:
看shiro框架:
? ? ? ? ? ? 如實(shí)現(xiàn)登錄認(rèn)證的那塊:
? ?
import?org.apache.shiro.SecurityUtils;
?首先要知道: subject真正的實(shí)現(xiàn)類:
?
?
subject = (newSubject.Builder()).buildSubject();
?
?
?
SecurityManager :是一個(gè)接口,需要找到對應(yīng)的實(shí)現(xiàn)類:?
接口是什么,就是一種規(guī)范,這種規(guī)范使得框架可以嵌入到其他框架、軟件中的一個(gè)規(guī)則
SecurityManager 的實(shí)現(xiàn)類是DefaultWebSecurityManager; 注意是class ,不是interface【可以是abstract class,但是從設(shè)計(jì)模式中看的話,如果類繼承了抽象類的話,可能該方法不是真正的方法(子類重寫了)],
?
還記得最開始?Subject的創(chuàng)建嗎:
this.securityManager.createSubject(this.subjectContext);
---》DefaultSecurityManager中的
public Subject createSubject(SubjectContext subjectContext) {//create a copy so we don't modify the argument's backing map: SubjectContext context = copy(subjectContext); */ protected Subject doCreateSubject(SubjectContext context) {return getSubjectFactory().createSubject(context); } protected SubjectFactory subjectFactory; /** * Default no-arg constructor. */ public DefaultSecurityManager() {super(); this.subjectFactory = new DefaultSubjectFactory(); this.subjectDAO = new DefaultSubjectDAO(); } 最終得到Subject類的實(shí)現(xiàn)類:DefaultSecurityManager;登錄實(shí)現(xiàn)方法:
該類的securityManager從配置文件(或java中找)?DefaultSecurityManager:【----】
總結(jié)
以上是生活随笔為你收集整理的怎么看java源代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “睡服”面试官系列第一篇之let和con
- 下一篇: 前端学习(1701):前端系列javas