- 博客(20)
- 收藏
- 关注
原创 Spring、SpringMVC和SpringBoot的区别是什么?
1、Spring框架就像一个家族,有众多的衍生产品,例如:Boot,security,jpa等等,但他们的基础都是Spring的ioc、aop等,ioc提供了依赖注入的容器,aop解决了面向切面编程,然后在此两者的基础上实现了其他延伸产品的高级功能;2、Spring MVC主要解决WEB开发的问题,是基于Servlet的一个MVC框架,通过XML配置,统一开发前段视图和后端逻辑。
2024-05-06 18:54:26 157 1
原创 Spring支持的bean作用域有哪些?
该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于WebApplicationtext环境。该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例。使用该属性定义Bean时,IOC容器仅创建一个Bean实例,IOC容器每次返回的都是同一个Bean实例。使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。1、signleton(单例)4、session(会话)
2024-05-06 18:16:31 200
原创 Spring事务的隔离级别有哪些?
在进行配置的时候,如果数据库和spring代码中的隔离级别不同,那么以spring的配置为主。read uncommitted(读未提交)repeatable read (可重复读)read committed(读已提交)serializable (串行化)
2024-05-06 15:52:45 141 1
原创 Spring框架中的单例Bean是线程安全的吗?
因此,在进行使用的时候,不要在bean中声明任何有状态的实力变量或者类变量,如果必须如此,也推荐大家使用TreadLocal把变量变成线程私有,如果bean的实例变量或者类变量需要再多个线程之间共享,那么就只能使用Synchronized,lock,cas等这些实现线程同步的方法了。无状态就不会存储数据,我们的controller,service和dao本身并不是线程安全的,只是调用里面的方法,而且多线程调用一个实例的方法,会在内存中复制遍历,这是自己线程的工作内存,是最安全的。
2024-05-06 15:44:54 151
原创 Spring框架中使用了哪些设计模式及应用场景?
4、策略模式:加载资源文件的方式 ,使用了不同的方法,比如:ClassPathResource,FileSystemResource,ServletContextResource,UrlResource 但他们都有共同的接口Resource;6、观察者模式:Spring中的ApplicationEvent,ApplicationListener,ApplicationEventPublisher。3、代理模式:在Spring AOP利用了 aop实现的,aop底层用到了动态代理。
2024-05-06 15:03:16 244
原创 如何实现一个IOC容器
在传统的应用程序中,我们是在对象中主动控制去直接获取依赖对象,这个是正转,反转是由容器来帮忙创建及注入依赖对象,在这个过程中,由容器帮我们查找注入依赖对象,对象只是被动的接受依赖对象。在传统的程序设计中,我们直接在对象内部通过new进行对象创建,是程序主动去创建依赖对象,而IOC是有专门的容器来进行对象的创建,即IOC容器来控制对象的创建。4、进行对象的初始化操作,也就是给类中的对应属性值进行设置,也就是进行依赖注入,完成整个对象的创建,变成一个完整的bean对象,存储在容器的某个map结构中。
2024-05-06 12:49:40 220
原创 说说你对AOP的理解?
3、通知(Advice):在切面的某个特定的连接点上执行的动作。8、织入:把切面连接到其他的应用程序类型或者对象上,并创建一个被通知的对象的过程。它是解耦而生的,解耦是程序员编码开发过程中一直追求的境界,AOP在业务的隔离上,做到了绝对的解耦,在这里面有几个核心的概念。2、连接点:在程序执行过程中某个特定的点,例如某个方法调用的时间点或者处理异常的时间点。也被称作被通知对象。7、AOP代理:AOP框架创建的对象,用来实现切面契约,在Spring中,AOP代理可以是jdk动态代理也可以是CGLIB代理。
2024-05-06 11:43:26 271
原创 说一下使用Spring的优势?
2、Spring框架之外还存在一个构建在核心框架之上的庞大生态圈,它将Spring扩展到不同的领域,如Web服务、REST、移动开发等。8、Spring的高度开放性,并不强制应用完全依赖Spring,开发者可自由选用Spring框架的部分或者全部。6、Spring的aop支持允许将一些通用任务如安全、事务、日志等进行集中式处理,从而提供了更好的复用。7、Spring的orm和dao提供了第三方持久层框架的良好整合,并简化了底层的数据库访问。3、低侵入式设计,代码的污染极低。
2024-05-05 23:32:58 220
原创 谈一下Spring事务传播机制?
总:事务的传播特性是指不同方法的嵌套调用过程中,事务应该如何进行处理,是用同一个事务还是不同的事务,当出现异常的时候是会回滚还是提交,两个方法之间的相互影响,在日常工作中,使用比较多的是required,required_new,nested。A方法调用B方法,AB方法都有事务,并且传播特性不同,那么如果A有异常,B怎么办?1、先说事务的不同分类,可以分为三大类:支持当前事务,不支持当前事务,嵌套事务。Supports——使用当前事务,没有的话就不用事务。Never——不要事务,存在当前事务就报异常。
2024-05-05 23:17:34 133 1
原创 Spring的事务是如何回滚的?
Spring的事务是如何回滚的?总:Spring的事务是由aop来实现的,首先要生成具体的代理对象,然后按照aop的整套流程来执行具体的操作逻辑,正常情况下要通过通知来完成核心功能,但事务不是通过通知来实现的,而是通过一个TransactionInterceptor来实现的,然后调用invoke来实现具体的逻辑。分:1、先做准备工作,解析各个方法上事务相关的属性,根据具体的属性来判断是否开始新事务。2、当需要开启的时候,获取数据库连接,关闭自动提交功能,开启事务。3、执行具体的sql逻辑操作。4
2024-05-05 22:48:17 196
原创 Sping的AOP的底层实现原理
5、从拦截链中依次获取每一个通知开始进行执行,在执行过程中,为了方便找到下一个通知是哪个,会有一个invocationInterceptor的对象,找的时候是从-1的位置依次开始查找并且执行的。aop(面向切面编程)是ioc的一个扩展功能,先有的ioc,再有的aop,只是在ioc的整个流程中新增一个扩展点而已:BeanPostProcessor。2、通过jdk或者cglib的方式来生成代理对象。1、代理对象的创建过程(通知,切面,切点)。4、根据之前定义好的通知来生成拦截链。
2024-04-28 13:00:26 222
原创 谈谈你对循环依赖的理解?
在实际调用的过程中,是没有办法来确定什么时候对象需要被调用的,因此当某一个对象被调用的时候,优先判断当前对象是否需要被代理,类似于回调机制,当获取对象之后根据传入的lambda表达式来确定返回的是哪一个确定的对象,如果条件符合,返回代理对象,如果不符合,返回原始对象。spring中bean对象的创建都要经历实例化和初始化(属性填充)的过程,通过将对象的状态分开,存在成品和半成品的对象的方式,来分别进行初始化和实例化,成本和半成品在存储的时候需要分不同的缓存来进行存储。A依赖B,B依赖A。
2024-04-27 01:13:57 222
原创 applicationContext和BeanFactory的区别?
BeanFactory是访问容器的接口,里面只是提供了某些方法的约束和规范,为了满足更多的需求,ApplicationContext实现了此接口,并在此接口的基础上做了某些扩展功能,提供了更加丰富的api调用。一般我们使用的时候applicationContext更多。
2024-04-26 18:00:17 110 1
原创 Spring中用到哪些设计模式?
策略模式:XmlBeanDefinitionReader,PropertiesBeanDefinitionReader。观察者模式:listener,event,multicast。责任链模式:使用aop的时候都会有一个责任链模式。单例模式:Spring中bean都是单例模式。装饰者模式:BeanWrapper。工厂模式:BeanFactory。委托者模式:delegate。适配器模式:Adapter。建造者模式:builder。代理模式:aop动态代理。
2024-04-26 17:54:06 211 2
原创 BeanFactory和FactoryBean的区别?
getObject:在此方法中可以自己创建对象,使用new的方式或者使用代理的方式都可以,用户可以按照自己的需要去随意的创建对象,在很多框架继承的时候都会实现FactoryBean接口,比如Feign.的时候,必须要严格的遵守bean的生命周期,经过一系列繁杂的步骤之后才可以创建出单例对象,是流水线式的创建过程。是用户可以自定义bean对象的创建流程,不需要按照bean的生命周期来创建,在此接口中包含了三个方法,都可以用来创建对象,只不过创建的流程和方式不同。getObjectType:获取对象的类型。
2024-04-26 15:00:18 160 1
原创 简单描述bean的生命周期
spring容器帮助我们去管理对象,从对象的产生到销毁的环节都由容器去控制,其中主要包含实例化和初始化两个关键环境,当然在整个的过程中也会有一些扩展点的存在,下面来详细描述各个环节和步骤。2、当bean对象创建完成之后,对象的属性值都是默认值,所以要开始给bean填充属性,通过populateBean方法来完成对象属性的填充,中间会涉及到循环依赖的问题,后面详说。1、实例化Bean对象,通过反射的方式来生成,在源码中有一个createBeanInstance的方法是专门用来生成对象的。
2024-04-26 14:48:21 327 1
原创 谈谈你对Spring IOC的理解
存储对象,使用map结构存储对象,在Spring中存储对象的时候一般有三级缓存,singletonObjects存放完整对象,earlySingletonObjects存放半成品对象,singtonFactory用来存放lambda表达式和对象名称的映射,整个bean的生命周期,从创建到使用到销毁,各个环节都是由容器来帮我们控制的。:依赖注入,将对应的属性注入到具体的对象中。:控制反转,原来我们使用的时候对象是由使用者控制的,有了Spring之后,可以将整个对象交给容器来帮我们进行管理(理论思想)。
2024-04-26 14:08:56 211 3
原创 2020-09-30
第二阶段1.数据库1.1连接mysql数据库mysql -uroot -p密码**-u:**后面的root是用户名,这里使用的是超级管理员root;**-p:(小写的p)**后面的root是密码,这是在安装MySQL时就已经指定的密码;1.2连接mysql服务器并指定ip和端口mysql -uroot -proot -h127.0.0.1 -P3306**-h:**后面给出的127.0.0.1是服务器主机名或ip地址,可以省略的,默认连接本机;**-P:(大写的P)**后面的3306
2021-11-18 01:10:47 72
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人