容器管理模块 Magician-Containers

容器管理模块 Magician-Containers

MIT
Java
跨平台
2022-07-13
Magician专区

Magician-Containers 是 Magician 的官方组件,一个容器管理模块,可以对项目中的bean进行统一管理,它带来了两个扩展:AOP 和定时任务。

文档

https://magician-io.com

示例

导入依赖

<!-- This is the jar package build by this project -->
<dependency>
    <groupId>com.magician.containers</groupId>
    <artifactId>Magician-Containers</artifactId>
    <version>1.0.0</version>
</dependency>

<!-- This is Magician -->
<dependency>
    <groupId>com.github.yuyenews</groupId>
    <artifactId>Magician</artifactId>
    <version>2.0.5</version>
</dependency>

<!-- This is the log package, which supports any package that can be bridged with slf4j -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.7.12</version>
</dependency>

标记Bean

不可以用在Controller上

@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() {

    }
}

定时任务

@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-Containers 1.0.0 发布,Magician 家族又添一位新成员

最近在使用Magician开发项目的过程中,发现了一些问题,有时候想对某些方法做监听,或者 想启动一个定时任务做轮询,会比较麻烦一点,因为Magician暂时没有对应的解决方案,但是 我又不想在现...

07/13 10:54

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

暂无博客

返回顶部
顶部