Spring-jt-Day01-缓存控制SpringBoot入门

版权声明:本文为闪耀太阳原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_16804847/article/details/116191096

1. 缓存控制

1.1 业务说明

用户有一个缓存的集合 static Map key=id号 value=User对象 根据id将User对象进行了缓存
要求:当用户第二次根据Id查询用户时,如果缓存中有数据,则直接返回!!!

1.2 业务分析

1).首选用AOP方式实现
2).通知方法: 使用环绕通知
3).切入点表达式: execution(…)

1.3 AOP切面实现

package com.jt.aop;

import com.jt.pojo.User;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
@Aspect
public class SpringAOP {

    private static Map<Integer,User> map = new HashMap();
    /**
     * 需求: 用户第一次查询走目标方法
     *       用户第二次查询走缓存  不执行目标方法
     * 判断依据: 如何判断用户是否为第一次查询?
     *       通过map集合进行判断 有数据 证明不是第一次查询
     * 执行步骤:
     *       1.获取用户查询的参数
     *       2.判断map集合中是否有该数据.
     *       true:  从map集合中get之后返回
     *       false: 执行目标方法,之后将user对象保存到Map中
     */

    //切入点表达式: 拦截service包中的所有方法
    @Around("execution(* com.jt.service..*.*(..))")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        Object result = null;
        //1.获取目标对象的参数
        Object[] args = joinPoint.getArgs();
        //2.强制类型转化为对象
        User user = (User) args[0];
        //3.判断map集合中是否有该数据  user的Id是唯一标识
        int id = user.getId();
        if(map.containsKey(id)){
            //map中有数据
            System.out.println("AOP缓存执行");
            //将获取的数据返回
            return map.get(id);
        }else{
            //map中没有数据 执行目标方法
            result = joinPoint.proceed();
            //将user对象保存到Map中
            map.put(id, user);
            System.out.println("AOP执行目标方法");
        }
        return result;
    }
}

2.SpringBoot

2.1 SpringBoot介绍

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

作用: SpringBoot的推出 让程序员更加专注于业务处理, SpringBoot是学习微服务框架基石
Spring 和SpringBoot关系 :
SpringBoot是Spring的工具API框架

2.2 SpringBoot入门案例

2.2.1 安装SpringBoot插件

1).IDEA破解版本,自带SpringBoot插件 所以无需安装
2).IDEA社区版本.需要手动安装一个SpringBoot插件.
Spring-jt-Day01-缓存控制SpringBoot入门_第1张图片

2.2.2 创建SpringBoot项目

1).选择插件
Spring-jt-Day01-缓存控制SpringBoot入门_第2张图片
2).编辑项目名称
Spring-jt-Day01-缓存控制SpringBoot入门_第3张图片
3).勾选依赖项
Spring-jt-Day01-缓存控制SpringBoot入门_第4张图片
4).初始化项目
Spring-jt-Day01-缓存控制SpringBoot入门_第5张图片
5).执行main方法检查运行是否正常
Spring-jt-Day01-缓存控制SpringBoot入门_第6张图片
如图所示表示程序正常.
Spring-jt-Day01-缓存控制SpringBoot入门_第7张图片

2.2.3 如果项目创建出问题

1).检查系统环境变量JDK
Spring-jt-Day01-缓存控制SpringBoot入门_第8张图片
2).检查maven配置
Spring-jt-Day01-缓存控制SpringBoot入门_第9张图片

2.3 关于SpringBoot项目说明

2.3.1 关于POM.xml文件说明

<!--1.parent标签  父级工程
			SpringBoot将现有主流的框架都进行了整合,
			在内部完成了jar包的依赖的配置.如果用户需要,则只添加某些核心包
			那么所有的依赖都会按照规则自动的下载.
	-->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

2.3.2 依赖配置项

<!--Springboot通过启动项的方法的 进行jar包文件的加载.
			同时这些功能中的配置项 SpringBoot有些也会自动的完成.
			无特殊的要求 无需手动的配置.
			开箱即用的思想!!!!
		-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

2.3.3 build标签

<!--
		关于build标签说明
		1.build标签它是maven工程的要求.
		2.作用: 完成项目的打包/发布等一系列的功能.
		3.该标签的使用是SpringBoot必须的,如果没有该标签则项目无法使用jar包运行
	-->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

2.4 SpringBoot Maven操作

2.4.1 项目打包

Spring-jt-Day01-缓存控制SpringBoot入门_第10张图片

2.4.2 java命令运行项目

1.将jar包文件放置到指定的目录下.
Spring-jt-Day01-缓存控制SpringBoot入门_第11张图片
2.dos命令
1.cd 切换目录
2.dir 查看当前目录结构
3.cls 清屏

3.java命令
Spring-jt-Day01-缓存控制SpringBoot入门_第12张图片
项目关闭:
1.直接将dos窗口关闭
2. ctrl + c 万能的关闭指令

2.5 关于jar包依赖传递性

2.5.1 问题描述

问题: 当引入webjar包时, 其他jar包文件如何依赖的?
Spring-jt-Day01-缓存控制SpringBoot入门_第13张图片

2.5.2 maven jar包依赖的传递性

例子:
1. A.jar ----> B.jar
2. B.jar -----> C.jar

maven原理说明:
1.当maven解析pom.xml文件时,会根据maven坐标查找指定的jar包文件. Spring-jt-Day01-缓存控制SpringBoot入门_第14张图片
2.当jar包加载完成之后,由于该项目也是maven工程,所以maven工具会解析该项目的pom.xml文件
根据POM.xml文件 再次加载依赖包 直到所有的jar包依赖加载完成
Spring-jt-Day01-缓存控制SpringBoot入门_第15张图片

2.5.3 maven 如何保证jar包依赖安全性(了解)

算法: SHA1
SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数

关于hash问题:
Spring-jt-Day01-缓存控制SpringBoot入门_第16张图片

核心原理说明:
判断传递前后的sha1算法是否相同,如果相同则标识传输正常,
如果不同,则文件有问题.
Spring-jt-Day01-缓存控制SpringBoot入门_第17张图片

3. SpringBoot学习

3.1 配置文件说明

3.1.1 关于properties文件说明

说明: 虽然pro文件是SpringBoot默认配置文件.但是其中编码格式比较繁琐,不便于查看.所以在项目中一般使用YML文件.
Spring-jt-Day01-缓存控制SpringBoot入门_第18张图片

3.1.2 关于yml文件说明

Spring-jt-Day01-缓存控制SpringBoot入门_第19张图片

3.2 @Value属性赋值

3.2.1 springBoot为属性赋值

在YML配置文件中编辑key=value结构,之后利用注解为属性赋值.

3.2.2 编辑YML配置文件

#YML文件语法
## 1.YML数据结构k-v结构
## 2.k与v 需要使用 :"空格" 连接
## 3.YMl配置文件有父子级关系 所以注意缩进项的位置
server:
  port: 8090    #配置端口
  servlet:      #web项目发布路径
    context-path: /  #/表示根目录

#定义dept属性值 YML文件默认支持UTF-8
dept:
  id: 100
  name: 财务部

3.2.3 为Dept对象赋值

Spring-jt-Day01-缓存控制SpringBoot入门_第20张图片

3.2.4 编辑springBoot测试类

Spring-jt-Day01-缓存控制SpringBoot入门_第21张图片

注意事项: 以后写代码都必须写到主启动类的同包及子包中

3.3 利用properties文件为属性赋值

3.3.1 编辑pro文件

Spring-jt-Day01-缓存控制SpringBoot入门_第22张图片

3.3.2 实现自动赋值

Spring-jt-Day01-缓存控制SpringBoot入门_第23张图片

3.4 lombok插件

3.4.1 安装插件

Spring-jt-Day01-缓存控制SpringBoot入门_第24张图片

3.4.2 添加jar包

<!--引入插件lombok 自动的set/get/构造方法插件  -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>	

3.4.3 lombok注解使用

Spring-jt-Day01-缓存控制SpringBoot入门_第25张图片

你可能感兴趣的:(spring,spring)