Mixin rick.mixin.Injectable
Mixin that provides dependency injection integration. Classes that extend Injectable receive a
Di container on construction.
Location: rick.mixin.Injectable
Constructor
Injectable.init(di: Di)
Store the Di container instance.
Parameters:
di(Di) - Dependency injection container
Methods
Injectable.set_di(di: Di)
Replace the internal Di reference.
Injectable.get_di() -> Di
Retrieve the internal Di container.
Usage
from rick.mixin import Injectable
from rick.base import Di
class UserService(Injectable):
def __init__(self, di: Di):
super().__init__(di)
def get_user(self, user_id):
db = self.get_di().get('db')
return db.find_user(user_id)
# Register and use
di = Di()
di.add('db', my_database)
di.add('user_service', UserService)
service = di.get('user_service')
user = service.get_user(123)
Injectable is commonly used as a base class for services that need access to the DI container
and are loaded via MapLoader.
Related Topics
- Di - Dependency injection container
- Runnable - Runnable interface mixin
- Translator - Translation mixin