Magician-Containers 1.0.0 发布, Magician 家族又添一位新成员

2022-07-13 13:29:54 +08:00
 Joker123456789

最近在使用 Magician 开发项目的过程中,发现了一些问题,有时候想对某些方法做监听,或者 想启动一个定时任务做轮询,会比较麻烦一点,因为 Magician 暂时没有对应的解决方案,但是 我又不想在现有的 Magician 里添加功能,因为这样会让项目变得越来越大,最后逐渐变成一个大胖子,失去灵活性,开发者在使用的时候,不管需不需要的功能 都会被一股脑的引入到项目中,这是我无法接受的。 而且也违背了 Magician 一开始的初衷,所以最后我们决定以一个新组建的形式来发布。 把用不用的权利 交给用户。

Magician-Containers 带来了什么

  1. Bean 管理(没有 IOC ,只是为了在 bean 上面绑定功能,解决一些麻烦)
  2. AOP
  3. 定时任务

Bean 管理

在类上面加一个注解即可,不可以用在 controller 上,也不是所有的类都需要变成一个 bean ,开发者可以随意决定。

我们推荐,在你需要在这个类里面使用 AOP 或者定时任务的时候,才把它变成一个 bean 。

@MagicianBean
public class DemoBean {

}

AOP

编写 AOP 的逻辑

public class DemoAop implements BaseAop {

    /**
     * 方法执行前
     * @param args 方法的参数
     */
    public void startMethod(Object[] args) {

    }

    /**
     * 方法执行后
     * @param args 方法的参数
     * @param result 方法的返回数据
     */
    public void endMethod(Object[] args, Object result) {

    }

    /**
     * 方法出异常后
     * @param e 方法的异常信息
     */
    public void exp(Throwable e) {

    }
}

挂到需要监听的方法上

@MagicianBean
public class DemoBean {

    @MagicianAop(className = DemoAop.class)
    public void demoAopMethod() {

    }
}

定时任务

目前只支持 按照间隔轮询,还不支持 cron 表达式

@MagicianBean
public class DemoBean {

    // loop: 轮询频率,单位:毫秒
    @MagicianTimer(loop=1000)
    public void demoTimerMethod() {

    }
}

获取 bean 对象

不可以在定义成员变量的时候直接赋值,下面示例是我们推荐的一种写法,具体可以看官网的文档

@MagicianBean
public class DemoBean {

    private DemoBean demoBean;

    public void demoMethod() {
        demoBean = BeanUtil.get(DemoBean.class);
    }
}

启动时加载资源

HttpServer httpServer = Magician
        .createHttp()
        .scan("com.test"); // Scanning range (package name)

// 在 scan 方法执行后,才可以加载 bean ,顺序一定要注意
MagicianContainers.load();

httpServer.bind(8080);

访问官网了解更多:https://magician-io.com

1065 次点击
所在节点    Java
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865891

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX