SSM框架

简单介绍下Spring?

Spring是一个开源的框架,目的是在简化java开发,提高开发效率,他有三大核心组件,IOC(控制反转) , DI(依赖注入) , AOP(面向切面编程)

谈谈你对SpringIOC的理解

springIOC是Spring的核心组件,IOC是一种设计模式,控制反转,反转的是对象的创建权,将对象的创建交给spring来管理

spring中的bean是线程安全的吗?

不是安全的,从某种意义上讲是安全的,因为他是无状态的,没有存储数据

解决方法有两种:

  1. 1.修改bean的作用域,singleton改为非单列 prototype

  1. 将共享变量放到Threadlocal线程中,Threadlocal是线程私有变量,线程间隔离,解决了线程安全问题

Spring AOP和AspectJ AOP有什么区别?
  • Spring AOP是运行时增强,AspectJ AOP是编译时增强

  • springaop是基于代理,AspectJ AOP是基于字节码操作

  • AspectJ功能相对springaop更加强大,如果切面比较少的话,可以选择SpringAOP,如果切面相对比较多的时候选择AspectJ相对springaop快

Spring中的bean生命周期?

BeanDefinition -> 实例化 -> 依赖注入 -> 初始化 -> 使用 -> 销毁

1.先通过配置文件或者注解拿到所有的BeanDefinition,然后将他们放到BeanDefinitionMap中

2.从BeanDefinitionMap中拿到bean定义并进行实例化 new

3.对bean属性进行赋值

4.对属性进行赋值

5.初始化完成后,bean真正创建完成,将bean放到spring容器中,ConcurrenthashMap 然后通过getbean就可以拿来使用了

6.容器销毁时,bean也会随之销毁

Spring 框架中都用到了哪些设计模式?

1.工厂模式:BeanFactory就是工厂模式的简单体现,创建对象的实例

2.代理模式:springaop就是基于动态代理模式,动态模式基于JDK的动态代理和CGLIB字节码技术

3.单例模式:bean默认是单例模式

4.模板方法:解决重复代码的问题

5.观察者模式:定义对象间的一种一对多的依赖关系,一个对象状态发生变化时其他依赖对象可以得到通知被制动更新

你用到Spring中的哪些注解 ?

@Component :标识了一个受Spring管理的组件,泛指组件

@Respository: 标识持久层,数据访问组件,即DAO组件

@Service: 标识业务层组件

@Controller :标识表现层,控制层组件

@RequestMapping 是用来处理请求地址映射的注解,可用于类或方法上

@Resource和@Autowired都是做bean的注入时使用,都可以写在字段上,或者是setter方法上

Spring事务管理的方式有几种?

声明式事务:实现方式有两种,基于XML的配置文件和注解的形式实现

编码方式:提供编码的形式管理和维护事务

Spring事务中的隔离级别有哪几种?

读未提交:ISOLATION_READ_UNCOMMITTED

读已提交:ISOLATION_READ_COMMITTED

可重复读:ISOLATION_REPEATABLE_READ

串行化:ISOLATION_SERIALIZABLE

MySQL默认的隔离级别是可重复读(ISOLATION_REPEATABLE_READ),Oracle默认使用的隔离级别是读已提交(READ_COMMITTED)

Spring中什么时候 @Transactional会失效?

如果某个方法被private修饰,@Transactional会失效,因为底层使用的CGLIB技术,子类不能重载父类的private()方法,所以@Transactional会失效

Spring的事务传播行为?

事务传播行为:指的是一个事务方法被另外一个事务方法调用

1.PROPAGATION_REQUIRED,如果当前没有事务,创建一个新的事务,如果存在事务,则加入当前的事务,这是spring默认的事务处传播方式

2.PROPAGATION_SUPPORTS:支持当前是事务,如果存在事务就加入,没有事务就以非事务执行

3.PROPAGATION_MANDATORY:支持当前事务,如果存在就加入事务,没有抛出异常

4.PROPAGATION_REQUIRES_NEW:创建新事务,不管存不存在事务都会创建新的事务

5.PROPAGATION_NOT_SUPPORTED:以非事务方式执行,如果存在事务就将当前事务挂起

6.PROPAGATION_NEVER:以非事务方式执行,如果存在事务,就抛出异常

7.PROPAGATION_NESTED:如果当前存在事务就在当前事务嵌套执行,如果没有事务就按照默认执行方式执行

BeanFactory和ApplicationContext有什么区别?(高频)

BeanFactory是懒加载,不会在容器启动的时候就去实例化bean,而是从容器中拿出的时候才会实例化bean

ApplicationContext是在容器加载的时候就全部实例化bean,可以为bean配置lazy-init=true来延迟实例化前期占用资源大

Spring Bean有哪些作用域,它们之间有什么区别?(高频)

singleton:单例他是beanfacatory自身来维护的,这种bean不管接收多少请求容器中只有一个bean的实例

prototype:非单例,为每一个请求的bean提供一个实例

request:会为每一个客户端的请求创建一个bean实例,请求结束bean会被垃圾回收器回收

session:session过期bean会随着销毁,每一个session中有一个bean实例

Spring中的事务是如何实现的 ?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值