jfinal 控制反转

应用场景:

            1、动态注册路由

            2、支持Service注入

            3、支持Model注入

注意:默认master只支持3.1及以下版本(1、3.1.4以上版本生成策略修改2、路由与插件启动顺序修改,如果有3.1.4及以上版本需求请等待支持版本的分支)

gitee 源码地址:https://gitee.com/starskye/Ioc_Manager

使用实例gitee地址:https://gitee.com/starskye/jfinal_ioc_example

使用教程:

            1、生成(解释:因为如果需要注入Model 需要在生成时添加Entity的注解(就是懒 ,懒得手动添加注解))

// ModelGenerator 使用 XgsModelGenerator
Generator gernerator = new Generator(getDataSource(), new BaseModelGenerator(baseModelPackageName, baseModelOutputDir), new XgsModelGenerator(modelPackageName, baseModelPackageName, modelOutputDir));
gernerator.generate();

            2、配置插件(参数1:路由对象、参数2:需要扫描的包名 数组)

IocPlugin ioc = new IocPlugin(routes, pkgs);
plugins.add(ioc);

            3、配置Action拦截器(用于注入controller)

interceptors.addGlobalActionInterceptor(new InjectInterceptor())

            4、注解使用

@Service 扫描service使用
@Inject Controller与Service 对象注入
@ControllerKey 扫描Controller(value:请求url,viewPath:视图访问地址)

            5、在此处基本已经结束了,如何使用泛型进行动态注入

需要创建顶级泛型service(所有service继承该service并传入相应的泛型)baseService例:

public class BaseService<M extends Model> {
    @Inject
    M dao;
    public M findById(Object id){
       return (M) dao.findById(id);
    }
}

service例:

@Service
public class CategoryService extends BaseService<Category> {

}

此处类别Service 将自动注入dao对象并且查询子级引用this.dao.page()等调用方式。over~~

3.3分支版本已完善需要有的朋友请切换分支查看

有问题加群:470139910 一起学习