当前位置: 首页 > article >正文

1.4 spring八股文学习

  1. spring的特性
    IOC AOP 事务管理 mvc
  2. 什么是spring mvc
    m就是模型,V就是视图,然后C就是控制器
    v就是这个html等等,然后c就是一个控制器,m model层包含这个service和dao
  3. 什么是IOC
    就是控制反转,通过控制反转来生成对象,而不是传统的new一个对象,由spring 控制
    控制:创建,初始化销毁,由原来的程序员控制编程了IOC容器控制了
  4. 什么是依赖注入
    就是我们不再在类的内部创建对象new一个对象,而是说在外部建立一个对象之后由这个自动注入或者是构造器注入的方式注入
  5. 什么是基于AOP编程
    AOP就是可以把一些公共的业务操作,比如记录日志,或者获取程序运行时间等等封装起来,然后可以将实际的业务逻辑通过切入点表达式捕获,然后再利用joinpoint.proceed运行.这样就可以非侵入式的将原来的代码拓展。
    jointpoint 就是可以执行的原始方法
    advice就是提取出来的共用逻辑
    point cut 匹配连接点的条件

以下是一个AOP的简单例子
这是注解

package com.zy.aopdemo.anotation;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MYLog
{

}

这是切面类

package com.zy.aopdemo.utils;

import org.aspectj.lang.JoinPoint;
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.Arrays;
import java.util.HashMap;

@Aspect
@Component
public class logAspect {
 @Around("@annotation(com.zy.aopdemo.anotation.MYLog)")
    public void logAspect(ProceedingJoinPoint joinPoint) throws Throwable {
     System.out.println("这是一个记录日志的切面");
     HashMap<String, String> map = new HashMap<>();
//记录返回结果
     Object result = joinPoint.proceed();
     String resultString = result.toString();
     map.put("返回结果",resultString);


 //记录方法名字
  String name = joinPoint.getSignature().getName();
  map.put("name",name);


  //记录方法参数
  Object[] args1 = joinPoint.getArgs();
   String args1String = Arrays.toString(args1);
   map.put("args",args1String);

  System.out.println(map);
     System.out.println("这是tarhet后面");
 }
}


http://www.kler.cn/a/466955.html

相关文章:

  • ansible-性能优化
  • SRS 服务器入门:实时流媒体传输的理想选择
  • SQL中聚类后字段数据串联字符串方法研究
  • 2025元旦源码免费送
  • java.lang.Error: FFmpegKit failed to start on brand:
  • HTML-列表标签
  • 机器学习基础例子篇
  • 如何通过 5 种有用的方法将 iPhone 连接到戴尔笔记本电脑?
  • PDF文件提示-文档无法打印-的解决办法
  • 跟着问题学3.3——Faster R-CNN详解及代码实战(1)
  • 【AimRT】AimRT Hello World
  • 【Matlab算法】基于改进人工势场法的移动机器人路径规划研究(附MATLAB完整代码)
  • 【计算机视觉技术 - 人脸生成】2.GAN网络的构建和训练
  • 超越YOLO11!DEIM:先进的实时DETR目标检测
  • 服务器信息整理
  • 源代码编译安装X11及相关库、vim,配置vim(1)
  • IDEA 社区版 SpringBoot不能启动
  • QML自定义滑动条Slider的样式
  • [服务器][教程]Ubuntu24.04 Server开机自动挂载硬盘教程
  • 利用ChatGPT API构建智能应用的最佳实践
  • 深度剖析 DeepSeek V3 技术报告:架构创新与卓越性能表现
  • VR 合成层最多支持多少层?
  • 代码实战:基于InvSR对视频进行超分辨率重建
  • 现代光学基础5
  • 电子应用设计方案85:智能 AI门前柜系统设计
  • JVM实战—6.频繁YGC和频繁FGC的后果