欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

手写MVC框架怎么单独使用IOC示例

程序员文章站 2022-03-26 13:26:16
上一篇:手写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