Я всегда использую одну и ту же стратегию для этого: я никогда не пытаюсь «понять» кодовую базу в целом, и я обычно стараюсь следовать потоку запросов.Я прочитал достаточно документации, чтобы определить, что необходимо для использования приложения, и прочитал этот код (сохраняйте весь исходный код загруженным в вашей IDE).
Например, в стойках вы будете устанавливать фильтр сервлетов в web.xml.Начните читать фильтр и следуйте пути, по которому отдельный запрос проходит через ваш стек.
Аналогично для Spring, есть две основные точки входа, filter и "getBean", обе из которых упоминаются очень рано в документации,Прочитайте эти два.
Для обоих этих случаев вы найдете один или два класса, которые очень быстро представляют «ядро» фреймворка.Прочитайте их очень хорошо и позвольте фактическим случаям использования и потребностям вести ваше дальнейшее исследование.
Подход к «пониманию» библиотеки с открытым исходным кодом (или любой другой базы кода в этом отношении) путем попытки найти все части обычноне очень хороший способ приблизиться к этим вещам, это обычно просто ни к чему не приведет, потому что многие из этих вещей содержат слишком много кода.Следуя потоку запросов, которые я нахожу, создание диаграмм также может сильно отвлекать внимание, оно стремится отвлечь внимание / сосредоточиться от понимания (и, поскольку мое понимание быстро увеличивается, большинство из них устарели даже до того, как они достигли принтера).