micro-mvc框架支撑mvc各层代码热部署
micro-mvc框架,借助nhmicro框架和groovy技术使所有的controller、servicebean、dao和sql脚本都支持动态热部署和调试。
Controller层
Controller层groovy中使用注解MicroUrlMapping设置url地址
类上的注解必须有并作为根路径
各个方法中设置子路径
比如下面的groovy中test方法可以调用url为/testController/test
方法参数固定为HttpServletRequest request, HttpServletResponse response
@MicroUrlMapping(name="/testController")class TestController extends MicroControllerTemplate { public String tableName="micro_test3"; public String getTableName(HttpServletRequest httpRequest){ return tableName; } @MicroUrlMapping(name="/test") public void test(HttpServletRequest request, HttpServletResponse response){
可以继承MicroControllerTemplate获取默认增删改查功能http接口。但需要在controller中写明super的调用过程并设置url
@MicroUrlMapping(name="/delInfo") public void delInfo(HttpServletRequest httpRequest, HttpServletResponse httpResponse){ super.delInfo(httpRequest, httpResponse); }
Service层
建议将service功能和controller层功能融合在同一个groovy中实现。如果一定要分出service层groovy,
又不愿意用GroovyExecUtil显示调用。可通过注解InjectGroovy注入service层groovy的代理接口对象。
加载groovy时遇到InjectGroovy注解的成员变量,会自动生成成员接口的代理对象并注入。
代理对象的功能是调用name指定的groovy中与接口同名的方法。
@InjectGroovy(name="testGroovy") public ITest test;
如果service层对象是传统java编写的,或microdao的mapper对象,可以使用Resource从spring中注解注入。
@Resource public TestRep testRep;
Aop机制
加载groovy时提供aop代理机制,默认提供事务aop和数据源切换aop
事务aop,可在加载时,识别Transactional注解,实现事务控制。
可自行别写特定功能代理。
开启代理需要在groovy的类中设置@MicroAop注解指定代理类
@MicroAop(name=[MicroDefaultLogProxy.class,MicroTMProxy.class,MicroDbProxy.class], property=["","",""])@MicroUrlMapping(name="/testController")class TestController extends MicroControllerTemplate {
Dao层
MicroDao同时支持mysql和oracle
MicroDao相对mybatis的优点:
1,sql脚本支持修改后热部署实时生效。
2,bean与数据库字段映射关系,通过注解设置到bean中,不必在sql脚本中体现。
3,sql脚本支持类似jsp的写法,且不必区分select、update使用不同标签,更加灵活。
4,不需要使用插件,内置支持物理分页。
5,不需要使用插件,内置支持针对bean的标准增删改查功能。
6,不需要使用插件,内置支持读写分离,分库分表。
7,针对mysql5.7支持动态字段。
支持mapper、template、非orm三种模式支撑业务系统
1,mapper指,通过扫描接口,运行时自动生成dao实例;
2,template指,通过继承template标准父类,生成dao子类;
3,非orm指,直接使用microDao实例,可以执行非orm更灵活的数据库操作。