应用场景:
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 一起学习
项目:jfinal 控制反转