依赖注入

spring-rs提供了一个简单的编译期依赖注入的实现

编译期依赖注入

spring-rs提供了一种特殊的Component——Service,它支持在编译期注入依赖的组件。

像下面的例子UserService只需派生Service特征,为了区分注入的依赖,你需要通过属性宏#[component]#[config]指定依赖是一个Component还是一个Config。

use spring_sqlx::ConnectPool;
use spring::config::Configurable;
use serde::Deserialize;

#[derive(Clone, Configurable, Deserialize)]
#[config_prefix = "user"]
struct UserConfig {
    username: String,
    project: String,
}

#[derive(Clone, Service)]
struct UserService {
    #[component]
    db: ConnectPool,
    #[config]
    config: UserConfig,
}

完整代码参考dependency-inject-example