Spring Boot和Angular 2入门食谱

我主要是一名服务开发人员,必须不时创建一些可传递的UI。 我精通基于AngularJS1的基本UI,并且可以使用之前概述的方法来完成工作。 遗憾的是,随着Angular 2的出现,我不得不将以前的方法抛诸脑后,而现在使用Spring Boot / Angular 2的方法也能很好地工作。

该方法本质上适用于以下事实: Spring Boot Web应用程序在非常特定的位置中查找静态内容–从项目根目录开始的src / main / resources / static文件夹,因此如果我可以将最终的js内容放入该文件夹,那我很黄金。

因此,让我们跳进去。

先决条件

首先有一个先决条件– 出色的angular-cli工具 ,这对像我这样不懂UI的开发人员来说是一种幸运。

第二个可选但有用的前提条件是此处介绍的Spring-Boot CLI工具

生成SPA项目

给定这两个工具,首先通过从http://start.spring.io开始或使用以下CLI命令创建一个Spring Boot Web项目:

spring init --dependencies=web spring-boot-angular2-static-sample

此时,应该已经在spring-boot-angular2-static-sample文件夹中生成了一个启动程序项目。 从该文件夹使用angular-cli生成一个Angular 2项目。

ng init

更改angular-cli构建工件的位置,编辑angular-cli.json并进行如下修改:

angularjs-cli

现在构建静态内容:

ng build

这应该将静态内容获取到src / main / resources / static文件夹中。 并启动Spring-Boot应用程序:

mvn spring-boot:run

并且基于AngularJS2的UI应该呈现清晰!

angularjs2-ui

实时重载

使用Angular-cli的优势之一是它附带的出色的工具链–其中之一就是能够进行更改并将其反映在UI上。 此功能在此处记录的方法中丢失了,其中UI可能主要由Spring-Boot项目上托管的服务驱动。 但是,要恢复AngularJS2开发上的实时重新加载功能很困难。

首先代理后端,创建一个proxy.conf.json文件,其条目如下所示:

{"/api": {"target": "http://localhost:8080","secure": false}
}

并使用以下命令启动Angular-cli服务器:

ng serve --proxy-config proxy.conf.json

并使用以下命令独立启动服务器部分:

mvn spring-boot:run

就是这样,现在可以独立于服务器端API进行UI开发了! 要获得更大的成功,只需使用Spring Boot附带的出色devtools即可在服务器端获得实时重载(更多重启)功能。

结论

这是我可能要创建的任何基本UI的配方,这种方法对于大型项目可能不是理想的选择,但对于小型内部项目则应该是完美的选择。 我在这里的github仓库中有一个示例启动器,其中带有一个后端调用。

翻译自: https://www.javacodegeeks.com/2016/11/recipe-getting-started-spring-boot-angular-2.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Robbers' watch CodeForces - 685A (暴力)

大意: 一天n小时, m分钟, 表以7进制显示, 求表显示数字不同的方案数 注意到小时和分钟部分总长不超过7, 可以直接暴力枚举. 关键要特判0, 0的位数要当做1来处理 #include <iostream> #include <algorithm> #include <cstdio> #include <math.h> #inclu…

什么是javax.ws.rs.core.context? [第5部分]

如何使用Context批注 在什么是javax.ws.rs.core.context的第4部分中&#xff1f; 您学习了如何使用Context批注将HttpServletResponse和HttpServletRequest类注入资源方法。 在本文中&#xff0c;您将学习如何使用其余两个仅在servlet容器中可用的类&#xff0c;它们是&#x…

Linux字符界面和图形界面

Ubuntu图形界面和字符界面的切换 Ubuntu和其他的Linux系统一样&#xff0c;有图形界面和字符界面&#xff0c;同时能够设置默认的启动界面。 linux的显示界面分为命令行的字符界面和图形界面&#xff0c;我们可以设置linux的默认启动的显示界面。然后也可以手动的来回的切换。 …

matlab conv2

conv2函数----------------------------------------1、用法 1. Cconv2(A,B,shape); %卷积滤波 A:输入图像&#xff0c;B:卷积核 假设输入图像A大小为ma x na&#xff0c;卷积核B大小为mb x nb&#xff0c;则 当shapefull时&#xff0c;返回全部二维卷积结…

面试趣味题

题目&#xff1a;一元钱可以买到一瓶水,两个空瓶子可以换一瓶水,小明有20元钱,问最多可以喝多少瓶水? 在面试的时候做了一个这种逻辑题。当时只是要求写出最后的结果。没有要求用代码来实现。我下面准备先分析一下&#xff0c;然后再转换成代码去实现。 根据这个示意图可以简单…

mongodb 持久性_多语言持久性:带有MongoDB和Derby的EclipseLink

mongodb 持久性从现在开始&#xff0c;多语种持久性一直是新闻。 从2011年底开始&#xff0c;在著名的Fowler职位的激励下&#xff0c;我看到了更多更好的主意。 最新的一个是公司内部的学生项目&#xff0c;我们在其中使用Scala作为后端数据&#xff0c;将数据持久存储到Mongo…

linux 动态库文件stripped属性理解

在centos 6.2下用file命令查看文件信息的时候&#xff0c;显示如下&#xff1a; libcom_err.so.2: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped libcrypto.so.10: ELF 64-bit LSB shared object, x86-64, version 1 (SYS…

matlab gradient

gradient函数 >> x[6,9,3,4,0;5,4,1,2,5;6,7,7,8,0;7,8,9,10,0]x 6 9 3 4 0 5 4 1 2 5 6 7 7 8 0 7 8 9 10 0 >> [Fx,Fy]gradient(x) Fx 3.0000 -1.5000 -2.5000 -1.5000…

第六章 传输层

思维导图&#xff1a; 一、 概述 与数据链路层关系 提供可靠的、高效的、性价比高的数据传输输出实体 传输层利用网络层的服务&#xff0c;为它的上层应用层提供服务 网络层与传输层不同点&#xff1a; 网络层运行在由承运商操作的路由器上&#xff0c;因此用户无法真正控制到网…

Kanvas:从您的ANTLR语法生成一个简单的IDE

什么是编辑器&#xff1f; 对我来说&#xff0c;编辑器是我工作中使用的主要工具。 作为语言工程师&#xff0c;我创建新的语言&#xff0c;使用现有的语言&#xff0c;并且需要其他工具来使用它们。 我希望能够在一个定制的IDE中将所有这些黑客一起入侵&#xff0c;我可以为我…

函数名/函数地址/函数指针

转自&#xff1a;http://hi.baidu.com/%C6%BF%D6%D0%B5%C4%C5%AE%CE%D7/blog/item/387db9ddaa54d0a9cd1166fa.html 函数指针&#xff1a;1。指针变量 2。指针变量指向函数 这正如用指针变量可指向整型变量、字符型、数组一样。 在编译时&#xff0c;每一个函数都有一个入口地址…

matlab imaqhwinfo

使用imaqhwinfo函数&#xff0c;来获取电脑上安装的摄像头的名称&#xff0c;比如winvideo&#xff0c;之后可以利用imaqhwinfo(winvideo)来进一步获取设备ID等边信息&#xff0c;这在之后的视频流获取中会用到。获取设备ID之后&#xff08;比如ID为1&#xff09;&#xff0c;可…

第二次作业--熟悉使用工具

GIT地址 https://github.com/ForeveruxGIT用户名 Foreverux学号后五位 62117博客地址 https://www.cnblogs.com/JQloveJX/ 作业链接 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2793声明&#xff1a;部分内容摘自ChildishChange Part 0. 背景 阿…

什么是javax.ws.rs.core.context? [ 第2部分 ]

如何使用Context批注 在什么是javax.ws.rs.core.context&#xff1f; 您学习了如何使用Context批注从HttpHeaders类的注入实例中检索HTTP标头信息&#xff0c;以及如何从UriInfo实例中检索URI信息&#xff0c;例如URI参数和变量。 在本文中&#xff0c;您将学习如何将Context批…

【题解】Luogu P2347 砝码称重

正经DP题解 一道非常好的背包练手题&#xff08; sto&#xff08;注&#xff1a;原思路来源 SLYZ_0120 的题解&#xff09;orz 开始这道题 1.输入六个数&#xff0c;存进数组中 2.初始化 f 数组为0。 f [ i ] 表示重量为 i 的情况是否出现过&#xff08;下面代码使用的是 int 数…

matlab 获取视频图像的信息

获取视频图像的信息可以通过get函数来获取&#xff0c;如get(vid)或者get(getselectedsource(vid))。使用set函数可以设置摄像头获取的图像的一些属性值&#xff0c;也可以直接使用结构数组的“点”来赋值&#xff0c;比如&#xff0c;要持续通过摄像头获取图像&#xff0c;则可…

tomcat使用ssl_使用SSL和Spring Security保护Tomcat应用程序的安全

tomcat使用ssl如果您看过我的上一个博客&#xff0c;您会知道我列出了Spring Security可以做的十件事 。 但是&#xff0c;在开始认真使用Spring Security之前&#xff0c;您真正要做的第一件事就是确保您的Web应用使用正确的传输协议&#xff0c;在这种情况下为HTTPS –毕竟&a…

matlab delete、clf、cla、close、closereq删除对象

matlab中删除对象 删除对象 &#xff08;1&#xff09;delete&#xff1a;删除文件或对象图形 删除文件对象h的格式为&#xff1a;delete(filename)或delete filename 删除图形对象h的格式为&#xff1a;delete(h); 若要无条件删除所有的图形对象&#xff0c;则&#xff1a;set…

Linux系统调用过程分析

参考&#xff1a; 《Linux内核设计与实现》 0 摘要 linux的系统调用过程&#xff1a; 层次如下&#xff1a; 用户程序------>C库&#xff08;即API&#xff09;&#xff1a;INT 0x80 ----->system_call------->系统调用服务例程-------->内核程序 先说明一下&#…

Spring Boot和应用程序上下文层次结构

Spring Boot支持一种指定Spring应用程序上下文层次结构的简单方法。 这篇文章只是演示了此功能&#xff0c;我尚未在我从事的项目中很好地使用它。 Spring Cloud使用此功能来创建引导上下文 &#xff0c;在该上下文中&#xff0c;如果需要&#xff0c;可以从外部配置服务器加载…