开发 -> 测试 -> 部署,这是软件开发一般的简化流程,作为开发者我们总是希望能专注于开发,但往往会被一些开发之外的问题所折磨,比如繁多的spring依赖和不同的环境配置。带着这个问题,本文介绍运用springboot和docker开发和构建一个rest风格的web应用。
对于我们的web应用来说,springboot相当于把web服务器嵌入发布包内,以少量的配置大大方便了程序的开发和发布。我们可以专注于项目本身,创建独立的Java应用,通过java -jar启动。
添加Spring Boot相关POM配置
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.2.5.RELEASE</version> </dependency> </dependencies>
我们只需要将spring-boot-starter-web的依赖加入到pom文件即可,它提供了对web的支持。当然也有很多推荐让其作为parent加载,但这样会引入很多不必要的jar包。
Controller
@EnableAutoConfiguration @RestController @RequestMapping("/person") public class Controller { @RequestMapping("/{name}") public Properties getPersion(@PathVariable("name") String name) { Properties p = new Properties(); p.put("name", name); p.put("age", new Random().nextInt(100)); return p; } public static void main(String[] args) { SpringApplication.run(Controller.class); } }
@EnableAutoConfiguration的作用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这就减少了开发人员的工作量。比如说我们可以加入下面这段代码来制定contextpath和port。
@Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory("/admin", 8091); return factory; }
这样一个rest风格的web应用就搭建完成,可以访问http://localhost:8091/admin/person/kane查看结果。
Package
注意如果想到将应用打成一个可执行jar包的话,一定要用spring-boot-maven-plugin而不是其他的类似于maven-shade-plugin的插件。
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.2.5.RELEASE</version> <executions> <execution> <phase>package</phase> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <mainClass>test.controller.Controller</mainClass> </configuration> </plugin>
直接用java -jar <jar_name>即可启动web应用。
Docker安装和运行
把可执行的jar包放入docker容器中,我们可以忽略所要部署的环境的差异性,而不需要关心环境配置。
Docker的安装和入门教程,推荐http://www.widuu.com/chinese_docker/userguide/dockerrepos.html,这里只是介绍最简单的流程。
- 对于ubuntu,可以用以下命令安装
$ sudo apt-get install docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
$ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
- 选择一个java docker image,我使用java:7
- 假设我们的可运行jar包放在/tmp目录下,那么可以通过以下命令在docker容器中运行。
这个命令使用java:7这个镜像创建一个container,并在后台执行java -jar <jar_name>。-d表示后台运行,-v表示目录映射,可以简单理解为ln -s。
- docker container启动起来之后,可以使用sudo docker ps命令查看该进程的端口映射,比如0.0.0.0:49155->8091/tcp,它表示将docker容器8091端口映射到容器宿主的49155端口,所以我们可以通过http://<hostname>:49155/admin/person/kane访问前文中的web应用。
相关推荐
本项目以"管理系统系列--基于spring boot脚手架项目,spring data jpa+Spring Boot2+bo"为主题,旨在深入探讨如何利用Spring Boot、Spring Data JPA以及BO(Business Object)模式来构建高效、易维护的企业级管理...
比如,`spring-boot-starter-web`用于构建Web应用,`spring-boot-starter-data-jpa`用于数据库操作,`spring-boot-starter-data-rest`则用于RESTful API的快速搭建。 3. **自动配置**: 自动配置是Spring Boot的一...
avaEE开发的颠覆者 Spring Boot实战 完整版+书签+pdf+源码.rar JavaEE开发的颠覆者 Spring Boot实战 完整版+书签+pdf+源码.rar JavaEE开发的颠覆者 Spring Boot实战 完整版+书签+pdf+源码.rar 产品参数: 定价: ...
简单的休息服务这是在docker容器中部署的spring boot中运行的简单rest服务。 关于Spring Boot的很棒的事情是您不必在servlet容器中部署战争。 这个Spring启动应用程序已经嵌入了tomcat,并将您的控制器直接连接到...
- **集成开发**:Spring Boot的模块化设计使得它可以与Docker、Kubernetes等容器化工具无缝集成,方便部署和管理。 - **持续集成/持续部署(CI/CD)**:利用Jenkins、GitLab CI/CD等工具,配合Spring Boot的自动化...
sample-spring-boot-docker:示例spring boot应用程序(REST)加上docker文件
根据给定的文件标题“Spring Boot技术栈博客企业前后端2018”以及描述“Spring Boot技术栈博客企业前后端2018”,我们可以推断出这份文档主要聚焦于Spring Boot技术栈在企业级应用中的实践,尤其是前后端分离架构下...
本文将深入探讨如何使用React作为前端框架,Spring Boot作为后端微服务框架,结合MySQL数据库来实现一个完整的增删改查功能。 **React** 是Facebook开发的一个JavaScript库,用于构建用户界面,尤其适合构建单页面...
10. **云原生支持**: 讨论Spring Boot对云平台(如Docker、Kubernetes)的支持,包括容器化、服务发现、配置中心等。 11. **测试驱动开发**: 学习Spring Boot提供的测试工具,如`@SpringBootTest`、`@WebMvcTest`等...
此外,书籍还涉及了Docker容器化技术,让读者了解如何将Spring Boot应用部署到Docker容器中,实现更灵活的部署和扩展。书中还包含了API帮助文档的创建,使用Swagger来生成和展示API文档,便于开发者和使用者更好地...
《基于Spring Boot的家政服务系统设计与实现》 在当今信息化社会,家政服务行业的管理和服务模式也在逐渐向数字化转型。Spring Boot作为一款高效、轻量级的Java开发框架,已经成为构建现代化Web应用的首选工具。本...
Camel 上下文通过 Camel Spring Boot 组件在 Spring Boot 框架内初始化,它具有两个主要功能:通过 REST 向 Docker 进行代理查询,以及将 Docker 生成的事件广播到 websockets 端点,并使用用于 websockets 的异步 ...
Spring Boot和Dubbo是两个非常重要的Java开发框架,Spring Boot简化了Spring应用的初始化和配置,而Dubbo则是一个高性能、轻量级的服务治理框架。本文将深入探讨如何在Spring Boot项目中集成Dubbo,创建一个高效的...
藏经阁-Spring Boot 2.5开发实战...涵盖了Spring Boot 2.5的新特性、自动化配置原理、REST API开发、MySQL数据库开发、Redis高并发缓存、MongoDB数据库开发、消息队列、安全机制、性能监控和Docker容器等方面的知识点。
7. **Docker化部署**:Spring Boot应用通常会被打包为可执行的JAR文件,可以方便地部署到Docker容器中,实现微服务的轻量级部署。 8. **RESTful API设计**:网课系统可能会涉及前后端分离,因此API的设计尤为重要。...
《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...
- Spring Boot中的`@RestController`注解用于创建REST控制器,`@RequestMapping`定义请求路径,`@GetMapping`、`@PostMapping`等处理对应HTTP方法。 5. **Thymeleaf模板引擎** - Thymeleaf是Spring Boot推荐的...
销售订单系统2.0 Sales Order System 2.0是... Evolution展示是一种更现代的Web应用程序开发方法,它使用非常现代的(在2020年)尖端技术(Java 8,Spring Boot,React,Docker)完全包含微服务架构。 分拆此外,类
这是一个基于Spring Boot后端框架和Vue前端框架构建的博客系统源码项目,名为"NBlog"。这个项目展示了如何实现前后端分离的开发模式,以提高开发效率和代码维护性。让我们详细探讨一下其中涉及的关键技术和知识点。 ...
### Spring Boot概述与核心知识点详解 #### 一、Spring Boot简介 Spring Boot 是由 Pivotal 团队提供的一款开源框架,旨在简化基于 Spring 的应用开发流程。它通过内置默认配置来减少开发者需要手动配置的工作量,...