`
qindongliang1922
  • 浏览: 2146986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116317
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124587
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58449
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70347
社区版块
存档分类
最新评论

Spring Boot开发之弄月吟风 (三)

阅读更多

今天来看下,如何在Spring Boot中使用热加载和集成Velocity,废话不多说,直接看下面的maven的pom依赖:


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd
http://www.w3.org/2001/XMLSchema-instance " >
    <modelVersion>4.0.0</modelVersion>
    <groupId>serachrate</groupId>
    <artifactId>serachrate</artifactId>
    <version>1.0-SNAPSHOT</version>


    <!--父依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.2.RELEASE</version>
    </parent>


    <!--指定编码-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <!--
                比较常用的打包命令
                mvn clean package spring-boot:repackage
                只有使用下面的maven命令在cmd窗口启动,
                热加载才能生效,如果直接Run运行的Application是
                不支持热加载的
                mvn clean spring-boot:run
                -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.2.2.RELEASE</version>
                <dependencies>
                    <!--引入springloaded来实现动态加载-->
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>springloaded</artifactId>
                        <version>1.2.0.RELEASE</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <classifier>exec</classifier>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <!--  <mainClass>com.dhgate.rate.ApplicationSearch</mainClass> -->
                    <!--指定监听的端口号-->
                    <jvmArguments>
                        -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777
                    </jvmArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>


    <dependencies>
        <!--web容器支持-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--本例中散仙排除了tomcat,而使用jetty作为容器-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>

        </dependency>


        <!-- 安全验证
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
       -->
        <!--Velocity引擎的支持,如果你需要其他的模板引擎,则-->
        <!--可以直接引入其他的即可-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-velocity</artifactId>
        </dependency>

        <!--性能指标和监测-->
        <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-actuator</artifactId>-->
        <!--</dependency>-->
        <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-remote-shell</artifactId>-->
        <!--</dependency>-->
        <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-security</artifactId>-->
        <!--</dependency>-->


        <!--Guava包的依赖支持-->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>16.0.1</version>
        </dependency>

        <!--Gson支持-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3.1</version>
        </dependency>

        <!--Jsoup支持-->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.1</version>
        </dependency>
        <!--solrj的依赖包 -->
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>4.3.1</version>
        </dependency>

    </dependencies>


</project>




上面已经引入了Spring Loaded框架以及Velocity模板引擎,所以项目就会支持这两种技术,需要注意的是在pom里面关于Sprig Loaded的配置,否则将不会生效,另外建议把IDEA的自动编译保存功能打开,这样一来,Velocity的模板也会自动刷新。

在Spring Boot中不管集成任何东西,都是这么简单的事情,只需稍微变更pom依赖,即可完成,非常便利。


关于Velocity的标签的使用,散仙抽空会在补充一下用法,整体感觉,比Struts和el表达式标签或者jsp里面的标签,简单得多,而且支持宏定义,用起来非常给力。

在Spring Boot中,我们只需要在resource文件夹下,新建一个tmplates的文件夹来存放vm模板即可,然后我们就可以在后台的控制器里面,控制返回到那个vm了,而且数据也是从后台传过来的。

一个简单的例子:

    @RequestMapping("/hello")
    public String hello(Map<String, Object> model){
        List<String> l= Lists.newArrayList();
        l.add("哈喽,hadoop");
        l.add("哈喽,hbase");
        l.add("哈喽,hive");
        l.add("哈喽,pig");
        l.add("哈喽,zookeeper");
        l.add("哈喽,三劫散仙");
        //将数据存放map里面,可以直接在velocity页面,使用key访问
        model.put("data",l);

        return "hello";
    }



模板部分:




velocity代码:



#foreach($s in $data)

    <h1 style="color: crimson">访问数据:$s</h1>

#end


结果如下:




关于动态加载和编译的部分,大家可以自行在自己的环境中测试。

关于spring boot打包和maven启动的两个命令如下:


             //打包编译该spring boot项目
                mvn clean package spring-boot:repackage
             //以maven方式启动该项目,spring loaded必须使用此启动方法,才能生效
                mvn clean spring-boot:run



欢迎大家扫码关注微信公众号:我是攻城师,我们一起学习,进步和交流!(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!











  • 大小: 14.3 KB
  • 大小: 64 KB
2
0
分享到:
评论
2 楼 junworld 2016-09-30  
我的为什么没有成功,没有去解析velocity页面,而是直接在页面显示hello
1 楼 lvan_dan 2016-02-23  
写的很不错的,咋没有下文了?直到(三),没有其他的了?

相关推荐

    吟风一键生成还原短网址V1.0免费绿色版

    吟风一键生成还原短网址是一款功能强大的吟风网址生成工具。经过处理过后的网址更加的短小精悍,让用户一眼即可记住,吟风一键生成还原短网址。有需要的用户欢迎来脚本之家下载。 吟风一键生成还原短网址功能:  ...

    用友NC报表全套开发教程

    用友 NC报表全套开发,里面有相信的介绍

    Couplets:基于深度学习(attention机制)的对对联系统

    对联 基于中的变压器实现自动对对联。贯通的放置有:更改了DecoderLayer中第二层注意的查询...柳岸抚琴,弄曲似弄月吟风 只有刚强的人,才有神圣的意志,凡是战斗的人,才能取得胜利 - 若无敬畏之事,业无天地之精神,

    用友Nc开发的基础入门

    该文档详细介绍了用友NC开发的入门基础知识,适合新手做参考练习

    Qt与OpenGL实现的立体俄罗斯方块游戏

    采用Qt加OpenGL实现的立体俄罗斯方块游戏,可以运行,想玩的可以挑战下,很难玩

    Linux下Eclipse调试C语言简介及环境配置

    这是关于Elclipse开发C语言的简单过程介绍

    Rad Studio Xe4破解及常用控件全套之三,已亲测

    之前在用delphi xe2 结果直到某一天,重做系统后,发现xe2各种纠结,费时3天,完成delphi Xe4开发环境的安装, 所有控件均亲自安装和测试正常,现分享给大家,希望能帮上大家,免去寻找资源和安装测式。 注:本人...

    用友NC客开人员培训专用教程最全教程

    本教程是用友NC二次开发的最全的教程包括UAP全部流程适合中高级人员学习使用

    mcDBRadio明晨豆瓣电台3.1桌面客户端软件

    mcDBRadio明晨豆瓣电台3.1桌面客户端软件 软件名称:DBRadio 明晨豆瓣电台桌面版客户端 软件版本:3.1 ...软件编写:楚吟风@明晨网络 官方地址:http://www.mingchennet.com/product/doubanradio.html

    WTL开发者指南+深入剖析WTL

    里面包含两份关于WTL的文档,WTL开发者指南以及深入剖析WTL,有开发桌面应用需要的朋友拿去吧~里面包含两份关于WTL的文档,WTL开发者指南以及深入剖析WTL,有开发桌面应用需要的朋友拿去吧~

    Rad Studio Xe4破解及常用控件全套之六,已亲测

    之前在用delphi xe2 结果直到某一天,重做系统后,发现xe2各种纠结,费时3天,完成delphi Xe4开发环境的安装, 所有控件均亲自安装和测试正常,现分享给大家,希望能帮上大家,免去寻找资源和安装测式。 注:本人...

    Rad Studio Xe4破解及常用控件全套之一,已亲测

    之前在用delphi xe2 结果直到某一天,重做系统后,发现xe2各种纠结,费时3天,完成delphi Xe4开发环境的安装, 所有控件均亲自安装和测试正常,现分享给大家,希望能帮上大家,免去寻找资源和安装测式。 注:本人...

    Rad Studio Xe4破解及常用控件全套之七,已亲测

    之前在用delphi xe2 结果直到某一天,重做系统后,发现xe2各种纠结,费时3天,完成delphi Xe4开发环境的安装, 所有控件均亲自安装和测试正常,现分享给大家,希望能帮上大家,免去寻找资源和安装测式。 注:本人...

    Rad Studio Xe4破解及常用控件全套之四,已亲测

    之前在用delphi xe2 结果直到某一天,重做系统后,发现xe2各种纠结,费时3天,完成delphi Xe4开发环境的安装, 所有控件均亲自安装和测试正常,现分享给大家,希望能帮上大家,免去寻找资源和安装测式。 注:本人...

    Rad Studio Xe4破解及常用控件全套之五,已亲测

    之前在用delphi xe2 结果直到某一天,重做系统后,发现xe2各种纠结,费时3天,完成delphi Xe4开发环境的安装, 所有控件均亲自安装和测试正常,现分享给大家,希望能帮上大家,免去寻找资源和安装测式。 注:本人...

    Rad Studio Xe4破解及常用控件全套之二,已亲测

    之前在用delphi xe2 结果直到某一天,重做系统后,发现xe2各种纠结,费时3天,完成delphi Xe4开发环境的安装, 所有控件均亲自安装和测试正常,现分享给大家,希望能帮上大家,免去寻找资源和安装测式。 注:本人...

    字符串距离

    开发计算两个字符串间的编辑距离,LCS距离和N-gram距离的函数。 (1)编辑距离 字符串a和b的编辑距离ED(i,j)表示把字符串a转换成b所需要的最少操作次数,这些操作可以是:插入一个字符,删除一个字符,替换一个字符...

    DevExpressVCL_16.2.5cn.part2.rar

    我正式开发环境用的插件DevExpressVCL_16.2.5cn,可以支持DELPHI XE10.2.3,支持64位。一键安装。 由于上传文件有大小限制,所以拆成两个RAR了,记得下载第一个part1哦。

    DevExpressVCL_16.2.5cn

    我正式开发环境用的插件DevExpressVCL_16.2.5cn,可以支持DELPHI XE10.2.3,支持64位。一键安装。 由于上传文件有大小限制,所以拆成两个RAR了,记得下载第二个part2哦。

    BTN7971单路电机驱动.PcbDoc

    这是智能车的电机驱动模块,使用半桥MOS驱动芯片BTN7971,可以驱动一路电机,通过2路PWM控制,7.2V供电,使用74HC244隔离芯片,5V供电,驱动能力强,理论最大驱动电流30A

Global site tag (gtag.js) - Google Analytics