spring相关

1、谈谈你对spring AOP的理解,作用等等?

在Spring的Aop中,使用的Advice(通知)来增强被代理类的功能。Spring实现这一AOP功能的原理就使用代理模式(1、JDK动态代理。2、CGLib字节码生成技术代理。)对类进行方法级别的切面增强,即,生成被代理类的代理类, 并在代理类的方法前,设置拦截器,通过执行拦截器重的内容增强了代理方法的功能,实现的面向切面编程。

2、谈谈你对spring   IOC和DI的理解,它们有什么区别?

IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spring框架管理,简单说,就是创建UserService对象控制权被反转到了Spring框架

DI:Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件

IOC(控制反转)容器几个关键点:
1.谁控制谁、为什么叫反转:IOC容器控制,而以前是应用程序控制,所以叫反转
2.控制什么?:控制应用程序所需的资源(对象,文件)
3.为什么控制?:解耦组件之间的关系
4.控制的哪些方面被反转了?:程序的控制权反转了:从应用程序控制反转到了IOC容器
DI:依赖注入
1.谁依赖谁?应用程序依赖IOC容器
2.为什么需要依赖?应用程序依赖于IOC容器装配类之间的关系
3.依赖什么东西?依赖了IOC的装配功能
4.谁注入谁?IOC容器注入应用程序
5.注入什么东西?注入应用程序需要的资源(类之间的关系)

3、spring Bean的生命周期和作用域?

总结 :

第一:bean的实例化时机

spring管理的bean在默认情况下是会在服务器启动的时候初始化的。 
bean设置了scope为prototype(原型)之后,会每次使用时生产一个 

bean设置了lazy-init=”true”后,启动服务器不会马上实例化,而是在用到的时候被实例化。

第二:再说bean从实例化---到销毁的 整个过程

①、实例化Bean(相当于new),实例化对象被包裹在beanWrap对象中

②、设置对象属性(依赖注入)

③、Spring对象会检测该对象是否实现BeanNameAware接口

       ⑴、如果实现了BeanNameAware接口,会调用setBeanName(string beanId)

④、检测是否实现了BeanFactoryAware,如果实现了该接口,会调用setBeanFactory(),传递spring 工厂

⑤、经过以上几步,Bean对象正确构造,如果还想在Bean使用前自定义处理,可通过BeanPostprocessor实现

       提供了两个函数:

        ⑴postprocessBeforeInitialization(Object obj,string beanName)

            当前初始化对象会被传入,可以对其处理

        ⑵postprocessafterInitialization(Object obj,string BeanName)

⑥、InitailizingBean 与<bean   .....     init-method="">

       InitailizingBean 只有afterpropertiesset(),该方法不传入初始化对象

⑦、DisposableBean 与 <bean  .....    destroy-method="">

       执行销毁

参考:https://www.cnblogs.com/hadoop-dev/p/6912652.html

4、Spring的事物管理

Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。

Spring为各个平台 如:JDBC、Mybatis、hibernate等提供了对应的事物管理器

Spring事务处理,是将事务处理的工作统一起来,并为事务处理提供通用的支持。

2工作原理及实现

 

a划分处理单元——IOC

 

由于spring解决的问题是对单个数据库进行局部事务处理的,具体的实现首相用spring中的IOC划分了事务处理单元。并且将对事务的各种配置放到了ioc容器中(设置事务管理器,设置事务的传播特性及隔离机制)。

 

 

bAOP拦截需要进行事务处理的类

 

Spring事务处理模块是通过AOP功能来实现声明式事务处理的,具体操作(比如事务实行的配置和读取,事务对象的抽象),用TransactionProxyFactoryBean接口来使用AOP功能,生成proxy代理对象,通过TransactionInterceptor完成对代理方法的拦截,将事务处理的功能编织到拦截的方法中。

 

读取ioc容器事务配置属性,转化为spring事务处理需要的内部数据结构(TransactionAttributeSourceAdvisor),转化为TransactionAttribute表示的数据对象。

c对事物处理实现(事务的生成、提交、回滚、挂起)

 

spring委托给具体的事务处理器实现。实现了一个抽象和适配。适配的具体事务处理器:DataSource数据源支持、hibernate数据源事务处理支持、JDO数据源事务处理支持,JPAJTA数据源事务处理支持。这些支持都是通过设计PlatformTransactionManagerAbstractPlatforTransaction一系列事务处理的支持。

 

       为常用数据源支持提供了一系列的TransactionManager

另外,spring的事物管理还涉及到事物的传播行为,Spring事物的隔离级别

5、Spring 如何处理线程并发问题?ThreadLoal

6、spring中用到的设计模式?

     ①第一种:简单工厂:spring中的BeanFactory就是简单工厂模式的体现

      ②第二种:单例模式:Spring下默认的bean均为singleton

      ③第三种:适配器(Adapter):AOP

      ④第四种:观察者

               定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
              spring中Observer模式常用的地方是listener的实现。如ApplicationListener。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值