spring自我提升--我要变秃,不秃不会变强

2024-01-03 04:08

本文主要是介绍spring自我提升--我要变秃,不秃不会变强,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

spring个人的理解

spring是什么,你该怎么回答。

答:是一个轻量开源一站式框架,在三层架构中都有自己的一个技术支持。其中最重要的2个概念aop,ioc。控制反转,面向切面。

mvc和三层架构的区别

(表示层(web层)、业务逻辑层(service层)、数据访问层(dao层))
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。

MVC可以是三层中的一个表现层框架,属于表现层。三层和MVC可以共存。

三层是基于业务逻辑来分的,而MVC是基于页面来分的。

什么是ioc(你对ioc有什么理解)

答: 控制反转,控制对象的创建,对象的管理。通过依赖注入,装配对象,管理对象的周期,举个例子,以前是我给你打电话,现在是我等你给我打电话。也就是说原来我们需要new去创建对象,现在将对象的创建交给spring来管理。

能说下ioc是怎么创建对象的?(DI依赖注入的方式)

答:调用无参构造方法,调用有参构造方法,使用工厂(静态和非静态)类创建

DI依赖注入

指Spring创建对象的过程中,将对象依赖的对象通过注入的形式添加到对象bean组件中

beanfactory和ApplicationContext有什么区别

applicationcontext接口继承beanfactory
Spring核心工厂是BeanFactory,采用的是延迟加载,在第一次加载getbean的时候初始化,而applicationContext在加载配置的时候初始化。ApplicationContext是对BeanFactory扩展。

spring是怎么解决多线程安全问题的呢

使用threadlocal,和scope属性设置为prototype,一般这两种方式。
如果bean的作用域是singleton,也就单例的时候。spring通过threadlocal,给每个线程提供一个线程独立的变量空间,讲到这也已经大概了解spring怎么通过threadlocal来实现安全性,以及为什么不使用同步锁,作用域为prototype,表示每次线程创建bean的时候都是不同的实例,就不会存在数据被篡改。因为都不是同一实例,数据存放的地址也不相同。

什么是aop

aop面向切面,面向对象通过继承,接口来实现从上往下的关系,aop关注的是横向的,比如日志,日志往往分布在不同的对象中,并且与所在的对象的核心功能没有任何的交集。降低代码的重复。
(个人的理解,就是当我们执行某一个方法时候,在此方法之前执行另一个方法(打一个日志),或者之后等等,在不修改原来的方法,加强方法,我理解成装饰模式,(个人联想认为))

aop怎么实现的

通过动态代理模式,创建代理对象,增强调用用目标对象方法。
(如果不清楚动态代理,可以百度看看静态代理是怎么写的。)
动态代理方法有2种,如果都实现了相同的接口,叫jdk实现,如果是继承相同的父类,叫gclib实现

aop能做些什么呢

日志和事务管理,日志的解释就不说了,什么是事务管理呢,
先说下数据库事务,如果我要修改表中的一条记录的话,如果我的sql有问题,那么我这个还能成功?答案是不能的。要么不成功,事务回滚,要么成功,数据修改
分享一个网站 https://blog.csdn.net/chinacr07/article/details/78817449
aop事务管理,就是对数据的一系列的操作,要不全部提交,只要有一条有错误,就事务回滚之前的操作。有分为编程式和声明式,声明式简单,就在配置文件配置,然后使用@Transactional

spring bean 的生命周期

1.定义bean,在配置文件中。
在配置文件里面用来进行定义。
2.初始化bean,实例化bean
A.在配置文件中通过指定init-method属性来完成
B.bean类实现org.springframwork.beans.factory.InitializingBean接口
3.bean调用
有4种方式可以得到bean实例,并进行调用(无参数(setter),有参数(构造方法),工厂类)。
(4)bean销毁
销毁有两种方式
A.使用配置文件指定的destroy-method属性
B.bean类实现org.springframwork.bean.factory.DisposeableBean接口
(个人的一个理解:ioc的底层用通过dom4j解析xml,反射机制,获得获得类实例,bean容器中,并提供getBean方法。然后通过beanfactory工厂模式,通过getbean获得需要的对象实例)

自动装配和依赖注入

首先说明这个2个概念是在一起的,我中有你,你中有我。
依赖注入的本质就是装配,装配是依赖注入的具体行为。慢慢理解。自动装配的方式有默认的"ref",byname,bytype,构造方法等。而依赖注入分为setter,构造方法,工厂方法

springmvc

最最最核心的前端控制器。懂了这个你其他的拓展知识你都明白
(每一步的操作都要经过前端控制器,我们每一步操作都基本有前端控制器)
在这里插入图片描述
在这里插入图片描述

springmvc常用的注解和使用

分享一个网址:https://blog.csdn.net/u010648555/article/details/76299467

1,controller,service,repository,component

这4个注解,当前在功能上没有任何区别,被注解的类都会初始化成一个bean,然后交予spring统一管理,为了实现分成管理,建议使用的bean注解
装配bean的注解
autowired
resource
两种都可以使用在属性,和属性setter方法上,功能相同,都是装配注入bean.
不同之处在于,autowired的是通过bytype,的形式通过bean的类型,如果有重复的类型就需要使用@Qualitied指定类的名称。
resource,默认是通过byname,但是也可以使用bytype,灵活性上resource好,但autowired的方式更简单快捷。

2 requestmapping

用于处理url地址映射,通过地址找到具体的接口方法。可以使用在类前面,方法前面,可以用通配符*。

3 requestparam

该注解用于方法形参,将请求的参数值传递给形参,默认是该参数必填,但也可以说required = false.

4 requestbody与responsebody

简单的说,用与json数据接收和发送。
requestbody用于方法形参,通过一个pojo类来接收传递的json, responsebody用于返回json类型

5.PathVariable

支持url占位符,将占位符的值赋予给参数。该该类的事务属性。

6.Transactional

一般是定义在类上,这样这个类的所有public方法都
分享一个网站:https://www.cnblogs.com/yepei/p/4716112.html

mvc配置文件分析

对一些配置文件的配置不是太明白,或者说当时了解然后又忘记了这次主要将通过springmvc从整体,到细节描述
配置文件的入口时web.xml,配置文件又什么呢,比如数据的连接,最开始我们通过jdbc 去来接数据
每次都要forname 加载驱动,获得连接connoction,获得statement执行sql, 获得resultset 获得结果集,然后遍历结果集
关闭有顺序的关闭资源。这里回顾一下。这样是特别浪费时间的,你每操作一次数据库就连接一次数据库,这样是不现实的。

首先需要配置(2种)在web.xml中

ContextLoaderListener,在web.xml启动的时候去监听
contextconfiglocation,去加载spring配置文件。

配置前端控制器。

我们通常的配置时在spring文件。

https://www.cnblogs.com/wxisme/p/4924561.html
https://blog.csdn.net/liuwenhao1996/article/details/75148900
https://blog.csdn.net/l00149133/article/details/78982336

spring我们需要配置datasource数据源,sqlSessionFactory ,mybatis的dao层的扫描器

bean对象
handlermapping
handleradpter

viewresolver视图解析器

关于aop配置transactional。transactionManager对数据库事务控制。

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" />
</bean>
<!-- enable transaction annotation support -->
<tx:annotation-driven transaction-manager="transactionManager" />

aop配置,通知配置。

这篇关于spring自我提升--我要变秃,不秃不会变强的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/564528

相关文章

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具