SpringBoot与Angular2的集成示例

背景

以springboot为tomcat启动的框架,以angular2为前端页面的框架,最后需要将angular2的代码运行在springboot内置tomcat中。

项目结构

src/main/
--------angular
--------java
--------resources
pom.xml

angular目录是用的angular cli创建的新项目,java中是springboot的启动代码,resources目录下只有application.yml配置文件

集成思路

由于springboot的工程中要加入静态html文件等需要放在resources下面的static目录下,然后直接通过localhost:8080/index.html即可访问static目录下的index.html文件。所以我们需要将angular的编译代码放在该static目录中。

于是,集成的步骤:

  1. 编译angular的项目,使用npm run release命令即可,编译后的代码在angular/dist目录中
  2. 复制angular/dist目录中的所有文件到resources/dist目录下(是springboot编译后的jar包目录),或者将angular/dist目录作为resource资源

我们可以通过maven的一些插件来完成,这里将用到exec-maven-plugin插件(用于执行命令)。

pom.xml中的build

在项目的pom.xml文件中,我们需要添加build配置:

  1. 将/src/main/angular/dist目录作为resource目录
  2. build的时候执行npm run release命令
 <build>
  <resources>
   <resource>
    <directory>src/main/resources</directory>
   </resource>
   <resource>
    <directory>${project.basedir}/src/main/angular/dist</directory>
    <targetPath>static</targetPath>
   </resource>
  </resources>
  <plugins>
   <!-- Plugin to execute command "npm install" and "npm run build" inside /angular directory -->
   <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <executions>
     <execution>
      <phase>generate-sources</phase>
      <goals>
       <goal>exec</goal>
      </goals>
     </execution>
    </executions>
    <configuration>
     <executable>npm</executable>
     <workingDirectory>src/main/angular</workingDirectory>
     <arguments>
      <argument>run</argument>
      <argument>release</argument>
     </arguments>
    </configuration>
   </plugin>
  </plugins>
 </build>

然后执行mvn clean package后,在target/classes目录下的就会看到static目录以及angular/dist目录中的所有文件。最终生成的jar包中也会包含这些内容。

本地启动项目测试

如果继续使用sptringboot的启动方式Application.main函数运行,由于resources中并没有angular/dist的代码,则不会正确看到页面。解决办法就是使用另一个maven插件:spring-boot-maven-plugin,专门用于springboot的maven命令。

在pom.xml中的build>plugins中加入以下代码即可:

   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.5.9.RELEASE</version>
    <executions>
     <execution>
      <goals>
       <goal>repackage</goal>
      </goals>
     </execution>
    </executions>
   </plugin>

然后执行maven的run命令: mvn clean spring-boot:run即可启动该项目,并且会加载angular的编译文件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Angular+Bootstrap+Spring Boot实现分页功能实例代码
  • Spring Boot+AngularJS+BootStrap实现进度条示例代码
  • 玩转spring boot 结合AngularJs和JDBC(4)
  • 玩转spring boot 结合jQuery和AngularJs(3)
(0)

相关推荐

  • 玩转spring boot 结合AngularJs和JDBC(4)

    参考官方例子:http://spring.io/guides/gs/relational-data-access/  一.项目准备 在建立mysql数据库后新建表"t_order" SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `t_order` -- ---------------------------- DROP TABLE IF EXISTS `t_order`;

  • Spring Boot+AngularJS+BootStrap实现进度条示例代码

    Spring Boot+AngularJS+BootStrap实现进度条 原理 进度条的原理是在上传文件的时候,当程序运行到某一个部分,往Session中设置一个1到100的值.然后前台再每隔很小的一段时间去请求这个值. 在AngularJS中,$http对象有3种状态,分别是success,progress,error,其中progress方法就会在success方法调用之前(也就是上传完成之前),不断地调用.而我们要做的就是在progress中在添加一个请求,去后台拿我们设置在session

  • 玩转spring boot 结合jQuery和AngularJs(3)

    在上篇的基础上 准备工作: 修改pom.xml <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&

  • Angular+Bootstrap+Spring Boot实现分页功能实例代码

    需要用到的js angular.js(用angular.min.js会导致分页控件不显示) ui-bootstrap-tpls.min.js angular-animate.js 需要用到的css bootstrap.min.css 由于本项目使用了路由,所以讲js以及css文件的应用都放在一个主html,请同学们在html页面中添加以上文件 在开始之前,我先简单介绍下分页的原理. 分页的实质其实就是一条sql语句, 比如查找第二页,即第16到第30条数据 在MySQL中是select * fr

  • SpringBoot与Angular2的集成示例

    背景 以springboot为tomcat启动的框架,以angular2为前端页面的框架,最后需要将angular2的代码运行在springboot内置tomcat中. 项目结构 src/main/ --------angular --------java --------resources pom.xml angular目录是用的angular cli创建的新项目,java中是springboot的启动代码,resources目录下只有application.yml配置文件 集成思路 由于sp

  • java集成开发SpringBoot生成接口文档示例实现

    目录 为什么要用Swagger ? Swagger集成 第一步: 引入依赖包 第二步:修改配置文件 第三步,配置API接口 Unable to infer base url For input string: "" Swagger美化 第一步: 引入依赖包 第二步:启用knife4j增强 Swagger参数分组 分组使用说明 1.在bean对象的属性里配置如下注释 2.在接口参数的时候加入组规则校验 小结 大家好,我是飘渺. SpringBoot老鸟系列的文章已经写了两篇,每篇的阅读反

  • springboot整合mongodb changestream的示例代码

    目录 前言 ChangeStream介绍 环境准备 Java客户端操作changestream 1.引入maven依赖 2.测试类核心代码 下面来看看具体的整合步骤 1.引入核心依赖 2.核心配置文件 3.编写实体类,映射comment集合中的字段 4.编写一个服务类 5.编写一个接口 6.接下来,只需要依次添加下面3个配置类即可 典型应用场景 数据迁移 应用监控 对接大数据应用 前言 changestream是monggodb的3.6版本之后出现的一种基于collection(数据库集合)的变

  • SpringBoot超详细讲解集成Flink的部署与打包方法

    目录 一.SpringBoot集成Flink 二.FlinkTask写法调整 三.打包插件 四.Flink的上传与运行 总结 一.SpringBoot集成Flink 其实没什么特别的,就把Flink依赖的包在pom引入就行了.只是FlinkTask的写法要小调整下,把相关依赖交给spring管理就行. 然后如果放弃Flink的Dashboard端监控task执行相关信息,那也可以在SpringBoot的启动类里调用就行,但是可能出现task的相关对象没有注入,这种都是小问题(实际就是spring

  • springboot 1.5.2 集成kafka的简单例子

    本文介绍了springboot 1.5.2 集成kafka的简单例子 ,分享给大家,具体如下: 随着spring boot 1.5版本的发布,在spring项目中与kafka集成更为简便. 添加依赖 compile("org.springframework.kafka:spring-kafka:1.1.2.RELEASE") 添加application.properties #kafka # 指定kafka 代理地址,可以多个 spring.kafka.bootstrap-server

  • springboot前后台数据交互的示例代码

    本文介绍了springboot前后台数据交互的示例代码,分享给大家,具体如下: 1.在路径中传递数据,比如对某个数据的id:123 前台发送:格式大致如下 在路径中传数据 后台接收: 后台接收数据 后台接收结果 2.查询字符串传递数据前台发送:   前台使用Querystring发送数据 后台接收: 这里@RequestParm可以不写,在后台找不到前台对应的字段时,输出null,在@RequestParam中指定的话输出指定的值(前台没给出字段时): 后台接收queryString方式传递的数

  • SpringBoot 微信退款功能的示例代码

    一:微信支付证书配置 二:证书读取以及读取后的使用 package com.zhx.guides.assistant.config.wechatpay; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.H

  • SpringBoot基础教程之集成邮件服务

    一.前言 Spring Email 抽象的核心是 MailSender 接口,MailSender 的实现能够把 Email 发送给邮件服务器,由邮件服务器实现邮件发送的功能. Spring 自带了一个 MailSender 的实现 JavaMailSenderImpl,它会使用 JavaMail API 来发送 Email.Spring 或 SpringBoot 应用在发送 Email 之前,我们必须要 JavaMailSenderImpl 装配为 Spring应用上下文的一个 bean. 二

  • SpringBoot中实现数据字典的示例代码

    我们在日常的项目开发中,对于数据字典肯定不模糊,它帮助了我们更加方便快捷地进行开发,下面一起来看看在 SpringBoot 中如何实现数据字典功能的 一.简介 1.定义 数据字典是指对数据的数据项.数据结构.数据流.数据存储.处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目.简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合. 数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数

  • Nginx+SpringBoot实现负载均衡的示例

    负载均衡介绍 在介绍Nginx的负载均衡实现之前,先简单的说下负载均衡的分类,主要分为硬件负载均衡和软件负载均衡,硬件负载均衡是使用专门的软件和硬件相结合的设备,设备商会提供完整成熟的解决方案,比如F5,在数据的稳定性以及安全性来说非常可靠,但是相比软件而言造价会更加昂贵:软件的负载均衡以Nginx这类软件为主,实现的一种消息队列分发机制. 简单来说所谓的负载均衡就是把很多请求进行分流,将他们分配到不同的服务器去处理.比如我有3个服务器,分别为A.B.C,然后使用Nginx进行负载均衡,使用轮询

随机推荐