本篇文章为你整理了Springboot&&LinuX()的详细内容,包含有 Springboot&&LinuX,希望能帮助你了解 Springboot&&LinuX。
概念介绍:全新框架,简化Spring应用的初始搭建以及开发过程
Springboot核心:自动装配
微服务阶段
javase:OOP
mysql:持久化
html+css+js+jquery+框架:视图,框架不熟练,css不好;
javaweb:独立开发MVC三层架构的网站了:原始
ssm:企业级框架:简化了我们的开发流程,配置也开始较为复杂
war:tomcat运行
715348851
spring再简化:SpringBoot-jar:内嵌tomcat;微服务架构!
二、Spring Boot概念
1.1、什么是Spring?
Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者: Rod Johnson (音乐学博士)。
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。
1.2、Spring是如何简化Java开发的?主要是AOP、IOC
为了降低Java开发的复杂性,Spring采用了以下4种关键策略:
1、基于POJO的轻量级和最小侵入性编程;
2、通过IOC,依赖注入(DI)和面向接口实现松耦合;
3、基于切面(AOP)和惯例进行声明式编程;
4、通过切面和模版减少样式代码;
1.3、什么是SpringBoot
学过javaweb的同学就知道,开发一个web应用,从最初开始接触Servlet结合Tomcat,跑出一个Hello Wolrld程序,是要经历特别多的步骤;后来就用了框架Struts,再后来是SpringMVC,到了现在的SpringBoot。什么是SpringBoot呢,就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置, you can "just run",能迅速的开发web应用,几行代码开发一个http接口。
Spring Boot基于Spring 开发,Spirng Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring 的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,多数Spring Boot应用只需要很少的Spring 配置。同时它集成了大晨常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用
简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包, spring boot整合了所有的框架。Spring Boot出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring Boot已经当之无愧成为Java领域最热门的技术。
Spring Boot的主要优点:
为所有Spring开发者更快的入门
开箱即用,提供各种默认配置来简化项目配置
内嵌式容器简化Web项目
没有冗余代码生成和XML配置的要求
1.4、Spring Boot和Spring的对比
Spring程序缺点
依赖设置繁琐
SpringBoot程序优点
起步依赖(简化依赖配置)
自动配置(简化常用工程相关配置)
辅助功能(内置服务器,...)
三、微服务概念
业务:service :userService == 模块!
springMVC,contrller == 提供接口!
3.1、什么是微服务?
微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成—系列小服务的组合;可以通过http的方式进行互通。要说微服务架构,先得说说过去我们的单体应用架构。
3.2、单体应用架构
所谓单体应用架构(all in one)是指,我们将一个应用的中的所有应用服务都封装在一个应用中。
无论是ERP、CRM或是其他什么系统,你都把数据库访问,web访问,等等各个功能放到一个war包内。
优点:易于开发和测试;也十分方便部署;当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做个负载均衡就可以了。
缺点:哪怕我要修改一个非常小的地方,我都需要停掉整个服务,重新打包、部署这个应用war包。特别是对于一个大型应用,我们不可能吧所有内容都放在一个应用里面,我们如何维护、如何分工合作都是问题。
3.2、微服务架构
all in one的架构方式,我们把所有的功能单元放在一个应用里面。然后我们把整个应用部署到服务器上。如果负载能力不行,我们将整个应用进行水平复制,进行扩展,然后在负载均衡。
所谓微服务架构,就是打破之前all in one的架构方式,把每个功能元素独立出来。把独立出来的功能元素的动态组合,需要的功能元素才去拿来组合,需要多一些时可以整合多个功能元素。所以微服务架构是对功能元素进行复制,而没有对整个应用进行复制。
优点:
节省了调用资源。
每个功能元素的服务都是一个可替换的、可独立升级的软件代码。
四、第一个SpringBoot程序
4.1、配置
jdk:1.8
Maven:3.6.5
springboot:最新版
应用:IDEA
官方:一个快速生成的网站!下载后导入
IDEA:直接新建项目即可
4.2、相关更改
更改端口号:
#更改端接口号
server.port=8081
更改banner.txt
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// ( ^_^ ) //
// O\ = /O //
// ____/`---\____ //
// . \\ // `. //
// / \\ : // \ //
// / _ -:- - \ //
// \\\ - /// //
// \_ \---/ //
// \ .-\__ `-` ___/-. / //
// ___`. . /--.--\ `. . ___ //
// ."" `.___\_ _/___. "". //
// : `- \`.;`\ _ /`;.`/ - ` : //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-======== //
// `=---= //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
////////////////////////////////////////////////////////////////////
五、原理初探
自动配置:
1、pom.xml
spring-boot-dependencies:核心依赖在父工程中!
我们在引入依赖的时候,不需要指定版本,SpringBoot具有版本仓库
parent
开发SpringBoot程序要继承spring-boot-starter-parent
spring-boot-starter-parent中定义了若干个依赖管理
继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
继承parent的形式也可以采用引入依赖的形式实现效果
stater
SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的
2、启动器
!--启动器--
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter /artifactId
/dependency
3、主程序
package com.aaron;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
public static void main(String[] args) {
SpringApplication.run(HelloSpringBootApplication.class, args);//相当于一个容器
SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目
SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean
4、辅助功能
内嵌Tomcat服务器是SpringBoot辅助功能之一,另外还有jetty(相对更加轻量,但是负载型远不及tomcat)、undertow(负载型勉强跑赢tomcat)
内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给spring容器管理
变更内嵌服务器思想是去除现有服务器,添加全新的服务器
六、REST风格
6.1、REST简介
REST是(Representational State Transfer)的缩写,表现形式状态的转换,即资源的访问格式
6.2、表现形式
优点:隐藏资源的访问行为,无法通过地址得知对资源是何种操作、书写简化!
查询:GET
添加:POST
修改:PUT
删除:DELETE
约定大于配置
七、Windows端口
八、常量单位
转换语法规则
密码尽量用双引号,避免识别错误
九、加载测试专有属性
1、properties
在启动测试环境时可以通过properties参数设置测试环境专用的属性
优势:比多环境开发中的测试环境影响范围更小,仅对当前测试类有效
2、args
在启动测试环境时可以通过args参数设置测试环境专用的传入参数
3、测试类中启动web服务器
4、虚拟调用(AutoConfigureMockMvc)
5、匹配相应执行状态
6、业务层事务回滚
7、随机测试数据
8、内嵌数据库
十、Redis
1、安装运行
tar -zxvf redis-7.0.3.tar.gz -C /usr/local
//进入目录
yum install gcc-c++
//src下
make install
启动命令行小BUG:
//登录
src/redis-cli -h localhost -p 6379 -a Max123456
后台运行
Windows远程连接
先在vim redis.conf
杀进程!!!重启!!!即可
ps -ef grep redis
kill -9 端口号
src/redis-server ./redis.conf
.\redis-cli.exe -h 1.14.182.21 -p 6379 -a Max123456
2、基本用法
1.字符串
3.列表list(可重复,队列)
4.set无序集合
先导入包、同时cmd启动Redis
package com.aaron;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
@SpringBootTest
class Springboot10RedisApplicationTests {
@Autowired(required = false)
private RedisTemplate redisTemplate;
@Test
void SetRedisTemplate() {
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.set("age",22);
@Test
void GetRedisTemplate() {
ValueOperations valueOperations = redisTemplate.opsForValue();
Object age = valueOperations.get("age");
System.out.println(age);
@Test
void HSetRedisTemplate() {
HashOperations hashOperations = redisTemplate.opsForHash();
hashOperations.put("info","a","aa");
hashOperations.put("info","a1","a123");
@Test
void HGetRedisTemplate() {
HashOperations hashOperations = redisTemplate.opsForHash();
Object o = hashOperations.get("info", "a");
Object o1 = hashOperations.get("info", "a1");
System.out.println(o);
System.out.println(o1);
十一、MongoDB
概念:MongoDB是一个开源、高性能、无模式的文档型数据库。NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库
1、应用场景
十二、缓存
缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质
使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高系统性能
十三、Linux基础命令
cd /etc/sysconfig/network-scripts
vi ifcfg-ens33
//编码
echo LANG="en_US.UTF-8" /etc/profile
source /etc/profile
1、查看目录ls
2、显示文件类容cat
cat /etc/profile
3、拷贝文件cp
cp hello.txt itcast/
cp hello.txt ./hi.txt
cp -r itcast/ ./itheima/
cp -r itcast/* ./itheima/
4、拷贝移动mv
mv hello.txt hi.txt
mv hi.txt itheima/
mv hi.txt itheima/hello.txt
mv itcast/ itheima/
mv itcast/ itheima/
5、打包压缩tar
//打包
tar -cvf hello.tar ./*
tar -zcvf hello.tar.gz ./*
tar -xvf hello.tar
tar -zxvf hello.tar.gz
tar -zxvf hello.tar.gz -C lusr/local
6、文本编辑vim
yum install vim
7、查找find grep
十四、软件安装
1、JDK
//解压
tar -zxvf jdk-8u271-linux-x64.tar.gz -C /usr/local
vim /etc/profile
//配置环境变量
JAVA_HOME=/usr/local/jdk1.8.0_271
PATH=$JAVA_HOME/bin:$PATH
//加载配置文件
source /etc/profile
2、Tomcat
tar -zxvf apache-tomcat-8.5.81.tar.gz -C /usr/local
!
ps -ef grep tomcat
//查看防火墙状态(systemctl status firewalld、 firewall-cmd --state)
//暂时关闭防火墙(systemctl stop firewalld)
//永久关闭防火墙(systemctl disable firewalld)
//开启防火墙(systemctl start firewalld)
//开放指定端口(firewall-cmd --zone=public --add-port=8080/tcp --permanent)
//关闭指定端口(firewall-cmd --zone=public --remove-port=8080/tcp --permanent)
//立即生效(firewall-cmd --reload)
//查看开放的端口(firewall-cmd --zone=public --list-ports)
3、MySQL
rpm -qa
rpm -qa grep mysql
rpm -qa grep mariadb
//卸载
rpm -e --nodeps 软件名称
mkdir /usr/local/mysql
tar -xvf mysql-8.0.29-1.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql
rpm -ivh mysql-community-common-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-debuginfo-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-debug-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-test-8.0.29-1.el7.x86_64.rpm --nodeps
service mysqld stop
//查看服务状态
systemctl status mysqld
//启动服务
systemctl start mysqld
//开机启动
systemctl enable mysqld
//查看已经启动的服务
netstat-tunlp
netstat -tunlp grep mysql
//查看Mysql进程
ps -ef grep mysql
//查看文件内容
cat /var/log/mysqld.log
//查看文件内容包含password
cat /var/log/mysqld.log grep password
mysql -uroot -p 登录mysql(使用临时密码登录)
#修改密码
ALTER USER root@localhost IDENTIFIED BY qazWsx + 3ed;
set global validate_password.length=6; 设置密码长度最低位数
set global validate_password.policy=LOW; 设置密码安全等级低,便于密码可以修改成root
ALTER USER root@localhost IDENTIFIED BY Max123456;
SELECT user,host FROM mysql.user;
RENAME USER root@localhost TO root@%;
ALTER USER root@% IDENTIFIED BY Max123456 PASSWORD EXPIRE NEVER;
ALTER USER root@% IDENTIFIED WITH mysql_native_password BY Max123456;
//root最高权限
grant all privileges on *.* to root@% with grant option;
#开启访问权限
grant all on *.* to root@%identified by Max123456;
flush privileges;
4、lrzsz(rz可以打开上传)
十五、文件部署
1、手工部署
nohup java -jar boot工程.jar XXX.log //后台运行java -jar命令,并将日志输出到XX.log文件
nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar hello.log
more XXX.log
关闭进程
2、脚本部署
tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local
vim /etc/profile //修改配置文件,加入如下内容
export MAVEN_HOME=/usr/local/apache-maven-3.8.6
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
source /etc/profile
mvn -version
vim /usr/local/apache-maven-3.5.4/conf/settings.xml
修改配置文件内容如下
localRepository /usr/local/repo /localRepository
十六、Mysql的主从复制
1、主数据库操作
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=100 #[必须]服务器唯一ID
重启
systemctl restart mysqld
set global validate_password.policy=LOW;
ALTER USER root@% IDENTIFIED WITH mysql_native_password BY Max123456;
show master status;
2、从库操作
server-id=101 #[必须]服务器唯一ID
重启
systemctl restart mysqld
stop slave;
change master to master_host=1.14.182.21, master_user=root, master_password=Max123456, master_log_file=mysql-bin.000001, master_log_pos=439;
start slave;
show slave status\G;
//从库命令行输入
stop slave;
// 数字1 的位置可以设置大一点,这样就可以跳过更多的执行语句,否则还可能有错误
set global sql_slave_skip_counter=1;
start slave;
十七、Sharding-JDBC
1、导入坐标
dependency
groupId org.apache.shardingsphere /groupId
artifactId sharding-jdbc-spring-boot-starter /artifactId
version 4.0.0-RC1 /version
/dependency
2、规则配写
server:
port: 8080
mybatis-plus:
configuration:
#在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: ASSIGN_ID
spring:
shardingsphere:
datasource:
names:
master,slave
# 主数据源
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://1.14.182.21:3306/rw?characterEncoding=utf-8
username: root
password: Max123456
# 从数据源
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.121.128:3306/rw?characterEncoding=utf-8
username: root
password: Max123456
masterslave:
# 读写分离配置
load-balance-algorithm-type: round_robin #轮询
# 最终的数据源名称
name: dataSource
# 主库数据源名称
master-data-source-name: master
# 从库数据源名称列表,多个逗号分隔
slave-data-source-names: slave
props:
sql:
show: true #开启SQL显示,默认false
main:
allow-bean-definition-overriding: true
pom文件
?xml version="1.0" encoding="UTF-8"?
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"
modelVersion 4.0.0 /modelVersion
parent
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-parent /artifactId
version 2.4.5 /version
relativePath/
/parent
groupId com.itheima /groupId
artifactId rw_demo /artifactId
version 1.0-SNAPSHOT /version
properties
java.version 1.8 /java.version
/properties
dependencies
dependency
groupId org.apache.shardingsphere /groupId
artifactId sharding-jdbc-spring-boot-starter /artifactId
version 4.0.0-RC1 /version
/dependency
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-web /artifactId
scope compile /scope
/dependency
dependency
groupId org.projectlombok /groupId
artifactId lombok /artifactId
version 1.18.20 /version
/dependency
dependency
groupId com.alibaba /groupId
artifactId fastjson /artifactId
version 1.2.76 /version
/dependency
dependency
groupId commons-lang /groupId
artifactId commons-lang /artifactId
version 2.6 /version
/dependency
dependency
groupId mysql /groupId
artifactId mysql-connector-java /artifactId
scope runtime /scope
/dependency
dependency
groupId com.baomidou /groupId
artifactId mybatis-plus-boot-starter /artifactId
version 3.4.2 /version
/dependency
dependency
groupId com.alibaba /groupId
artifactId druid-spring-boot-starter /artifactId
version 1.1.23 /version
/dependency
/dependencies
build
plugins
plugin
groupId org.springframework.boot /groupId
artifactId spring-boot-maven-plugin /artifactId
version 2.4.5 /version
/plugin
/plugins
/build
/project
3、配置文件中允许bean覆盖
main:
allow-bean-definition-overriding: true
瑞吉项目
?xml version="1.0" encoding="UTF-8"?
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"
modelVersion 4.0.0 /modelVersion
parent
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-parent /artifactId
version 2.7.1 /version
relativePath/ !-- lookup parent from repository --
/parent
groupId com.Aaorn /groupId
artifactId reggie_take_out /artifactId
version 1.0-SNAPSHOT /version
properties
java.version 1.8 /java.version
/properties
dependencies
!--阿里云短信服务--
dependency
groupId com.aliyun /groupId
artifactId aliyun-java-sdk-core /artifactId
version 4.6.0 /version
/dependency
dependency
groupId com.aliyun /groupId
artifactId aliyun-java-sdk-dysmsapi /artifactId
version 2.2.1 /version
/dependency
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter /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-web /artifactId
scope compile /scope
/dependency
dependency
groupId com.baomidou /groupId
artifactId mybatis-plus-boot-starter /artifactId
version 3.5.2 /version
/dependency
dependency
groupId org.projectlombok /groupId
artifactId lombok /artifactId
/dependency
dependency
groupId com.alibaba /groupId
artifactId fastjson /artifactId
version 2.0.7 /version
/dependency
dependency
groupId commons-lang /groupId
artifactId commons-lang /artifactId
version 2.6 /version
/dependency
dependency
groupId mysql /groupId
artifactId mysql-connector-java /artifactId
scope runtime /scope
/dependency
dependency
groupId com.alibaba /groupId
artifactId druid-spring-boot-starter /artifactId
version 1.2.11 /version
/dependency
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-data-redis /artifactId
/dependency
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-cache /artifactId
/dependency
dependency
groupId org.apache.shardingsphere /groupId
artifactId sharding-jdbc-spring-boot-starter /artifactId
version 4.0.0-RC1 /version
/dependency
/dependencies
build
plugins
plugin
groupId org.springframework.boot /groupId
artifactId spring-boot-maven-plugin /artifactId
/plugin
/plugins
/build
/project
server:
port: 8080
spring:
application:
name: reggie_take_out
shardingsphere:
datasource:
names:
master,slave
# 主数据源
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://1.14.182.21:3306/reggie?serverTimezone=Asia/Shanghai useUnicode=true characterEncoding=utf-8 zeroDateTimeBehavior=convertToNull useSSL=false allowPublicKeyRetrieval=true
username: root
password: Max123456
# 从数据源
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.121.128/reggie?serverTimezone=Asia/Shanghai useUnicode=true characterEncoding=utf-8 zeroDateTimeBehavior=convertToNull useSSL=false allowPublicKeyRetrieval=true
username: root
password: Max123456
masterslave:
# 读写分离配置
load-balance-algorithm-type: round_robin #轮询
# 最终的数据源名称
name: dataSource
# 主库数据源名称
master-data-source-name: master
# 从库数据源名称列表,多个逗号分隔
slave-data-source-names: slave
props:
sql:
show: true #开启SQL显示,默认false
main:
allow-bean-definition-overriding: true
# 数据源德鲁伊
# datasource:
# druid:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://1.14.182.21:3306/reggie?serverTimezone=Asia/Shanghai useUnicode=true characterEncoding=utf-8 zeroDateTimeBehavior=convertToNull useSSL=false allowPublicKeyRetrieval=true
# username: root
# password: Max123456
redis:
password: Max123456
host: 1.14.182.21
database: 15
port: 6379
cache:
redis:
time-to-live: 1800000
# MybatisPlus
mybatis-plus:
configuration:
#在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: ASSIGN_ID
reggie:
path: /usr/local/app/reggie/photos/
十八、Nginx负载均衡
Nginx是一款轻量级的web_服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类
型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler .ru站点(俄文:Paw6nep)开发的,第一个公开版本0.1.0发布于2004年10月4日。
官网: https : / /nginx.org/
2、下载安装
安装过程:
1、安装依赖包yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
2、下载Nginx安装包wget https : / /nginx.org/download/nginx-1.22.0.tar.gz
3、解压tar -zxvf nginx-1.22.0.tar.gz
4、cd nginx-1.22.0
5、./configure --prefix=/usr/local/nginx
6、make make install
目录结构:
3、基本操作
3.1、查看版本号:
//切换到sbin目录
cd usr/local/nginx/sbin/
//输入命令
./nginx -v
3.2、检查配置文件是否正确
//检查文件
./nginx -t
//打开配置文件
vim /usr/local/nginx/conf/nginx.conf
3.3、启动 停止
//启动Nginx服务使用如下命令:
./nginx
//停止Nginx服务使用如下命令:
./nginx -s stop
//启动完成后可以查看Nginx进程:
ps -ef grep nginx
//当修改Nginx配置文件后,需要重新加载才能生效,可以使用下面命令重新加载配置文件:
./nginx -s reload
4、配置文件结构
5、具体应用
5.1、部署静态资源
5.2、反向代理
正向代理:
反向代理:
正向代理与反向代理最简单的区别: 正向代理隐藏的是用户,反向代理隐藏的是服务器
和正向代理不同,反向代理相当于是为目标服务器工作的,当你去访问某个网站时,你以为你访问问的是目标服务器,其实不然,当你访问时,其实是由一个代理服务器去接收你的请求,
正向:客户端到服务器;反向:服务器到客户端;
反向代理服务器:
server {
listen 82;
server_name localhost;
location / {
proxy_pass http://192.168.121.129:8080;
#反向代理配置,将请求转发到指定服务
5.3、负载均衡
未涉及
十九、前后端分离开发
1、开发流程
2、Swagger
导入POM文件依赖
dependency
groupId com.github.xiaoymin /groupId
artifactId knife4j-spring-boot-starter /artifactId
version 3.0.2 /version
/dependency
配置:
package com.Aaron.reggie.config;
import com.Aaron.reggie.utils.JacksonObjectMapper;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.List;
* @Author: AlaskaBoo @Date: 2022-07-11 00:21
@Slf4j
@Configuration
@EnableSwagger2
@EnableKnife4j
public class WebMvcConfig extends WebMvcConfigurationSupport {
* 设置静态资源映射
* @param registry
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始静态资源映射...");
registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
* 扩展MVC框架的消息转换器
* @param converters
@Override
protected void extendMessageConverters(List HttpMessageConverter ? converters) {
// 创建消息转换器对象
MappingJackson2HttpMessageConverter messageConverter =
new MappingJackson2HttpMessageConverter();
// 设置对象转换器,底层使用Jackson将Java对象转为json
messageConverter.setObjectMapper(new JacksonObjectMapper());
// 将上面的消息转换器对象追加到mvc框架的转换器容器
converters.add(0,messageConverter);
@Bean
public Docket createRestApi() {
// 文档类型
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.Aaron.reggie.controller"))
.paths(PathSelectors.any())
.build();
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("瑞吉外卖")
.version("1.0")
.description("瑞吉外卖接口文档")
.build();
过滤
// 不需要请求的路径
String[] urls =
new String[] {
"/employee/login", "/employee/logout", "/backend/**", "/front/**","/common/**","/user/sendMsg","/user/login","/doc.html"
,"/webjars/**", "/swagger-resources", "/v2/api-docs"
3、Swagger常用注解
以上就是Springboot&&LinuX()的详细内容,想要了解更多 Springboot&&LinuX的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。