softwaremill/macwire
این یک کتابخانهٔ تزریق وابستگی (Dependency Injection) برای زبان اسکالا است که به صورت کامپایل-تایم و بدون هیچ هزینهٔ اجرا (zero-cost) کار میکند.
کاربرد:
این کتابخانه به تو اجازه میدهد تا وابستگیهای کلاسها و اجزای برنامهات رو به صورت خودکار و بدون نیاز به فریمورکهای سنگین مثل Spring یا Guice، مدیریت کنی.
در چه شرایطی بهتره استفاده شود؟
وقتی میخوای یک برنامهٔ اسکالا با ساختار تمیز و تستپذیر داشته باشی، اما نمیخوای تحت تأثیر هزینههای اجرایی یا پیچیدگی فریمورکهای بزرگ قرار بگیری. MacWire عالی برای پروژههایی با معماری Functional یا Modular است.
چند مثال از موارد استفاده:
ساخت خودکار اینستنسهای سرویس، کنترلر و ریپازیتوری در یک وباپلیکیشن
مدیریت وابستگیها در میکروسرویسهای اسکالا با Akka یا http4s
کاهش کد تکراری در بخش wiring (اتصال کامپوننتها)
- ##DependencyInjection
- ##Scala
- ##MacWire
- ##CompileTime
- ##ZeroCost
- ##TypeSafe
- ##Akka
- ##http4s
- ##FunctionalProgramming
- ##ModularArchitecture
