zoukankan      html  css  js  c++  java
  • 利用 Solon-web 框架写一个 Hello World

    Solon 项目的开源地址:

    https://gitee.com/noear/solon

    最近看了不少别人写的各种框架的 Hello world 示例,有些看起来,真的很复杂。

    今天,我们用号称简单到不能再简单的 Solon 框架也写一个 Hello world(确实是0配置,除了meven)

    一、写代码

    1. 用 IntelliJ IDEA 新建一个 Meven 空项目 helloworld

    2. 在 pom.xml 文件里添加框架依赖

    <dependencies>
        <dependency>
            <groupId>org.noear</groupId>
            <artifactId>solon-web</artifactId>
            <version>1.0.9</version>
            <type>pom</type>
        </dependency>
    </dependencies>
    

    3. 添加应用启动入口 /src/main/java/helloworld/App.java

    package helloworld;
    
    import org.noear.solon.XApp;
    
    public class App {
        public static void main(String[] args) {
            XApp.start(App.class, args);
        }
    }
    

    4. 添加控制器 /src/main/java/helloworld/controller/HelloController.java

    package helloworld.controller;
    
    import org.noear.solon.annotation.XController;
    import org.noear.solon.annotation.XMapping;
    import org.noear.solon.core.ModelAndView;
    
    import java.util.HashMap;
    import java.util.Map;
    
    @XController
    public class HelloController {
        /**
         * 这是直接返回值
         * */
        @XMapping("/")
        public String hello() {
            return "Hello world!";
        }
    
        /**
         * 这是返回个对象(以json形式)
         * */
        @XMapping("/json")
        public Map hello_json() {
            Map<String,Object> map = new HashMap<>(); //实体也ok
            map.put("message", "Hello world!");
    
            return map;
        }
    
        /**
         * 这是用 FreeMarker 进行渲染(你想用别的引擎?可以随便换,比如:Enjoy)
         * */
        @XMapping("/ftl")
        public ModelAndView hello_ftl() {
            ModelAndView mv = new ModelAndView("hello.ftl");
            mv.put("message", "Hello world!");
    
            return mv;
        }
    }
    
    

    5.再添加个模板文件 /src/main/resources/WEB-INF/view/hello.ftl

    <html>
        <body>
        ${message!}
        </body>
    </html>
    

    6. 运行 App.main()

    对着 App.java 文件,右键,选择:Run 'App.main()'

    7. 用浏览器打开:http://localhost:8080/

    8. 再用wrk测试一下qps

    测试代码:wrk -t10 -c200 -d30s --latency "http://127.0.0.1:8080/" ;大概有 4.5万的qps,不错的

    听说切换到嵌入式 jetty 有 6.5万左右;切换到嵌入式 undertow 有 8万左右。

    solon-mvc 默认配的是 jlhttp,不过它小巧,只有0.1m

    到此,写代码的事儿。搞定了!

    二、发布服务包

    1. 再修改下pom.xml文件,添加打包配置

    <dependencies>
        <dependency>
            <groupId>org.noear</groupId>
            <artifactId>solon-web</artifactId>
            <version>1.0.9</version>
            <type>pom</type>
        </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>
    

    2. 使用meven打包命令,打包成:helloworld.jar

    OK,传说中的一个微形小服务出来了。

    3. 用命令运行 java -jar helloworld.jar (不用容器,不用容器,不用容器......)

    再用浏览器打开:http://localhost:8080/

    三、DEMO源码

    源码:demo02.solon_helloworld

  • 相关阅读:
    精选30道Java笔试题解答
    ASM
    Java Decompiler Plugin For Eclipse IDE
    AMQ5540, AMQ5541 and AMQ5542, application did not supply a user ID and password, 2035 MQRC_NOT_AUTHORIZED
    Shell脚本中的export
    Linux set unset命令
    shell中${}的妙用
    ubuntu alsa2
    ubuntu alsa
    计算机启动boot
  • 原文地址:https://www.cnblogs.com/noear/p/13451999.html
Copyright © 2011-2022 走看看