阅读 44

如何在kotlin中使用Magician

由于kotlin和java 都是jvm上的语言,所以他们之间可以完美互通,这已经是世人皆知的事情了,那么用java开发的Magician自然也可以被kotlin使用,而且是完美使用。\

这篇文章将带大家一起看一下在kotlin中如何使用Magician,以及Magician的Web 和 JDBC组件

首先创建一个maven项目

1.将目录内的java改成kotlin

image.png

2.在pom.xml中引入kotlin编译器以及Magician所需的jar包

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <kotlin.version>1.5.21</kotlin.version>
    <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
</properties>

<dependencies>
    <dependency>
        <groupId>com.github.yuyenews</groupId>
        <artifactId>Magician</artifactId>
        <version>1.1.17</version>
    </dependency>
    <dependency>
        <groupId>com.github.yuyenews</groupId>
        <artifactId>Magician-Web</artifactId>
        <version>1.1.7</version>
    </dependency>
    <dependency>
        <groupId>com.github.yuyenews</groupId>
        <artifactId>Magician-JDBC</artifactId>
        <version>1.1.3</version>
    </dependency>

    <!-- 这个是日志包,支持任意可以跟slf4j桥接的包 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.7.12</version>
    </dependency>

    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>kotlin-maven-plugin</artifactId>
            <groupId>org.jetbrains.kotlin</groupId>
            <version>${kotlin.version}</version>
            <executions>
                <execution>
                    <id>compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>

                <execution>
                    <id>test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>test-compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
复制代码

创建Magician服务

fun main(args: Array<String>) {

    var ioEventGroup = EventGroup(1);
    var workEventGroup = EventGroup(3);

    Magician.createTCPServer(ioEventGroup, workEventGroup)
            .scan("com.kotlin.demo")// 这里需要改成你自己的handler所在包名
            .bind(8080);

}
复制代码

创建Handler

@TCPHandler(path = "/json")
class DemoHandler : TCPBaseHandler<MagicianRequest> {

    override fun request(t: MagicianRequest) {
        var name = t.getParam("name");

        println(name);

        t.response.sendJson(200, "{'msg':'json'}");
    }
}
复制代码

启动服务之后,我们访问: http://127.0.0.1:8080/json?name=123

在控制台将会看到打印出了123,并且浏览器也收到了{'msg':'json'}

如何使用Web组件

1.我们先把刚才的handler删除,然后创建一个新的handler,path设置为根路径,handler里就简单的调用一句代码即可,如下:

@TCPHandler(path = "/")
class DispatcherHandler : TCPBaseHandler<MagicianRequest> {

    override fun request(t: MagicianRequest) {
        MagicianWeb.createWeb().request(t);
    }
}
复制代码

2.创建Controller

@Route("/demo")
class DemoController {

    @Route(value = "index", requestMethod = [ReqMethod.GET])
    fun index(indexVO : IndexVO) : String{
        println(indexVO.name);
        return "ok";
    }
}
复制代码

3.需要改一下扫描范围

fun main(args: Array<String>) {

    var ioEventGroup = EventGroup(1);
    var workEventGroup = EventGroup(3);

    Magician.createTCPServer(ioEventGroup, workEventGroup)
            //这里改成handler和controller所在的包名            
            //可以多个包名逗号分割,也可以直接配置共同的父包名
            .scan("com.kotlin.demo")
            .bind(8080);

}
复制代码

启动服务之后,我们访问: http://127.0.0.1:8080/demo/index?name=123

在控制台将会看到打印出了123,并且浏览器也收到了ok

如何使用JDBC组件

1.创建数据源

class JDBCConfig {

    companion object{
        fun initJDBC(){
            // 创建一个数据源

            MagicianJDBC.createJDBC()
                    .addDataSource("数据源名称", null)//第二个参数传入DataSource对象
                    .addDataSource("数据源名称2", null)//如果有多个数据源可以添加多次
                    .defaultDataSourceName("默认数据源名称");
        }
    }
}
复制代码

2.加载数据源

fun main(args: Array<String>) {

    JDBCConfig.initJDBC();//在main方法里调用第一步创建的方法即可

    var ioEventGroup = EventGroup(1);
    var workEventGroup = EventGroup(3);

    Magician.createTCPServer(ioEventGroup, workEventGroup)
            //这里改成handler和controller所在的包名            
            //可以多个包名逗号分割,也可以直接配置共同的父包名
            .scan("com.kotlin.demo")
            .bind(8080);

}
复制代码

3.创建DAO,在里面调用JDBCTemplate,基本上跟java里是一样的

class DemoDAO {

    fun getIndexData(indexPO: IndexPO): List<IndexPO> {
        return JdbcTemplate
                .create("需要调用的数据源名称")
                .selectList("select * from tb_index", indexPO, IndexPO::class.java);
    }
}
复制代码

Magician官网:www.magician-io.com

文章分类
后端
文章标签