手写MVC框架怎么单独使用IOC示例
程序员文章站
2022-06-27 21:27:21
上一篇:手写MVC框架(二)-代码实现和使用示例 背景 我在开发GMQ框架时使用了GMVC框架,使用过程中发现了一些不方便的地方,也都优化了。当前GMQ的传输基于http传输,我计划改为使用netty。因为我的代码是基于GMVC构建的,现在需求剥离掉web层,仅使用IOC功能。所以我就重新梳理了一下 ......
在开发gmq框架时使用了gmvc框架,使用过程中发现了一些不方便的地方,也都优化了。当前gmq的传输基于http传输,我计划改为使用netty。因为我的代码是基于gmvc构建的,现在需求剥离掉web层,仅使用ioc功能。所以我就重新梳理了一下gmvc框架,最后发现是支持这样做的。
ioc使用示例
1、添加依赖
gmc项目:
<dependency>
<groupid>com.shuimutong</groupid>
<artifactid>gmvc</artifactid>
<version>1.0.2-snapshot</version>
</dependency>
2、编写业务代码
package com.shuimutong.gmvc_ioc_demo.service; public interface testservice { void speak(); string convertstring(string s); } package com.shuimutong.gmvc_ioc_demo.service.impl; import com.shuimutong.gmvc.annotation.xautowired; import com.shuimutong.gmvc.annotation.xservice; import com.shuimutong.gmvc_ioc_demo.bean.person; import com.shuimutong.gmvc_ioc_demo.dao.testdao; import com.shuimutong.gmvc_ioc_demo.service.testservice; @xservice public class testserviceimpl implements testservice { @xautowired private testdao testdao; @override public void speak() { system.out.println("----testserviceimpl-----speak--"); } @override public string convertstring(string s) { person p = testdao.findperson(); string perstring = "addstr:" + s + string.format(",person(name:%s,age:%d)", p.getname(), p.getage()); return perstring; } } package com.shuimutong.gmvc_ioc_demo.dao; import com.shuimutong.gmvc_ioc_demo.bean.person; public interface testdao { person findperson(); } package com.shuimutong.gmvc_ioc_demo.dao.impl; import com.shuimutong.gmvc.annotation.xrepository; import com.shuimutong.gmvc_ioc_demo.bean.person; import com.shuimutong.gmvc_ioc_demo.dao.testdao; @xrepository public class testdaoimpl implements testdao { @override public person findperson() { return new person(); } }
3、入口代码
public class app { public static void main( string[] args ) { map<string, string> packagemap = new hashmap(); //扫描包目录 packagemap.put(gmvcsystemconst.base_package, "com.shuimutong.gmvc_ioc_demo"); try { instancemanager.initannotationedresourcesanddoinit(packagemap); } catch (exception e) { e.printstacktrace(); } //获取类的实例 testservice testservice = (testservice) instancemanager.getentitybyclazz(testserviceimpl.class); string msg = testservice.convertstring("hello,gmvc-ioc"); system.out.println(msg); } }
4、启动
addstr:hello,gmvc-ioc,person(name:name71,age:71)
ioc成功。
转自:https://www.cnblogs.com/shuimutong/p/12684296.html