1. 京淘我的项目架构设计
1.1 互联网行业特点
- 高并发
- 分布式 服务器数量调配平衡
- 海量数据处理(大数据方向)
- 安全性问题: 网贷(11%) 交易的安全性(区块链)
1.2 京淘我的项目架构设计
2. 筹备工作
2.1 软件:(IDEA、MariaDB【sqlyog】)
2.2 配置文件
1.pom.xml(springboot——Demo1)
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--1.parent 标签的作用 ***
作用:1:解决版本抵触问题
2:是一个聚合工程(pom)-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--2.maven 坐标 ***
maven 我的项目标识:组 Id/ 项目名称 / 版本号 称为 maven 坐标
作用:1:采纳坐标的模式
2:在本地仓库中 jar 包地位就是坐标的地位,maven 工作通过坐标查找执行的 jar
--> <groupId>com.jt</groupId>
<artifactId>springboot_demo01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo01</name>
<description>Demo project for Spring Boot</description>
<!--3.maven 我的项目配置信息 ***
--> <properties>
<!-- 指定了 jdk 版本信息 -->
<java.version>1.8</java.version>
<!--
跳过测试类打包
默认条件下程序打包会执行测试了类 如果测试类有问题, 则程序打包失败.
--> <skipTests>true</skipTests>
</properties>
<!--4. 依赖
手动依赖项 该依赖项被 springBoot 进行了高度的整合
springBoot 帮忙大家动静的生成了配置我的项目, 简化了配置的步骤
该配置称之为自动化的配置信息 开箱即用: 只须要导入 jar 包简略的配置即可实现对应的性能.
--> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--5.maven 插件的阐明
SpringBoot 利用 maven 管理工具进行我的项目打包 / 公布 / 等操作
该标签必须增加 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- properties 阐明
1. 语法: k- v 构造 key=value
2. 数据类型: 默认是 String 数据类型 不要增加多余的 "" 号
3. 字符数据类型: properties 的默认的加载的编码格局为 ISO-8859-1 所以增加中文是须要字符转意.
4. 毛病: 所有的 key 都必须手动的编辑 没有方法复用 所以引入了 yml 配置
- YML 配置文件阐明
1. 语法 K- V 构造 写法上 key:value 本质上 key=value
key:value 两头应用 (:+ 空格) 分隔
key 与 key 之间有父子级关系的. 所以写的时候留神缩进项.
YML 配置文件默认的格局都是 UTF- 8 编码 所以能够间接编辑中文
- SpringBoot 环境切换问题
# 该配置文件, 当 spring 容器启动时加载.
spring:
profiles:
active: prod
---
# 定义开发环境
spring:
profiles: dev
server:
port: 8080
#配置 redis 节点信息
redis:
host: 192.168.1.100
port: 6379
# 如果须要多环境配置则须要将 YML 环境宰割
---
spring:
profiles: prod
server:
port: 8090
#配置 redis 节点信息
redis:
host: 10.0.0.1
port: 6379
5.@Value 注解属性赋值
阐明: 因为 YML 配置文件个别都是配置第三方的整合的信息, 如果将业务的数据增加到 YML 中则不标准. 最好将业务的操作增加到 properties 文件中.
@RestController //@ResponseBody 将返回值转化为 json 串应用 程序将不会执行视图解析器 间接返回
//@Controller //String 类型 /moduleAndView
public class RedisController {
/**
* 实现思路:
* 如果能够从容器中获取数据的化, 间接赋值给属性. 则能够实现解耦
* 如何实现:
* 注解实现: @Value("${配置文件的 key}")
* 表达式: spel 表达式
*/
@Value("${redis.host}")
private String host;
@Value("${redis.port}")
private Integer port;
// 如果应用 RestController 返回值为 String 类型则返回字符串自身
// 如果返回的是一个对象 则后果必然是该对象的 JSON 数据.
@RequestMapping("/getMsg")
public String getMsg(){return host + ":" + port;}
}