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更灵活的数据库操作。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。