codecamp

获取ioc对象的特殊场景

在Mvc环境下

方法1, 通过SetupBy,将Ioc容器放到一个public的静态属性, 推荐.

@SetupBy(MainSetup.class)
public class MainModule {}


public class MainSetup implements Setup {
    public static Ioc ioc;
    
    public void init(NutConfig conf) {
        MainSetup.ioc = conf.getIoc();
    }
}

方法2, 通过Mvcs类

// NutFilter作用域内,通常是请求线程内
Ioc ioc = Mvcs.getIoc();
// 独立线程, 例如计划任务,定时任务的线程.
Ioc ioc = Mvcs.ctx().getDefaultIoc();

非Mvc环境下

这种情况下, 一般是不需要Ioc容器的. 如果需要,那么Ioc容器是自行new的,所以需要下面 范式

public class MyApp {
    public static Ioc ioc;
    
    static {
        ioc = new NutIoc(new ComboIocLoader("*anoo", ...));
    }
}

单元测试时的Ioc

请使用nutz-plugins-mock插件

首先,需要实现一个自定义的TestRunner

public class NutBookIocTestRunner extends NutTestRunner {

    public NutBookIocTestRunner(Class<?> klass) throws InitializationError {
        super(klass);
    }

    // 若使用Nutz MVC, 覆盖getMainModule方法
    protected Class<?> getMainModule() {
        return MainModule.class;
    }
    
    // 非mvc环境下, 覆盖getIocArgs/createIocLoader/createIoc均可
    
}

测试类, 其中的@RunWith(NutBookIocTestRunner.class)是关键哦,当然,@IocBean也是必须的

@RunWith(NutBookIocTestRunner.class)
@IocBean
public class SimpleNutTest {
    @Inject
    protect Dao dao;
    
    public void test_dao_ok() {
        assertNotNull(dao);
    }
}
让Ioc容器帮你规划配置文件
AOP -- 在Mvc中的使用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

表达式引擎

maplist结构

图像处理小军刀

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }