Spring Boot

SpringBoot 打 war 包部署应用

◇◆丶佛笑我妖孽 提交于 2021-01-12 12:02:57
1 SpringBoot打war包的4个步骤 设置打包方式,默认是jar方式。 <!--war包[1] 默认是jar包形式--> < packaging > war </ packaging > 移除内置tomcat依赖。因为war包是要发布到外部servlet容器中的,不再需要springboot web模块的内置Tomcat。 <!--引入springboot web模块--> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > <!--打war包需要移除springboot web模块中的内置tomcat依赖--> < exclusions > < exclusion > < groupId > spring-boot-starter-tomcat </ groupId > < artifactId > org.springframework.boot </ artifactId > </ exclusion > </ exclusions > </ dependency > 设置servlet依赖 <!--打war包需要添加外部servlet依赖--> < dependency > <

SpringBoot集成Sharding——JDBC分库分表

走远了吗. 提交于 2021-01-12 10:52:25
Sharding——JDBC 它定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。 对比图: 开发人员只需正常写查询、mapper即可、无感知。 分库分表概念 随着业务的不断增长,数据也飞速增长,访问也随之变慢,添加从库、新建索引等很多操作仍严重下降,分库分表需求迫在眉睫。 方案一: 通过提升服务性能来提升数据处理能力,例如:扩容、CPU等,但成本很高。 方案二: 把数据分散在不同数据集中,大表拆成小表、数据落盘到不同库中,从而使得数据集变小从而提升性能。 垂直分库 以 表 为依据,按照业务需求将 表 拆到不同库中。 每个 库 的结构不一样。 每个 库 的数据不一样,没有交集。 所有库的 并集 是全量数据。 场景: 这一步拆分基本是服务化,例如,中间表、字典表、配置表等越来越多,可以将这些表拆分到单独库中,甚至可以微服务化。 垂直分表 以 字段 为依据,按照字段活跃性拆到不同 表 中。 每张表 结构 不一样。 每张表 数据也 不一样,至少有一列 交集 用于关联。 所有表 并集 数据是全量数据。 场景: 用户表中有id、名称、住址等信息,每次查询用户信息时住址字段使次数很低,大字段等单独拆分一张,从而减少IO提升性能。 水平分库 以 字段

SpringBoot整合Mybatis

扶醉桌前 提交于 2021-01-12 04:37:14
依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> 纯注解版 如何告诉Spring容器,哪个接口是Mapper呢? 一般我们的都是单独创建一个mapper的packet, 闲麻烦可以选择使用 @Mapper 注解标记在单个mapper接口上,或者使用 @MapperScan 完成mapper的批量扫描 完成简单注解版的CURD 方法的名字见名知意就行,但是方法的返回值得是注解上sql对应的返回值 查询 @Select @Select("select * from person where id=#{id}") public Person getPersonById(Integer id); 删除 @Delete @Delete("delete from person where id = #{id}") public int deletePersonById(Integer id); 添加 @Insert // 添加Options注解,指定主键自增长, keyProperty 指定主键是谁,效果是运行完insert语句后

Nginx实现动静分离

扶醉桌前 提交于 2021-01-12 04:22:07
结合本文场景,需要安装Nginx和Java环境(运行SpringBoot项目)。 1.什么是动静分离? 在弄清动静分离之前,我们要先明白什么是动,什么是静。 在Web开发中,通常来说,动态资源其实就是指那些后台资源,而静态资源就是指HTML,JavaScript,CSS,img等文件。 一般来说,都需要将动态资源和静态资源分开,将静态资源部署在Nginx上,当一个请求来的时候,如果是静态资源的请求,就直接到nginx配置的静态资源目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给后台应用去处理,从而实现动静分离。 在使用前后端分离之后,可以很大程度的提升静态资源的访问速度,同时在开过程中也可以让前后端开发并行可以有效的提高开发时间,也可以有些的减少联调时间 。 2.项目配置 修改SpringBoot应用启动类,做简单跳转,使访问根路径可以跳转到index.html,如下代码所示。 @SpringBootApplication @Controller public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @GetMapping("/") public

winsw打包jar

≡放荡痞女 提交于 2021-01-11 09:45:16
参考: https://www.jianshu.com/p/fc9e4ea61e13 https://blog.csdn.net/qq_28566071/article/details/80882503 spring官方推荐使用winsw来将springboot项目作为服务运行,参考 https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#deployment-windows 1.把java程序打包为jar包 2.下载winsw winsw是一款可将可执行程序安装成Windows Service的开源工具,github: https://github.com/kohsuke/winsw/releases 前言 由于我们公司java应用是部署在windows服务器上的,jenkins在部署spring boot时会一直等待直到超时才结束,这个主要原因是因为spring boot 启动一直是在前台运行(控制台一直在打印),所以jenkins会认为这个任务没有执行完成,就会一直在执行。如果是linux系统可以使用nohup命令,但windows就不行,没这个命令,所以我把java 应用做成windows服务,每次部署成功只要重启服务即可。 winsw制作windows服务器 winsw

IDEA下一键部署SpringBoot项目到Linux服务器(Alibaba Cloud Toolkit的使用)

杀马特。学长 韩版系。学妹 提交于 2021-01-11 09:41:20
写在开始:一个搬砖程序员的随缘记录 简介: Cloud Toolkit 是本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、Kubernetes 和 小程序云 等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传和 MySQL 执行器等工具。 准备: 1、Linux服务器一台,部署好JAVA环境 2、IDEA开发工具 3、SpringBoot项目一个 文章目录 一、IDEA安装Alibaba Cloud Toolkit插件 二、项目准备 三、服务器配置 四、Alibaba Cloud Toolkit配置 五、执行 六、验证 一、IDEA安装Alibaba Cloud Toolkit插件 我已经安装过了 安装后重启IDEA 二、项目准备 在IDEA下构建一个项目 写好一个测试接口 三、服务器配置 命令: # 进入一个目录 cd /www/wwwroot/ # 新建文件夹.名字可以随意取 mkdir demo # 进入新建的文件夹 cd demo 新建restart.sh脚本。脚本内容在下面,复制进去就行 vi restart.sh 脚本内容如下: if [ ! -n " $1 " ] ; then echo "please input a process

整合Lettuce Redis

99封情书 提交于 2021-01-11 05:43:27
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物, 自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程 Spring Boot 除了支持常见的ORM框架外,更是对常用的中间件提供了非常好封装,随着 Spring Boot2.x 的到来,支持的组件越来越丰富,也越来越成熟,其中对 Redis 的支持不仅仅是丰富了它的API,更是替换掉底层 Jedis 的依赖,取而代之换成了 Lettuce(生菜) Redis介绍 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。相比 Memcached 它支持存储的类型相对更多 ( 字符 、 哈希 、 集合 、 有序集合 、 列表 、 GEO ) , 同时 Redis 是线程安全的 。2010年3月15日起,Redis的开发工作由VMware主持,2013年5月开始,Redis的开发由 Pivotal 赞助。 Lettuce Lettuce 和 Jedis 的都是连接 Redis Server 的客户端程序。 Jedis 在 实现上是直连 redis server ,多线程环境下非线程安全,除非使用连接池

Springboot2.x整合ElasticSearch7.x实战(三)

喜你入骨 提交于 2021-01-11 01:43:28
大概阅读10分钟 本教程是系列教程,对于初学者可以对 ES 有一个整体认识和实践实战。 还没开始的同学,建议先读一下系列攻略目录: Springboot2.x整合ElasticSearch7.x实战目录 本篇幅是继上一篇 Springboot2.x整合ElasticSearch7.x实战(二) ,适合初学 Elasticsearch 的小白,可以跟着整个教程做一个练习。 [toc] 第五章 Mapping详解 Mapping 是整个 ES 搜索引擎中最重要的一部分之一,学会构建一个好的索引,可以让我们的搜索引擎更高效,更节省资源。 什么是 Mapping? Mapping 是Elasticsearch 中一种术语, Mapping 类似于数据库中的表结构定义 schema,它有以下几个作用: 1. 定义索引中的字段的名称 2. 定义字段的数据类型,比如字符串、数字、布尔 3. 字段,倒排索引的相关配置,比如设置某个字段为不被索引、记录 position(位置) 等 在 ES 早期版本,一个索引下是可以有多个 Type ,从 7.0 开始,一个索引只有一个 Type,也可以说一个 Type 有一个 Mapping 定义。 了解了什么是 Mapping 后,接下来对 Mapping 的设置坐下介绍: Maping设置 dynamic (动态Mapping) 官网参考: https:/

Springboot+Kotlin+mybatis 构建RESTFUL

 ̄綄美尐妖づ 提交于 2021-01-10 16:49:52
java 大多数代码写了很多沉长的getter 以及setter,似乎kotlin改造了这些东西,简化了实体类的写法。其语法类似于scala ,其实两者写起来感觉没多大区别。遵循大佬就是牛逼的原则,我更偏向于kotlin,毕竟人家手里有android,而且其语法最初也是支持android。 对于代码的编写其实并无多大区别,说下主要注意的地方;代码会在文章末尾奉上,文章在于辅助代码理解,如果你不想看这些可以直接跳到末尾查看源码。 实体类: 实体类的写法更加简单,但是有利必定有弊。其中遇到的坑Integer ,和时间date的转化。Integer 的区别在于int 还是Integer, Date 不管你使用 java.utils 还是 java.sql 都会报错,其中报错语句大致如下: matching [java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang. 所以现在的解决办法就是 所有时间戳类的都转化为timeStamp,至于Int 型 那么就是int? 这样就是一个简单的实体类就出来了,少了getter 少了setter。 剩下的就是老规矩,Controller,Services,Mapper,Xml