关于java:第四阶段笔记-Jingtaoday01

day 01 京淘我的项目介绍,SpringBoot启动原理

此文档是在课上依据操作流程整顿,更多细节请参见刘老师的专栏

江哥的专栏

《cgb2008-京淘day01》

一. 京淘我的项目整体架构图设计

​ 工作3~5年之后

​ 单体架构模式:将所有的功能模块写到一个tomcat服务器中。tomcat并发能力:200/秒,带宽:10M。

​ www.jd.com:80 “IP+端口”的形式只能拜访一个服务器

防火墙 /网络安全
    --> 反向代理服务器(公司拜访的惟一入口) --> 服务分发给不同的tomcat服务器
      --> 缓存服务器集群... --> 中间件[爱护数据库的规定]
        --> 数据库代理 --> 数据库服务器(本人保护)主机/写操作 --> 从机(备份)/读操作 [读写拆散]
                                                      --> 从机... [负载平衡][高可用]
二. 京淘项目表设计
  1. 表与表关系

    秘籍:设想成为找对象的业务场景!!!(从心田(本人)登程)

    i. 一对一:商品与形容

    ​ 1) 商品与形容一对一;2) 形容与商品一对一

    ​ 关联关系:本人的主键\<pk>充当他人的外键\<fk>,主键和外键统一。

    ii. 一对多:分类与商品

    ​ <u>有外键的表个别与关联表是一对一,关联表与加外键的表是一对多。</u>

    ​ 1) 分类与商品一[主]对多;2) 商品与分类一[主]对一[外]

    ​ 关联关系:主键不能够反复,个别条件下<u>外键能够反复</u>,主键和外键不统一。

    iii. 多对多(本质:双向一对多):角色与权限

    ​ 1) 一个角色对应多个权限; 2) 一个权限被多个角色所具备

    ​ 表的个数:3张表 –> 角色表[role_id\<pk>] + 权限表[pri_id\<pk>]

    ​ + 角色权限关系表[id,role_id\<fk1>,pri_id\<fk2>] 联结主键:<fk1,fk2>

  2. 导入数据库

    导入的命令 source 门路:/xxx.sql

    i. 装置数据库工具 — SQLyog

    ii. 导入数据库

    ​ 右键 –> 从脚本文件创建数据库 –> 抉择jtdb.sql

三. 切换IDEA工作空间,批改配置
  1. 筹备空文件夹 — CGB2008_Jingtao
  2. 装置lombok的插件
  3. 配置键位(快捷键)
  4. 批改鼠标的缩放,智能提醒
  5. 构建我的项目
  6. 配置maven
  7. 设置主动保留
  8. 启动构造方法的主动提醒
四. 实现SpringBoot手动创立/理解什么是开箱即用原理
  1. 创立我的项目
  2. 引入jar包
  3. 对于Maven阐明

    Maven是一站式项目管理工具,能够创立我的项目,治理我的项目,我的项目打包,依赖、公布等。

    i. 对于Maven坐标的阐明

    ​ 地方仓库jar <–> 代理(私服镜像-阿里云) <–> 本地库

    ​ Maven中有很多其余机构开源的jar包,未来通过坐标的模式进行对立治理。

    ​ jar包地位:D:\JavaDevelop\localRepo\org\springframework\boot\spring-boot-starter\2.4.0

    <dependency>
        <groupId>org.springframework.boot</groupId>    公司域名倒写
        <artifactId>spring-boot-starter-web</artifactId>    我的项目名
        <version>2.4.0</version>    版本号
    </dependency>

    ii. 对于maven中jar包依赖传递性的阐明

    ​ 在maven我的项目中如果A.jar依赖B.jar,B.jar依赖于C.jar。当程序通过maven引入A.jar的时候会主动引入B/C.jar。

    ​ 原理:1) 当用户增加jar包文件时,maven工具会通过坐标加载jar包;2) 加载实现加载完jar包之后,会解析其pom文件,看是否还有jar包依赖。

    iii. maven工具如何保障jar包文件平安得传递

    ​ SHA-1(平安散列算法-1)能够生成160位(20字节,40个十六进制数)的”音讯摘要”。例如:junit-4.12.jar.sha1

    ​ 常识:1) 如果数据雷同,它的哈希值肯定雷同;2) 一个数据10k,一个数据1G,计算哈希值速度约等于一样快。

    ​ A.jar –SHA1–> 音讯摘要A.jar.sha1 -传输-> B.jar –SHA1 –> 音讯摘要B.jar.sha1(比照是否雷同)

    ​ http协定 –[数据证书 寰球惟一 非对称加密]–> https协定

    ​ 对称加密:加密和解密的秘钥一样,不能保障相对平安。

    ​ 非对称加密:加密秘钥和解密秘钥配合应用,单看一把不能看出全貌。

  4. pom.xml文件中标签的作用(一)

    i. 编辑在maven中展示的名称

    <name>springboot_demo1</name>

    ii. maven打包形式

    <!-- 打包品种:jar war pom(聚合我的项目 大型项目) -->
    <packaging>jar</packaging>

    iii. 打包

    ​ clean(清空target目录) –> compile(编译源文件,生成target目录) –> install(在target目录和本地库中生成我的项目的jar包)

    iv. jar包文件运行测试

    命令: java -jar xxxx.jar
    退出: ctrl+c 
  5. 对于环境阐明

    i. 对于JDK配置

    ​ 查找jdk的根目录 –> 配置环境变量 (JAVA_HOME,%JAVA_HOME%\bin)

    ii. 对于Maven阐明

    ​ maven装置门路 –> maven配置文件

  6. pom.xml文件中标签的作用(二)

    i. dependencies标签

    <!-- 2.依赖的作用:依赖须要的jar包文件 -->
    <dependencies>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <!-- spring-boot-starter-xxx 启动项 开箱即用
             只须要引入特定的jar包,进行简略的配置,即能够应用该性能-->

    ii. build标签

    <!-- 3.build标签的作用:
       让程序应用maven命令时,依照指定插件运行 必须配置-->
    <build>
       <plugins>
          <plugin>
  7. SpringBoot启动流程

    @SpringBootApplication

    i. 元注解阐明

    ​ 润饰注解的注解称之为元注解

    @Target({ElementType.TYPE})  //该注解对类无效
    @Retention(RetentionPolicy.RUNTIME)  //该注解运行期无效
    @Documented  //生成文档信息
    @Inherited  //该注解是否容许被继承

    ii. 排除过滤器启动

    ​ 作用:因为SpringBoot须要主动加载的项很多,要排除掉一些不加载的项

    @ComponentScan(
        excludeFilters = {@Filter(
        type = FilterType.CUSTOM,
        classes = {TypeExcludeFilter.class}
    ), @Filter(
        type = FilterType.CUSTOM,
        classes = {AutoConfigurationExcludeFilter.class}
    )}
    )

    iii. 配置类

    ​ 通过注解得悉,主启动类就是一个配置类,作用是在启动时有第三方的配置,则被动地加载,大的配置文件中蕴含小的

    @SpringBootConfiguration

    iv. 自动化地配置

    ​ 1) @AutoConfigurationPackage:指定了SpringBootq启动时包扫描的门路 — 主启动类的同包或子包下;

    ​ 2) @Import({AutoConfigurationImportSelector.class}):该注解次要示意当程序启动时,SpringBoot外部会有多个选择器顺次启动。选择器启动时会去加载指定的jar包文件,这时开箱启用才能够应用。

    @EnableAutoConfiguration

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理