{"adoption": {"forks": 1425, "observed_at": "2026-08-28T04:09:02.262809+00:00", "stars": 4908}, "canonical_url": "https://ross.abutalabs.com/products/small-spring", "card": {"archived": false, "artifact_type": "learning-resource", "description": "🌱《 Spring 手撸专栏》，本专栏以 Spring 源码学习为目的，通过手写简化版 Spring 框架，了解 Spring 核心原理。在手写的过程中会简化 Spring 源码，摘取整体框架中的核心逻辑，简化代码实现过程，保留核心功能，例如：IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。", "domain": ["developer-tools", "tutorials", "programming-languages"], "enriched": true, "function": ["developer-tools"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["fuzhengwei/small-spring"], "name": "fuzhengwei/small-spring", "platform": ["jvm"], "pushed_at": "2023-07-17T12:45:42+00:00", "repo": "fuzhengwei/small-spring", "stars": 4908, "tags": ["spring", "ioc", "aop", "java", "handwritten-framework", "source-code-learning", "educational"], "topics": ["spring", "java", "aop", "cglib"], "urls": [], "use_cases": ["learn how Spring's IOC container works internally", "understand Spring AOP and proxying by implementing it from scratch", "study the Spring bean lifecycle step by step", "prepare for Java backend interviews on Spring internals", "follow a guided project building a mini Spring framework", "compare a simplified Spring implementation against real Spring source code"], "what_it_is": "A Chinese-language tutorial column ('Spring 手撸专栏') where readers build a simplified version of the Spring framework in Java to learn its core principles. It implements core features such as IOC, AOP, bean lifecycle, application context, scopes, and resource handling in a stripped-down codebase.", "when_to_avoid": ["you need a production-ready DI/AOP framework - use real Spring instead", "you need full Spring feature coverage such as Spring Boot, data access, or web MVC", "you cannot read Chinese, since the tutorial articles are in Chinese"], "when_to_choose": ["you want to deeply understand Spring's core mechanisms rather than just use them", "you prefer learning by writing code alongside written articles", "you are a Java developer preparing for interviews about Spring internals"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/small-spring", "repo": "fuzhengwei/small-spring", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:02.262809+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:18:06.004147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09734871a3fea6519ab5f36cf20555f646360c0c217be5592cd2342f240fc0c", "fetched_at": "2026-08-28T04:09:02.262809+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fuzhengwei/small-spring"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1936, "days_push": 1143, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}