Solon 项目的开源地址:
最近看了不少别人写的各种框架的
Hello world
示例,有些看起来,真的很复杂。今天,我们用号称简单到不能再简单的
Solon
框架也写一个Hello world
(确实是0配置,除了meven)
helloworld
pom.xml
文件里添加框架依赖<dependencies>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-web</artifactId>
<version>1.5.16</version>
</dependency>
</dependencies>
/src/main/java/helloworld/App.java
package helloworld;
import org.noear.solon.Solon;
public class App {
public static void main(String[] args) {
Solon.start(App.class, args);
}
}
/src/main/java/helloworld/controller/HelloController.java
package helloworld.controller;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import org.noear.solon.core.ModelAndView;
import java.util.HashMap;
import java.util.Map;
@Controller
public class HelloController {
/**
* 这是直接返回值
* */
@Mapping("/")
public String hello() {
return "Hello world!";
}
/**
* 这是返回个对象(以json形式)
* */
@Mapping("/json")
public Map hello_json() {
Map<String,Object> map = new HashMap<>(); //实体也ok
map.put("message", "Hello world!");
return map;
}
/**
* 这是用 FreeMarker 进行渲染(你想用别的引擎?可以随便换,比如:Enjoy)
* */
@Mapping("/ftl")
public ModelAndView hello_ftl() {
ModelAndView mv = new ModelAndView("hello.ftl");
mv.put("message", "Hello world!");
return mv;
}
}
/src/main/resources/WEB-INF/view/hello.ftl
<html>
<body>
${message!}
</body>
</html>
App.main()
对着 App.java 文件,右键,选择:Run 'App.main()'
http://localhost:8080/
测试代码:wrk -t10 -c200 -d30s --latency "http://127.0.0.1:8080/"
;大概有 4.5万的qps,不错的
听说切换到嵌入式 jetty
有 8万左右;切换到嵌入式 undertow
有 10万左右。
solon-mvc
默认配的是 jlhttp,不过它小巧,只有0.1m
到此,写代码的事儿。搞定了!
<dependencies>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-web</artifactId>
<version>1.5.16</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<finalName>${project.artifactId}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>helloworld.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
helloworld.jar
OK,传说中的一个微形小服务出来了。
java -jar helloworld.jar
(不用容器,不用容器,不用容器…)再用浏览器打开:http://localhost:8080/