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

helloworld_03424577
• 阅读 118

最近在使用 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);

以上只是这一个组件的介绍,Magician是一套基于netty开发的web解决方案,包含多个组件,目前已经发布的有:Magician(基于netty开发的http服务包),Magician-Web(MVC框架),Magician-JDBC(JDBC框架),Magician-Containers(本文介绍的这个组件)

感兴趣的人可以访问官网了解更多:https://magician-io.com

点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
5个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
Irene181 Irene181
1年前
用Python打造批量下载视频并能可视化下载进度的炫酷下载器
大家好,我是Python进阶者,今天给大家整点好玩的,一起来看看吧【一、项目背景】平时宅在家的我们最爱做的事莫过于追剧了,但是有时候了,网络原因,可能会让你无网可上,这个时候那些好看的电视剧和电影自然是无法观看了,本期我们要讲的就是怎样下载这些视频。【二、项目目标】通过Python程序对所感兴趣的视频进行批量下载,正好小编近期看到一些不错的视频,因为想
光头强的博客 光头强的博客
5个月前
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
Irene181 Irene181
1年前
用Python打造批量下载视频并能可视化下载进度的炫酷下载器
大家好,我是Python进阶者,今天给大家整点好玩的,一起来看看吧【一、项目背景】平时宅在家的我们最爱做的事莫过于追剧了,但是有时候了,网络原因,可能会让你无网可上,这个时候那些好看的电视剧和电影自然是无法观看了,本期我们要讲的就是怎样下载这些视频。【二、项目目标】通过Python程序对所感兴趣的视频进行批量下载,正好小编近期看到一些不错的视频,因为想
Stella981 Stella981
1年前
PHP发起POST请求(支持模拟表单和json传值)
HTTP请求是开发的过程中经常会遇到的任务,GET请求比较简单,但是POST请求却会遇到一些问题。有时候对方需要你模拟表单请求,有时候又希望你传递一个json。我们可以封装一个通用的方法来完成。functionpost($url,$data,$isJsontrue,$headers,$timeout10
Stella981 Stella981
1年前
JFinal Quartz 支持配置文件和持久化
    随着需求的增加,现在要定时启动一个调度和计划任务,原先写的QuartzPlugin,是持久化保存到数据库中的,从数据库中读取任务并执行。要是添加一个每天循环任务,就要在代码里写一次开始任务的代码,执行后,再注释掉,最后重启项目。否则会因为启动同name,同group的任务而报错org.quartz.ObjectAlreadyExistsE
Wesley13 Wesley13
1年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){
Wesley13 Wesley13
1年前
6 个重构方法可帮你提升 80% 的代码质量
在过去做了不少代码走读,发现了一些代码质量上比较普遍的问题,以下是其中的前五名:1.臃肿的类: 类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职责原则”(SRP)的理解。这些类往往会变得很臃肿,是由于不同的且在功能上缺少关联的方法都放在了相同的类里面。2.长方法: 方
Wesley13 Wesley13
1年前
Java中如何使用嵌入MySQL
这篇文件主要介绍在Java中嵌入式MySQL的使用,对于一些的应用项目,提供安装版的Mysql,Oracle是必须的工作。但是有时候如果是一个小的工具,可安装或者移植性比较强的小软件。再去安装数据库可能就比较麻烦了。其实MySQL也有嵌入式的,不需要安装,在使用的过程中,会自动创建数据库以及通过代码的方式启动或者关闭。下面提供一些代码片段,具体的会提供下
Stella981 Stella981
1年前
Python虚拟环境的创建和包下载
为什么使用虚拟环境因为直接在真实环境进行安装python的包会造成环境之间的污染,因此需要创建虚拟环境,原则上每一个项目都需要有一个独属于自己的虚拟环境Python项目的每次运行都需要启动环境,如果所有的模块都在一个环境中,不仅每次加载这些模块慢(尤其是开发过程中),并且依赖还可能相互冲突,甚至有些新引入的依赖会修改已安装模块的版
helloworld_03424577
helloworld_03424577
Lv1
从此带我徜徉你骨肉里钟情的汉水辽河,有何不可
1
文章
0
粉丝
0
获赞
热门文章

暂无数据