Java常见面试题之SSM | Spring Boot(不定时更新)

news2024/9/20 8:13:37

IOC DI机制

        IOC的意思是控制反转,控制的意思啊由Spring 工厂控制对象,反转是从我们主动创建好对象反转为等待Spring 工厂的注入

        DI是依赖注入,组件需要的依赖对象由容器注入,主要通过setter 构造器 接口三种注入方式注入.

AOP 面向切面编程

        AOP思想是做无侵入式的功能增强,即在不改变其原有方法代码的情况下,增加一定的功能.AOP是通过代理实现的.

        Spring中AOP的核心是动态代理,jdk动态代理或CGLIB代理.

        AOP分为:

  • 前置通知
  • 后置通知
  • 后置返回值通知
  • 异常通知
  • 环绕通知

        AOP的实现步骤

  1. 首先定义一个切面,创建一个类,在类上添加注解Aspect
  2. 生命一个方法,定一个那些方法需要被织入,使用Pointcut注解
  3. 定义增强操作,如前置通知 @Befare  后置通知@After 等等.
  4. 建立切面与切点之间的关联
@Aspect
@Component
public class LogAspect {
    
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    
    // 定义切点,对所有 public 方法进行拦截
    @Pointcut("execution(public * com.example..*.*(..))")
    public void logPointcut() {}
    
    // 定义前置通知,在目标方法执行前执行
    @Before("logPointcut()")
    public void beforeAdvice(JoinPoint joinPoint) {
        logger.info("beforeAdvice: " + joinPoint.getSignature().getName());
    }
    
    // 定义后置通知,在目标方法执行后执行
    @AfterReturning("logPointcut()")
    public void afterAdvice(JoinPoint joinPoint) {
        logger.info("afterAdvice: " + joinPoint.getSignature().getName());
    }
    
    // 定义异常通知,在目标方法抛出异常时执行
    @AfterThrowing(pointcut = "logPointcut()", throwing = "ex")
    public void throwingAdvice(JoinPoint joinPoint, Exception ex) {
        logger.error("throwingAdvice: " + joinPoint.getSignature().getName() + " occurs an exception, exception message is: " + ex.getMessage());
    }
}

Spring Boot自动装配原理

        从启动类上的注解一步步推吧

        Spring Boot 的启动类上需要添加@SpringBootApplication注解,看一下它的源码

         这里可以看到有两个注解,@SpringBootConfiguration 和 @EnableAutoConfiguration ,先看一下@SpringBootConfiguration

@SpringBootConfiguration

        查看它的源码,可以看到它上面包含了注解@Configuration,其中又包含了@Component

         也就是说添加了注解@Configuration或者SprigBootConfiguration的类都会成为SpringBoot的配置类,交给容器同一管理.

@EnableAutoConfiguration

        这个注解的作用在于开启自动配置的功能,其中包含了两个注解@AutoConfigurationPackage,和@Import(AutoConfigurationImportSelector.class)

@AutoConfigurationPackage

        这个注解的作用在于将主配置类,即添加了SpringBootApplication注解的启动类所在的包及包下包含的所有中间扫描并加载到spring工厂中.

@Import(AutoConfigurationImportSelector.class)

        这个注解的作用是将需要自动装配的类以全类名的方式返回.在类AutoConfigurationImportSelector中存在一个方法selectImports,其中调用了getAutoConfigurationEntry方法

         又依次调用了getCandidateConfigurations方法,loadFactoryNames方法,loadSpringFactories方法.

        loadSpringFactories方法会扫描所有在META-INF路径下的spring.factories文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

English Learning - L3 作业打卡 Lesson6 Day40 2023.6.13 周二

English Learning - L3 作业打卡 Lesson6 Day40 2023.6.13 周二 引言🍉句1: As they are expected to be hungry after their long journey, food is laid out for them.成分划分弱读连读爆破语调 🍉句2: Specially-made lanterns are hung outside each…

ASEMI代理光宝高速光耦LTV-6341特征,LTV-6341应用

编辑-Z LTV-6341参数描述: 型号:LTV-6341 储存温度Tstg:-55~ 150℃ 工作温度Topr:-40~ 125℃ 总输出电源电压(VCC –VEE):35V 平均正向输入电流IF:25mA 反向输入电压VR:5V 输入电流&…

第15章_锁

第15章_锁 事务的 隔离性 由这章讲述的 锁 来实现。 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等)&…

老板喜欢表现型管理者,而不是实干型管理者?

最近热搜榜:月薪几万运营总监只会管鸡毛蒜皮 很多老板在招聘方面往往会有些着急,他们可能会把同样的项目交给两个团队去完成,然后比较两个团队的表现。 其中,t1团队的负责人老王,整天忙于拍视频、发朋友圈、写汇报&am…

2023年江西省赣州市职业院校技能大赛(中职组) 网络安全竞赛试题(6月17日竞赛真题))

2023年江西省赣州市职业院校技能大赛(中职组) 网络安全竞赛试题 三、竞赛任务书内容 (一)拓扑图 (二)A模块基础设施设置/安全加固(200分) 一、项目和任务描述: 假定你…

宾利添越升级ACC自适应巡航+抬头显示HUD+Naim音响案例分享

大家好,我是小志bzs878,专注名车原厂升级,欢迎戳戳右上角“”号关注一下,持续为您带来精彩改装案例 今天装车一台宾利添越,几百个W的气场非常强大的豪车还需要加装什么项目? 车子还未上牌,今天…

python---------xpath提取数据------打破局限

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com 目录 为什么要学习XPATH和LXML类库 什么是XPATH 认识XML XML的节点关系 常⽤节点选择⼯具 节点选择语法 节点修饰语法 选择未知节点 lxml库 _____________________________________________…

层次分析法(MATLAB)

对之前的学习进行总结,整个比赛下来好像就用到了这个方法,最后也不知道对不对,反正最后还有点赶,就是很懵的那种,对于层次分析话的还是有点了解了,由于是纯小白,有错误的地方希望各位大佬能够指…

微服务远程调用openFeign整合

✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: 微服务探索之旅 ✨特色专…

go详细环境配置(windows)

下载go 安装包 官网: https://go.dev/dl/ 下载压缩包,解压 环境变量配置 GOROOT 配置你解压的目录 在Path中追加一条 %GOROOT%\bin 这里go对比JAVA还多了一个配置: GOPATH 配置go以后项目的地址 并在自己新建的GOPATH路径文件夹下新建三…

微服务中常见问题

Spring Cloud 组件 Spring Cloud五大组件有哪些? Eureka:注册中心 Ribbon:负载均衡 Feign:远程调用 Hystrix:服务熔断 Zuul/Gateway:服务网关 随着SpringCloud Alibaba在国内兴起,我们项目中…

MySQL安装教程(2023年,4月)

一、MySQL下载(安装版) 1、进入MySQL官网 官网地址:https://www.mysql.com/ 2、点击【DOWNLOADS】。 3、向下滑,点击【MySQL Community (GPL) Downloads】下载MySQL社区版。 4、点击【MySQL Installer for Windows】下载MySQL安…

pandas解决数据缺失、重复的方法与实践

1. 数据缺失 常见的数据缺失是指一条数据记录中,某个数据项没有值,延申到实际应用中,还有一种时间序列的缺失,例如按整点采集数据,缺少某一时刻的数据(缺少一整行数据)。 解决方法&#xff0c…

Type-C PD显示器方案简介

方案概述 LDR6020 Type-C PD显示器方案可以给显示器提供一个全功能C口,支持手机,电脑,游戏主机等一线投屏功能,同时支持PD快充输出。LDR6020内置了 USB Power Delivery 控制器和 PD BMC PHY 收发器,支持PD2.0/3.0等快…

leetcode:1848. 到目标元素的最小距离(python3解法)

难度:简单 给你一个整数数组 nums (下标 从 0 开始 计数)以及两个整数 target 和 start ,请你找出一个下标 i ,满足 nums[i] target 且 abs(i - start) 最小化 。注意:abs(x) 表示 x 的绝对值。 返回 abs(…

Jenkins之节点的使用

节点概念 Jenkins服务运行在一台服务器上,服务器的资源是有限的,Jenkins服务的构建速度受服务器资源影响,也是有限的。当我们需要构建的项目比较多或规模比较大的时候,可能会超出Jenkins的构建能力,超出其构建能力&am…

el-table合计行单元格合并、单元格样式修改

1、目标效果 源码放在下面,复制粘贴即可 (1)合计行放在头部,且字体颜色变粗、合计行背景色变粗 (2)合计行年龄算平均值且字体颜色为绿色,财产算总数且字体颜色为红色 2、原理 2.1、el-table中s…

clickhosue:8123和9000

8123和9000是ClickHouse数据库的两个不同的端口,它们具有不同的功能和使用方式。 8123端口(HTTP端口): 用于通过HTTP协议与ClickHouse数据库进行交互。 支持RESTful API和HTTP查询语法。 可以使用浏览器、curl等工具发送HTTP请…

【备战秋招】每日一题:4月8日美团春招第四题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第四题-田地行走 在线评测链接:P1169 题目描述 塔子哥是一个农民,他有一片 大小的田地,共 n 行 m 列,其中行和列都用从 1 开始的整数…

lua中chunk的理解

在Lua中,一个chunk是一段可执行的Lua代码。通常,一个chunk由一系列语句和表达式组成,可以是一个完整的程序文件,也可以是一个交互式控制台中输入的一行代码。 例如,下面是一个简单的Lua chunk: print(&qu…