微前端架构如何改变企业的开发模式与效率提升
636
2022-10-18
JFinal框架插件扩展
JFinalExtPlugin JFinal框架插件扩展
该插件暂支持JFinal框架Model对象和Controller对象注解注入
以下是使用示例:
控制器注解注入
1.控制器注解注入(在继承JFinal框架的Controller的子类上加上注解标签@JFinalController)
@JFinalController({"/", "/hello"})public class HelloController extends Controller { public void index() { User user = User.dao.findById("1500453530921"); renderHtml("id:" + user.getId() + "
" + "name:" + user.getName() + "
" + "age:" + user.getAge()); }}@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface JFinalController { String[] value();//访问某个 Controller 所需要的一个字符,相当于controllerKey,可定义多个 String module() default "";//所属模块,适用于路由拆分 String viewPath() default "controllerKey";//该 Controller 返回的视图的相对路径}
2.在JFinal的配置类的路由配置上注册该标签(注入方式:二选一)
public class JFinalBaseConfig extends JFinalConfig {..... /** * 路由配置 * @param routes */ public void configRoute(Routes routes) { System.out.println("configRoute"); //获取控制器注解注入对象 ControllerAnnotation controllerAnnotation = new ControllerAnnotation(scanControllerPackage); //第一种注入方式(直接传入路由对象,路径统一配置(适合单路由)) controllerAnnotation.injectController(routes); //第二种注入方式(直接传入回调接口,路径配置(适合拆分路由)) controllerAnnotation.injectController(new IControllerScanReport() { /** * * @param controllerKey 访问某个 Controller 所需要的一个字符,相当于controllerKey,可定义多个 * @param controllerClass 控制器Class * @param module 所属模块,适用于路由拆分,默认“” */ public void report(String controllerKey, Class> controllerClass, String module) { //do something } /** * * @param controllerKey 访问某个 Controller 所需要的一个字符,相当于controllerKey,可定义多个 * @param controllerClass 控制器Class * @param viewPath 该 Controller 返回的视图的相对路径,默认“controllerKey” * @param module 所属模块,适用于路由拆分,默认“” */ public void report(String controllerKey, Class> controllerClass, String viewPath, String module) { //do something } }); }.....}
Model实体类注解注入
1.控制器注解注入(在继承JFinal框架的Model的子类上加上注解标签@JFinalModel)
//使用例子@JFinalModel(tableName = "user")public class User extends Model
2.在JFinal的配置类的插件配置方法上注册该标签(注入方式:二选一;注:注解注入插件必须在ActiveRecordPlugin插件之前添加)
public class JFinalBaseConfig extends JFinalConfig {..... /** * 插件添加配置 * @param plugins */ public void configPlugin(Plugins plugins) { System.out.println("configPlugin"); //连接数据库 DruidPlugin dp = new DruidPlugin("jdbcUrl", "username", "password"); plugins.add(dp); //建立表和对象映射关系对象 final ActiveRecordPlugin arp = new ActiveRecordPlugin(dp); //添加表和对象映射关系,扫描@JFinalModel注解(注入方式一:直接传入ActiveRecordPlugin对象实例) ModelAnnotationPlugin map1 = new ModelAnnotationPlugin(scanModelPackage); map1.injectModel(arp); //添加表和对象映射关系,扫描@JFinalModel注解(注入方式二:直接传入ActiveRecordPlugin对象实例) ModelAnnotationPlugin map2 = new ModelAnnotationPlugin(scanModelPackage); map2.injectModel(new IModelScanReport() { public void report(String tableName, String primaryKey, Class> modelClass) { //do something } public void report(String tableName, Class> modelClass) { //do something } }); //添加插件(注:注解注入插件必须在ActiveRecordPlugin插件之前添加) plugins.add(map1); plugins.add(arp); }.....}
maven
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~