📜  Akamecurpose (1)

📅  最后修改于: 2023-12-03 14:39:04.277000             🧑  作者: Mango

Akamecurpose - 让你的Python项目更易于扩展的依赖注入框架

Akamecurpose是一个轻量级且易于使用的Python依赖注入框架,它可以让你的项目更容易地实现模块化和可扩展性。

特点
  • 简单易用:Akamecurpose提供了一个清晰、简单的API,让你可以很容易地将依赖注入到你的项目中。
  • 轻量级:Akamecurpose只依赖Python标准库,不需要任何额外的依赖库。
  • 灵活:Akamecurpose支持多种不同的依赖注入方式,并提供了多种不同的注入场景,可以适应各种不同的应用场景。
  • 安全可靠:Akamecurpose内置了依赖解析器和循环依赖检测机制,可以保证依赖注入的正确性和安全性。
  • 可扩展:Akamecurpose可以与其他Python库很好地结合,可以很容易地扩展和定制。
安装

你可以通过pip安装Akamecurpose:

pip install Akamecurpose
快速使用
  1. 定义一个需要注入依赖的类,使用@inject修饰构造函数,注入所需的依赖:
from Akamecurpose import inject

class Foo:
    @inject
    def __init__(self, bar):
        self.bar = bar

    def hello(self):
        print('Hello, ' + self.bar.name + '!')
  1. 定义需要注入的依赖并使用@singleton修饰:
from Akamecurpose import singleton

@singleton
class Bar:
    def __init__(self):
        self.name = 'Akamecurpose'
  1. 创建一个Container实例,并将需要注入的依赖添加到容器中:
from Akamecurpose import Container

container = Container()
container.bind(Bar)
  1. 使用get方法从容器中获取需要注入的类实例:
foo = container.get(Foo)
foo.hello() # Hello, Akamecurpose!
支持的注入方式

Akamecurpose支持以下几种注入方式:

  • 构造函数注入
  • 属性注入
  • 方法注入
支持的注入场景

Akamecurpose支持以下几种注入场景:

  • Singleton:全局单例,只创建一个实例,在整个应用生命周期内共享使用。
  • SmartSingleton:即按需创建单例,当有一个请求时创建一个实例,并在整个请求处理过程中共享使用。
  • Transient:每次请求都重新创建一个实例。
  • ThreadLocal:线程本地化实例,在同一个线程内共享使用,不同线程之间互不干扰。
  • Scoped:作用域实例,在同一个作用域内共享使用。
更多用法
  • 使用bind方法将依赖注入到容器中,可以使用别名和标记来进行标识和区分。
  • 使用Container实例的spawn方法可以创建一个子容器,从而实现更灵活更紧凑的依赖注入。
  • 使用Container实例的context方法可以实现作用域依赖注入,从而更好地控制依赖的生命周期。
  • 使用Container实例的configure方法可以进行更加灵活的依赖注入配置,实现更加复杂的依赖注入场景。
  • 使用@provider装饰器定义一个提供者,以能够动态生成对象
  • 使用@injector装饰器定义一个注入器,以能够动态注入对象
更多信息

查看Github官方页面获取更多信息。

import Akamecurpose