{"id":15180904,"url":"https://github.com/nkligang/tinyspring","last_synced_at":"2026-02-27T20:41:41.159Z","repository":{"id":77111107,"uuid":"340553825","full_name":"nkligang/tinySpring","owner":"nkligang","description":"A simple and flexible web service framework based on Mina","archived":false,"fork":false,"pushed_at":"2024-10-15T06:34:16.000Z","size":1250,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-06T21:44:49.466Z","etag":null,"topics":["java","mina","springboot","websocket"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nkligang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-20T03:38:52.000Z","updated_at":"2024-10-15T06:34:20.000Z","dependencies_parsed_at":"2023-02-26T19:15:19.327Z","dependency_job_id":null,"html_url":"https://github.com/nkligang/tinySpring","commit_stats":{"total_commits":29,"total_committers":1,"mean_commits":29.0,"dds":0.0,"last_synced_commit":"ea15c99ee0d67517b34f2bc835d8151064078c91"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nkligang%2FtinySpring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nkligang%2FtinySpring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nkligang%2FtinySpring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nkligang%2FtinySpring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nkligang","download_url":"https://codeload.github.com/nkligang/tinySpring/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240486625,"owners_count":19809208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","mina","springboot","websocket"],"created_at":"2024-09-27T17:00:23.285Z","updated_at":"2026-02-27T20:41:41.091Z","avatar_url":"https://github.com/nkligang.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"A simple and flexible web service framework based on Mina\n============================\n1. 基于Apache Mina框架下的简单和灵活的Web服务框架\n2. 类似于SpringBoot的接口编码风格\n3. 支持Mysql数据库,仿照ThinkPHP的数据库访问风格\n4. 支持定时任务,参考SpringBoot\n5. 支持Websocket服务\n\n快速集成：\n============================\n```java\n    \u003c!-- https://mvnrepository.com/artifact/com.fenglinga/tinyspring --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.fenglinga\u003c/groupId\u003e\n        \u003cartifactId\u003etinyspring\u003c/artifactId\u003e\n        \u003cversion\u003e1.0.4\u003c/version\u003e\n    \u003c/dependency\u003e\n```\n\n如何使用：\n============================\n\n```java\n    public static void main( String[] args ) throws Exception\n    {\n\t\tnew SpringAppBuilder().run(args);\n    }\n```\n\n配置文件assets/application.properties：\n```java\nserver.port=8080\nserver.env=dev\nserver.login_url=login.html\ndatabase.type=mysql\ndatabase.hostname=localhost\ndatabase.database=\ndatabase.username=\ndatabase.password=\ndatabase.hostport=3306\ndatabase.dsn=\ndatabase.params=\ndatabase.charset=utf8\ndatabase.prefix=\ndatabase.debug=true\ndatabase.deploy=0\ndatabase.rw_separate=false\ndatabase.master_num=1\ndatabase.slave_no=\ndatabase.fields_strict=true\ndatabase.resultset_type=array\ndatabase.auto_timestamp=false\ndatabase.sql_explain=false\ndatabase.show-sql=true\n```\n\n定义Controller：\n```java\npackage controller;\n\nimport org.apache.mina.http.api.HttpMethod;\nimport org.apache.velocity.VelocityContext;\n\nimport com.fenglinga.tinyspring.framework.Controller;\nimport com.fenglinga.tinyspring.framework.annotation.RequestMapping;\n\n@com.fenglinga.tinyspring.framework.annotation.Controller\npublic class HelloWordController extends Controller {\t\n\t@RequestMapping(value = \"/hello_world.html\", method = HttpMethod.GET)\n\tpublic String hello_world(VelocityContext model) throws Exception {\n\t\treturn \"hello_world.html\";\n\t}\n}\n```\n\n定义RestController：\n```java\npackage controller;\n\nimport org.apache.mina.http.api.HttpMethod;\nimport org.apache.mina.http.api.HttpRequest;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.fenglinga.tinyspring.framework.Controller;\nimport com.fenglinga.tinyspring.framework.annotation.Comment;\nimport com.fenglinga.tinyspring.framework.annotation.RequestMapping;\nimport com.fenglinga.tinyspring.framework.annotation.RestController;\n\n@RestController\npublic class HelloWordRestController extends Controller {\n\t@Comment(content=\"Hello World\")\n\t@RequestMapping(value = \"/hello_world\", method = {HttpMethod.GET, HttpMethod.POST})\n\tpublic JSONObject hello_world(\n\t\t\tHttpRequest request\n\t) throws Exception {\n\t\treturn new JSONObject();\n\t}\n}\n```\n\nWebsocket支持：\n```java\npackage endpoint;\n\nimport org.apache.mina.core.session.IoSession;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport com.fenglinga.tinyspring.framework.annotation.Component;\nimport com.fenglinga.tinyspring.framework.annotation.websocket.OnClose;\nimport com.fenglinga.tinyspring.framework.annotation.websocket.OnError;\nimport com.fenglinga.tinyspring.framework.annotation.websocket.OnMessage;\nimport com.fenglinga.tinyspring.framework.annotation.websocket.OnOpen;\nimport com.fenglinga.tinyspring.framework.annotation.websocket.ServerEndpoint;\nimport com.fenglinga.tinyspring.framework.websocket.WebSocketCodecPacket;\n\n@ServerEndpoint(value = \"/websocket\")\n@Component\npublic class WebSocketEndpoint {\n\tprivate static final Logger LOG = LoggerFactory.getLogger(WebSocketEndpoint.class);\n    \n    @OnOpen\n    public void onOpen(IoSession session) {\n        LOG.info(\"OPENED:\" + session);\n    }\n\n    @OnClose\n    public void onClose(IoSession session) {\n    \tLOG.info(\"CLOSED:\" + session);\n    }\n    \n    @OnMessage\n    public void onMessage(String message, IoSession session) {\n    \tLOG.info(\"onMessage:\" + message);\n    \tWebSocketCodecPacket result = WebSocketCodecPacket.buildPacket(\"Hello from server:\" + message);\n    \tsession.write(result);\n    }\n    \n    @OnMessage\n    public void onMessage(byte[] message, IoSession session) {\n    }\n\n    @OnError\n    public void onError(IoSession session, Throwable error) {\n        error.printStackTrace();\n    }\n}\n```\n\n数据库访问：\n```java\nDb.name(\"users\")\n\t.alias(\"u\")\n\t.join(\"tp_user_account ua\", \"u.id = ua.member_id\")\n\t.field(\"id,recommend_id,mobile\")\n\t.where(\"mobile\", \"12345678901\")\n\t.find();\n```\n\n帮助反馈\n============================\n有任何技术问题，请加QQ群：836405402\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnkligang%2Ftinyspring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnkligang%2Ftinyspring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnkligang%2Ftinyspring/lists"}