Files
redkale/course01_hello.html
Redkale 35559900e3
2017-06-03 11:26:15 +08:00

150 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Redkale(红菜苔)--基于Java 8全新的微服务开源框架 - Redkale官网</title>
<meta name="keywords" content="Redkale,redkale,java,微服务,架构"/>
<meta name="description" content="Redkale(红菜苔)是基于Java 8全新的微服务开源框架"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
</head>
<body>
<section class="page-header">
<a href="index.html" class="project-name">Redkale</a>
<h2 class="project-tagline"></h2>
<a href="redkale.html" class="btn">Redkale 入门</a>
<a href="convert.html" class="btn">Convert 组件</a>
<a href="service.html" class="btn">Service 组件</a>
<a href="source.html" class="btn">Source 组件</a>
<a href="net.html" class="btn">Net 组件</a>
<a href="watch.html" class="btn">Watch 组件</a>
<a href="plugins.html" class="btn">Redkale 插件</a>
<a href="articles.html" class="btn">技术文章</a>
</section>
<section class="main-content">
<h3>Redkale 入门教程 01 -- Hello Word</h3>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.html" target="_blank">Redkale</a> 可以说是Java界最精简的框架不到1M的jar包可以替代Tomcat、Spring/Spring Boot、Hibernate/MyBatis、JackJson/fastjson、Netty的集合四两拨千斤。低调开源一年多经过两次大的改善后终于达到让自己满意的地步。Redkale不仅仅提供简易的API还附有很多不同于传统思维的设计思路。由于时间有限一年多也没写入门教程现在开始抽点时间写一些教程希望能给想学Redkale的同学一点帮助。 废话不多说,下面进入正题。<br/>
</p>
<p>下载Redkale</p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;源码可以从 <a href="https://github.com/redkale" target="_blank" >https://github.com/redkale</a><a href="http://git.oschina.net/redkale/redkale" target="_blank" >http://git.oschina.net/redkale/redkale</a> 下载 。<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jar包可以从 <a href="http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.redkale%22%20AND%20a%3A%22redkale%22" target="_blank" >http://search.maven.org</a><a href="https://repo1.maven.org/maven2/org/redkale/redkale/" target="_blank" >https://repo1.maven.org/maven2/org/redkale/redkale/</a> 下载最新版本的包。<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当前最新版为 1.8 下载 redkale-1.8.0.tar.gz 放在本地。<br/>
</p>
<p>创建工程</p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本人使用NetBeans很多年了所以本教程以NetBeans来创建工程 使用IntelliJ IDEA 或 Eclipse的同学请自行参考。
</p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先创建一个"<b>Java应用程序</b>"项目, 注意: 不管是否Web项目都不要创建Web应用程序。
</p>
<p style="text-align: center;"><img src="images/hello_01.png" alt=""/><img src="images/hello_02.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建完空项目后,将 redkale-1.8.0.tar.gz 解压覆盖到项目的目录下。
</p>
<p style="text-align: center;"><img src="images/hello_03.png" alt=""/><img src="images/hello_04.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点击项目右键进入“属性”-> “库”中,点击 “添加JAR/文件夹”找到项目lib目录下的redkale-1.8.0.jar 并导入。
</p>
<p style="text-align: center;"><img src="images/hello_05.png" alt=""/><img src="images/hello_06.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点击“源”在下面测试包中导入项目目录下的conf目录这样方便编辑conf下的配置文件(在上面src中导入会打包进jar中)。
</p>
<p style="text-align: center;"><img src="images/hello_07.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点击“运行”,在主类中输入 "<b>org.redkale.boot.Application</b>",然后点击“确定”。
</p>
<p style="text-align: center;"><img src="images/hello_08.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编写HelloService类。
</p>
<div class="highlight"><pre><span></span><span class="kn">package</span> <span class="n">com.redkale.demo</span><span class="o">;</span>
<span class="kn">import</span> <span class="n">org.redkale.net.http.*</span><span class="o">;</span>
<span class="kn">import</span> <span class="n">org.redkale.service.Service</span><span class="o">;</span>
<span class="nd">@RestService</span><span class="o">(</span><span class="n">automapping</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">HelloService</span> <span class="kd">implements</span> <span class="n">Service</span> <span class="o">{</span>
<span class="kd">public</span> <span class="n">String</span> <span class="nf">sayHello</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="s">"Hello World"</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="n">String</span> <span class="nf">hi</span><span class="o">(</span><span class="n">String</span> <span class="n">name</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="s">"Hi, "</span> <span class="o">+</span> <span class="n">name</span> <span class="o">+</span> <span class="s">""</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此类提供两个方法say 和 hi。编写完后按"<b>F6</b>" 直接运行。
</p>
<p style="text-align: center;"><img src="images/hello_09.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在浏览器输入: http://127.0.0.1:6060/pipes/hello/say 可以看到结果:
</p>
<p style="text-align: center;"><img src="images/hello_10.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在浏览器输入: http://127.0.0.1:6060/pipes/hello/hi?name=Redkale 可以看到结果:
</p>
<p style="text-align: center;"><img src="images/hello_11.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;访问地址的端口6060和前缀pipes是通过conf/application.xml文件进行配置
</p>
<p style="text-align: center;"><img src="images/hello_12.png" alt=""/></p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至此一个简单的Hello服务就开发和调试完成了。可以看出代码简单很多不需要太多配置、maven和其他依赖包。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可能有人会疑惑: HelloServie为什么能分配到hello前缀 sayHello为什么会映射到/pipes/hello/say 请求? Redkale为了减少Annotation配置采取了一些默认值的策略 在Redkale里 一个Service视为一个模块或服务所以需要有模块(服务)名的概念,用于服务管理和鉴权,通常需要通过@RestServie.name来指定模块名没有指定则默认将Service类名的Service字样之前的字符串视为模块名如HelloService和HelloServiceImpl都会采用hello作为模块名。方法名的默认值策略也是类似将模块名字样之前的字符串作为方法名如sayHello和sayHelloMe 都会用say作为默认值。参数名如果没有指定@RestParam.name会自动采用代码的变量名。 完全标记Rest注解的HelloService源码如下
</p>
<div class="highlight"><pre><span></span><span class="kn">package</span> <span class="n">com.redkale.demo</span><span class="o">;</span>
<span class="kn">import</span> <span class="n">org.redkale.net.http.*</span><span class="o">;</span>
<span class="kn">import</span> <span class="n">org.redkale.service.Service</span><span class="o">;</span>
<span class="nd">@RestService</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"hello"</span><span class="o">)</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">HelloService</span> <span class="kd">implements</span> <span class="n">Service</span> <span class="o">{</span>
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"say"</span><span class="o">)</span>
<span class="kd">public</span> <span class="n">String</span> <span class="nf">sayHello</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="s">"Hello World"</span><span class="o">;</span>
<span class="o">}</span>
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"hi"</span><span class="o">)</span>
<span class="kd">public</span> <span class="n">String</span> <span class="nf">hi</span><span class="o">(</span><span class="nd">@RestParam</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"name"</span><span class="o">)</span> <span class="n">String</span> <span class="n">name</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="s">"Hi, "</span> <span class="o">+</span> <span class="n">name</span> <span class="o">+</span> <span class="s">""</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
<br/>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这段代码与上面那段是等价的。部署也很简单, 将项目目录中dist目录下的redkale-demo.jar复制到lib下运行bin/start.bat 即可启动HTTP服务。
</p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;转载请注明出处:<a href="https://redkale.org/course01_hello.html" target="_blank">https://redkale.org/course01_hello.html</a>
</p>
<footer class="site-footer">
<span class="site-footer-owner">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎加入Redkale QQ群: 527523235</span>
</footer>
</section>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?b4e05d7de8b5f3401dd93e3c6b35ffa5";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>