ruwebframe 0.1.8

a simple webframe for rust actix-web, based on rudi and rbatis.
Documentation
 
use ruwebframe::rudi::dicontainer::direg;
use std::sync::Arc;
use ruwebframe::database::Database;
use ruwebframe::rudomain::rudb::dbentity::dbexample  ;
use ruwebframe::{register_singleton, register_transient, rulog};
use ruwebframe::rudi::{dicontainer, difactroy};
use ruwebframe::rulog::RuLog;

fn test_01_direg() {
    // 1. 注册(全局,任意地方都能调)
    direg::register_singleton("db", Database::new);
    direg::register("logger", RuLog::new);

    // 2. 获取单例(首次 get 时才 new,之后复用)
    let db1 = direg::get_singleton::<Database>("db").unwrap();
    let db2 = direg::get_singleton::<Database>("db").unwrap();
    println!("Arc::ptr_eq(db1, db2) = {}", Arc::ptr_eq(&db1, &db2)); // true

    // 3. 获取多例(每次 get 都 new)
    let log1 = direg::get::<RuLog>("logger").unwrap();
    let log2 = direg::get::<RuLog>("logger").unwrap();
    println!("多例: log1={:?}, log2={:?}", log1, log2);
}


#[test]
fn test_02_greg_bean() {
    // 1. 注册(全局,任意地方都能调)
    direg::register_singleton("db1", Database::new);
    direg::register("logger1", RuLog::new);

    // 2. 获取单例(首次 get 时才 new,之后复用)
    let db1 = direg::get_bean::<Database>("db1").unwrap();
    let db2 = direg::get_bean::<Database>("db1").unwrap();
    println!("Arc::ptr_eq(db1, db2) = {}", Arc::ptr_eq(&db1, &db2)); // true

    // 3. 获取多例(每次 get 都 new)
    let log1 = direg::get_bean::<RuLog>("logger1").unwrap();
    let log2 = direg::get_bean::<RuLog>("logger1").unwrap();
    println!("多例: log1={:?}, log2={:?}", log1, log2);
}
#[test]
fn test_03_greg_bean() {
   
    let   p = dbexample::find_bean_person().unwrap() ;
    rulog::info(p.lock().unwrap() );
       
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Logger;

impl Logger {
    pub fn new() -> Self {
        println!(">>> Logger::new()");
        Self
    }
}


register_transient!("logger", Logger, Logger::new);
register_singleton!("db", Database, Database::new); 

#[test]
fn test_04() {
    let mut container = dicontainer::Container::new();

    // 只需调一次,自动收集所有模块里的注册
    dicontainer::bootstrap(&mut container);

    let db1 = container.get_singleton::<Database>("db").unwrap();
    let db2 = container.get_singleton::<Database>("db").unwrap();
    println!("同一实例 ? {}", Arc::ptr_eq(&db1, &db2)); // true
}
#[test]
fn test_05_reg() {
    // 1. 注册(全局,任意地方都能调)
    //ruregister:: register_singleton("db", Database::new);
    //ruregister:: register("logger", Logger::new);

    // 2. 获取单例(首次 get 时才 new,之后复用)
    let db1 = dicontainer::get_singleton::<Database>("db").unwrap();
    let db2 = dicontainer::get_singleton::<Database>("db").unwrap();
    println!("Arc::ptr_eq(db1, db2) = {}", Arc::ptr_eq(&db1, &db2)); // true

    // 3. 获取多例(每次 get 都 new)
    let log1 = direg::get::<Logger>("logger").unwrap();
    let log2 = direg::get::<Logger>("logger").unwrap();
    println!("多例: log1={:?}, log2={:?} {}", log1, log2, log1 == log2);
}

#[test]
fn test_06() {

    difactroy::find_bean_di_factroy().unwrap().lock().unwrap().make_di();
}