Spring Boot学习笔记(一)——项目构建-使用-部署

使用jekins自动构建部署 Spring Boot 项目 小编精心为大家准备了一手资料以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术【附】架构书籍BAT面试的20道高频数据库问题解析Java面试宝典Netty实战算法BATJ面试要点及Java架构师进阶资料《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!式、高并发等架构技术【附】架构书籍BAT面试的20道高频数据库问题解析。 阅读详情

Spring Boot简介

很荣幸刚开始学习java框架就接触到了spring boot,并得到大神的指点,通过查阅资料以及教程学会在实际项目中去使用它,相对于其他框架只有一个字来形容 - “爽”。最近也看了一些资料及招聘信息,用发现弹簧启动的企业越来越多,毋庸置疑,这将会成为下一代的主流框架。春天启动可以说是用用SpringMVC的升级版,去掉了繁琐的配置,可以很容易上手,其最爽的就是他的自动化配置,用了之后再也不想回到以前了,谁用谁知道。网上有很多版本用法但好多都不是我想要的,因此博主再次将其总结记录下来,希望日后可以复习以及给需要的朋友一些帮助,再次声明博主也是学习者所以只能按自己的理解来写,若有不对之处请指教,日后有更深的理解会继续纠正,本篇先项目的构建-使用-部署从头到尾进行简单的讲解。

Spring  Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。


Spring boot的特点

1.创建独立的Spring应用程序
2.嵌入的Tomcat的,无需部署WAR文件
3.简化的Maven配置
4.自动配置Spring
5.提供生产就绪型功能,如指标,健康检查和外部配置
6.绝对没有代码生成和对XML没有要求配置


Spring boot的优点

spring boot可以支持你快速的开发出restful风格的微服务架构

自动化确实方便,做微服务再合适不过了,单一罐包部署和管理都非常方便。只要系统架构设计合理,大型项目也能用,加上nginx的的负载均衡,轻松实现横向扩展

spring boot要解决的问题,精简配置是一方面,另外一方面是如何方便的让春生态圈和其他工具链整合(比如Redis,电子邮件,elasticsearch)


项目构建
spring boot的构造方式有很多种,具体方法大家可以自行了解,这里以idea为例构建maven项目(eclipse的话推荐使用STS构造),构建过程这里省略直接下一步即可很简单,构建完成后的目录结构如图所示:

这里项目结构是我个人博客项目,对此我做简单介绍:
  • src / main / java:主程序入口BolgApplication,Spring引导内嵌Tomcat服务器,可以直接通过运行该类来启动应用。
  • 的src / main /资源:配置资源文件目录,由于我们是网络项目,因此这里存放一些静态资源文件,静态下存放图片,JS,CSS等,模板下存放JSP,HTML等模板视图文件等.application.yml是配置文件,为原本application.properties中,这里推荐使用YML格式,具体使用可以查阅了解,这里可以配置,访问端口,数据库连接信息等。
  • 的src /测试/:单元测试目录,通过Junit4实现项目的单元测试
POM依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  • spring-boot-starter-web:全栈web开发模块,包含嵌入式Tomcat,Spring MVC。
  • spring-boot-starter-thymeleaf:thymeleaf视图模板模块,相当于JSP,很好的支持了前后端分离开发。
  • 弹簧引导启动测试:通用测试模块,包含了JUnit,Hamcrest,的Mockito。
实现RESTful API
在Spring Boot中创建一个restful API的实现代码同SpringMVC应用一样,只是不需要像Spring MVC那样做很多配置,这就是自动配置的爽快之处,下面我们在controller下新建一个HelloController类内容如下所示:
包com.xiaoma.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by mj on 2018/1/21.
 */
@RestController
public class HelloController {

    @RequestMapping("hello")
    public String sayHello(){
        return "Hello World";
    }
}
@RestController 可以使所有的方法返回都为数据,加这个注解可以不用在每个方法前加@ResponseBody注解
启动 BolgApplication类,该类的内容结构为
package com.xiaoma;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BlogApplication {

	public static void main(String[] args) {
		SpringApplication.run(BlogApplication.class, args);
	}
}
@SpringBootApplication 注解等于@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的合并,同时提供了Spring配置,自动化配置,自动扫描的功能,由此可看到Spring Boot的好处了吧,一切Spring配置一个注解就可搞定,内置Tomcat服务器直接启动main方法即可运行 Spring Boot程序。注意:该启动类必须放在所有包的最外层,不然无法扫描到项目的其他类。

打开浏览器访问: http://localhost:8080/hello 即可看到 Hello World 字样

Spring Boot使用thymeleaf模板
thymeleaf视图模板类似于jsp、velocity、freemarker等可以作为web页面的视图解析,Spring Boot对其有很好的支持,可以完全彻底的进行前后端分离开发,由于以.html后缀命名,同时也可以像打开html文件一样打开,这也是现在以及将来的主流开发模式。
  • 打开src/main/resources下的application.yml里面添加如下内容
#设置访问端口
server:
  port: 8080   
  context-path: /
spring:
  #设置运行环境
  profiles:
    active: dev
  #环境域名
#  domain: xiaomablog.com

  #视图模型
  thymeleaf:
    cache: false
    mode: LEGACYHTML5
    prefix: classpath:/templates/
    suffix: .html
    encoding: UTF-8
    content-type: text/html
    check-template-location: true
其中port 可以修改Tomcat访问端口号,active可以设置开发环境,实际项目中有开发、线上、测试三个环境,只需要添加 application-prod.yml、application-dev.yml、application-test.yml 配置文件即可,里面配置各环境的配置,然后在application.yml里修改active为prod、dev、test即可切换环境
  • 在src/main/resources下的templates下新建index.html文件,内容为:
<!DOCTYPE html>
<html lang="zh-CN">

<body>
<div>
	welcome to Spring Boot
</div>
</body>

</html>
  • 修改HelloController为:
package com.xiaoma.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by mj on 2018/1/21.
 */
@Controller
public class HelloController {

    @RequestMapping("hello")
    public String sayHello(){
        return "index";
    }
}
重新启动项目打开浏览器访问: http://localhost:8080/hello  即可看到如图所示:


Spring Boot自定义参数
除了在Spring Boot的配置文件中设置各模块的预定义配置参数外,也可以定义一些我们需要的自定义参数,比如我们在 application.yml里添加如下配置:
book:
  name: Spring
  author: Boot
然后修改 HelloController为:

@RestController
public class HelloController {

    @Value("${book.name}")
    private String name;
    @Value("${book.author}")
    private String author;


    @RequestMapping("hello")
    public String sayHello(){

        return name+author;
    }
}
@Value即可获取我们在配置文件中自定义的属性值赋予两个变量
重新启动项目打开浏览器访问: http://localhost:8080/hello 即可看到"SpringBoot"字样

当我们有很多配置属性时,我们会创建一个类,并将属性值赋给类的属性,比如创建一个Book类:
package com.xiaoma.entity.po;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * Created by mj on 2018/1/21.
 */
@Component
@ConfigurationProperties(prefix = "book")
public class Book {

    private String name;
    private String author;

 省略了getter setter....

}
@ConfigurationProperties注解可以获取 application.yml配置文件中以book为前缀的属性值

然后修改HelloController为:
package com.xiaoma.controller;

import com.xiaoma.entity.po.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by mj on 2018/1/21.
 */
@RestController
public class HelloController {

    @Autowired
    Book book;

    @RequestMapping("hello")
    public Book sayHello(){

        return book;
    }
}
重新启动项目打开浏览器访问: http://localhost:8080/hello  即可看到{"author":"Boot","name":"Spring"}数据

如果想引入自定义配置文件的内容可以在实体类上再加@Configuration 和@PropertySource(value = "classpath:test.properties)来指定那个配置文件

Spring Boot部署
当完成一个项目后我们需要将其发布到服务器上,由于Spring Boot内置Tomcat容器因此发布有两个方式,一种是使用内置Tomcat容器以jar包形式运行,另一种是和我们平常普通项目一样以war包形式运行,下面就其两种方式进行讲解
  • 以jar包方式部署Spring Boot项目
由于内置Tomcat容器所以此方法很简单,进入项目目录,使用 mvn clean package打包,完成后会在target目录下生成一个jar文件,然后执行 java -jar 加上jar包文件名即可完成部署,是不是很简单啊。
  • 以war包方式部署Spring Boot项目
修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
package com.xiaoma;

import com.xiaoma.configuration.log.GwsLogger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
public class BlogApplication extends SpringBootServletInitializer {

	public static void main(String[] args) {
		SpringApplication.run(BlogApplication.class, args);
		System.out.println("========================================xiaomage blog server is started!");
		GwsLogger.info("xiaomage blog server is started!");
	}
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(this.getClass());
	}
}
修改pom文件中jar为war
<!--<packaging>jar</packaging>-->
<packaging>war</packaging>
修改pom文件中排除Tomcat插件
<dependency>  
	<groupId>org.springframework.boot</groupId>  
	<artifactId>spring-boot-starter-web</artifactId>  
	<!-- 如果在使用自带tomcat请注释下面,如果使用第三方tomcat不要注释下面 -->  
	<exclusions>    
		<exclusion>    
			<groupId>org.springframework.boot</groupId>    
			<artifactId>spring-boot-starter-tomcat</artifactId>    
		</exclusion>    
	 </exclusions>   
</dependency>
进入项目目录,使用mvn clean package打包,完成后会在目标下生成一个war文件,然后像普通项目一样扔到自己Tomcat的WebApp目录下即可。

至此有关Spring Boot的构建使用到部署已经完成了,怎么样是不是很简单,当然这只是简单的操作,不过很变不离其中,小小的应用已经包含了很多我们普通项目需要做的东西,希望志同道合的朋友一起学习一起研究,有不对的地方也希望多多指正,谢谢!

使用Kubernetes部署Spring Boot项目 目录前提条件新建Spring Boot项目并编写一个接口新建Maven工程导入 Spring Boot 相关的依赖启动项目编写Controller测试接口构建镜像打jar包新建Dockerfile文件Linux目录准备上传Dockerfile和target目录到Linux制作镜像查看镜像测试镜像上传镜像准备yaml文件创建deployment应用springbootdemo.yaml创建deployment查看deployment查看deployment详情查看pod访问测试扩容deployment pod 阅读详情

相关推荐

Spring Boot教程之二十五: 使用 Tomcat 部署项目

Tomcat 是默认的 Spring Boot 服务器,它可以在同一个应用程序中管理多个应用程序,从而避免在单个应用程序中为每个应用程序进行多次设置。由于这是一个简单的例子,我们只需展示一下调用“geeks-web-services/hello”时显示的内容,Hello Geek,这是一个简单的问候消息,祝您有个美好的一天。在本文中,我们将创建一个简单的 Spring Boot 应用程序,其中我们将使用 Tomcat 服务器部署该应用程序。而且我们的 war 文件也部署在 tomcat 中。

潜洋的专栏 2062

spring boot 项目的坑:由于application.yml配置文件,项目启动中停止不报错!

spring boot 项目的坑:linux下shell启动项目,application.yml配置文件读取程序停止不报错! 问题原因:使用application.yml作为项目配置文件,windows下使用idea测试项目正常运行。当项目打包成jar后通过shell启动项目,main程序在SpringApplication.run方法中断,查看日志不打印日志。 解决过车: 1、开启远程调试...

Brave Soul Blog 1万+

使用 Docker 部署 Spring Boot

金三银四到了,送上一个小福利!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!容对你有帮助,可以扫码获取!!(备注Java获取)**金三银四到了,送上一个小福利![外链图片转存中…(img-kNPI5w5F-1711885493760)][外链图片转存中…(img-rUGcOCWt-1711885493761)][外链图片转存中…(img-MnnyVOYh-1711885493761)]

2401_83704192的博客 1143

Spring Boot系列(一) Spring Boot介绍和基础POM文件

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 Spring Boot的特点 1. 创建独立的Sprin

阿雨的博客 1783

Docker部署Spring Boot项目

该命令将启动一个名为my-spring-boot-app的Docker容器,并将容器内部的8080端口映射到主机的8080端口。该命令将启动一个名为my-image的Docker容器,并将容器内部的8080端口映射到主机的8080端口。该命令将使用当前目录下的Dockerfile来构建一个名为my-spring-boot-app的Docker镜像。在构建完Docker镜像后,可以使用docker run命令来运行Docker容器。安装完成后,可以使用Docker来构建、部署和运行应用程序。

weixin_59523802的博客 2558

嵌入式SPI总线抽象设计:跨平台驱动与分层解耦实践

SPI(串行外设接口)是嵌入式系统中应用最广泛的同步串行通信协议,其核心价值在于高吞吐、低开销与硬件简洁性。其工作原理基于主从架构、全双工/半双工时序及片选(CS)控制,依赖CPOL/CPHA组合定义四种标准模式。在工程实践中,SPI常面临硬件资源受限、多外设共用总线、MCU平台迁移等挑战,导致驱动复用率低、维护成本高。通过结构体+函数指针实现的分层抽象——将物理总线、协议适配与设备驱动解耦,可显著提升代码可移植性与扩展性。该方法天然支持硬件SPI与GPIO模拟SPI双模式切换,并已在STM32等主流MCU

weixin_42601134的博客 60

springboot-基础步骤

1,什么是springboot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。换句话说,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 ...

weixin_44734680的博客 259

Vue3多级路由缓存失效的深度解析与实战解决方案

本文深度解析了Vue3项目中多级路由嵌套下keep-alive缓存失效的根本原因,并提供了三种实战解决方案。通过剖析组件树、router-view与keep-alive的协作机制,揭示了缓存无法穿透多层router-view的技术本质。文章对比了路由扁平化重构、状态管理配合路由守卫以及使用社区插件等方案的优缺点与适用场景,为开发者解决这一常见难题提供了清晰的选型指导。

weixin_29001423的博客 271

SpringBoot 项目加载不了application.yml配置文件

Java 项目启动不加载application配置文件 今天通过gradle 创建一个java 项目,照常引入了spring-boot-starter-web 包,然后启动项目; 发现我application.yml 配置文件中添加的一些属性,在类中通过@value("${name}")引入不了; 然后在Application.java 启动文件通过@ImportResource(“classpa...

以后的今天的博客 1万+

WPF毛玻璃效果别再写C#代码了!纯XAML用Border+VisualBrush+BlurEffect三步搞定

本文详细介绍了如何在WPF中通过纯XAML实现毛玻璃效果,无需编写C#代码。通过VisualBrush、BlurEffect和Clip的黄金组合,开发者可以快速创建专业级的毛玻璃面板,提升UI的现代感和视觉层次。文章还提供了性能优化技巧和实战案例,帮助开发者在各种场景中高效应用这一技术。

weixin_28630185的博客 352

IEPE传感器4mA恒流源接口电路

另外传感器的偏置电压大概在10V多点,一般接个电容把直流分量去掉。这里我们要把恒流源的电流设置在4毫安左右,R1取33Ω差不多正好。经过CR的隔直流电路后的波形是这样的。

老白的博客 6112

Maven中使用exclusions

聚合项目中有个项目A是专门做极光推送,极光推送里面用了log4j的包,然后项目B需要用到推送所以添加了项目A依赖,但是项目B是用logback日志,造成项目B的jar包冲突,启动失败,所以在引入项目A的时候需要用到exclusions排除项目A中不需要的依赖 <exclusions> <exclusion> <groupId></groupId> <artifactId></artifactId> ...

chenbhhh的博客 1898

深度解析:LPDDR5 Receiver 的挑战与应对

LPDDR5 的数据速率已经来到Tbit​DataRate1​≈156ps在6400Mbps时也就是说,。👉 这就是为什么成为 LPDDR5 的“标配”。

weixin_43199439的博客 211

使用 Docker 部署 Spring Boot 项目

Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...

纯洁的微笑 1万+

YOLOv8改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平移等变的高阶空间交互操作

HorNet: 利用递归门控卷积实现高效高阶空间交互GnConv(Recursive Gated Convolution,递归门控卷积)

Limiiiing的博客 324

事件驱动的 SAP 工作流:从 BOR 事件到 Event Linkage 的落地与排障全景图

摘要: SAP工作流中的Event是业务对象状态变化的系统广播机制,如发票录入、采购订单释放等事件。通过事件驱动,业务程序与流程引擎解耦,业务只需发布事件,流程引擎负责后续处理。文章详细解析了SAP工作流事件的完整链路,包括事件定义、触发机制、事件容器传递、SWE2配置的关键作用,以及事件不触发时的排查方法。重点介绍了事件在启动流程、终止任务、等待步骤和主动创建中的应用,并结合采购订单审批案例说明事件的实际使用场景和配置要点。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 189

【项目部署】Spring Boot项目部署的四种方式

本文是记录我第一次部署项目的学习历程,总的来说有四种方式,内容还挺多,还得消化消化,希望对你们有所帮助

在代码与逻辑的星河里,捡拾技术的微光 6734

Ollama DNS 重新绑定攻击 (CVE-2024-28224)

一旦 DNS 重新绑定攻击成功,攻击者就可以对这些 API 进行排序,以读取 Ollama 运行的进程可访问的任意文件数据,并将这些数据泄露到攻击者控制的系统中。完成对“创建模型” API 请求的调用后,Ollama 将收集组成新创建的用户模型的许多工件,包括大型语言模型数据、许可证数据等,以及我们要提取的文件,所有这些都可以通过其 SHA256 内容进行寻址。这是我们要窃取的文件,在我们的示例中,是可通过运行 Ollama 的主机上的路径名访问的现有文本文件。值得注意的是,该模型配置为通过参数中的。

技术超强的网络安全平台 1648

使用Docker部署Spring Boot项目

本文使用Docker部署Spring Boot项目。部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven;接着搭建一个Spring Boot项目,使其支持Docker部署;最后进行部署和测试。

码上暴富 8025

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

使用Docker部署Spring boot项目

使用Docker部署Spring boot项目   一、前提条件 1.有一个Spring boot项目   编译打包(mvn package)后在工程target目录下生成文件springBootDocker.jar   项目源码:     maven打包的jar包:     2. 一台装有Docker的Linux主机和一台Docker Registry(Harbor...

funtaster的博客 7万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

在 Linux 上使用 Docker 部署 Spring Boot 项目

通过以上步骤,您可以在 Linux 服务器上顺利部署 Spring Boot 项目,结合 Docker 和 Docker Compose,实现高效的容器化管理。在开始 Docker 部署之前,首先需要确保 Spring Boot 项目已经打包为可执行的 JAR 文件。命令的路径,确保 JAR 文件正确复制到容器。在 Spring Boot 项目根目录下创建。打包完成后,JAR 文件通常位于。端口被占用,可以更换端口,例如。作为数据库连接 URL,而不是。目录下(Maven)或。目录下(Gradle)。

qq_56694800的博客 1723

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用 Docker 部署 Spring Boot 项目流程

通过 Docker 部署 Spring Boot 项目可以极大简化应用的部署和运维流程。Docker 提供了一种隔离且轻量的方式,确保应用在不同环境中的一致性和可移植性。将应用容器化不仅便于管理,还能提高部署的效率。构建项目。创建Dockerfile文件来定义容器。构建和运行Docker镜像与容器。随着项目规模的增大,使用 Docker 管理应用程序将变得更加高效,特别是在微服务架构下,Docker 的作用尤为显著。

m0_70590680的博客 1946
上一篇: Elasticsearch 系列指南(四)——Java集成
下一篇: Elasticsearch 系列指南(五)——ELK日志收集
我叫周伯通
博客等级 码龄10年 20粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值