`
dsxwjhf
  • 浏览: 70709 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

Spring 常见问答

阅读更多
BeanFactory 和 ApplicationContext 的区别
1. ApplicationContext 是 BeanFactory 的扩展,提供了更丰富的功能,如 AOP ,国际化,事件通知等;
2. 在使用上, BeanFactory 更面向编码, ApplicationContext 更面向配置;
3. BeanFactory 采用懒加载, ApplicationContext 在应用程序启动时加载所有 Bean 。

Spring 注入的几种方式
1. Set 注入
2. 构造器注入
  <bean name="xx" class="yy">
    <constructor-arg index="0" ref="aa"></constructor-arg>
    <constructor-arg index="1" ref="bb"></constructor-arg>
  </bean>
3. 静态工厂方法注入
  public class DaoFactory {
    public static final UserDao getUserDaoImpl() {
      ......
    }
  }
  <bean name="xx" class="yy">
    <property name="userDao" ref="userDao">
  </bean>
  <bean name="userDao" class="DaoFactory" factory-method="getUserDaoImpl" />
4. 实例工厂方法注入
  public class DaoFactory {
    public UserDao getUserDaoImpl() {
      ......
    }
  }
  <bean name="xx" class="yy">
    <property name="userDao" ref="userDao">
  </bean>
  <bean name="daoFactory" class="DaoFactory" />
  <bean name="userDao" factory-bean="daoFactory" factory-method="getUserDaoImpl" />

Spring 事务的隔离级别( Isolation )
1. ISOLATION_DEFAULT: 这是一个 PlatfromTransactionManager 默认的隔离级别,使用数据库默认的事务隔离级别。
2. ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
3. ISOLATION_READ_COMMITTED: 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。
4. ISOLATION_REPEATABLE_READ: 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
5. ISOLATION_SERIALIZABLE: 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻像读。

什么是脏读,不可重复读,幻读?
脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据, 那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
不可重复读:指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。
幻读:指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

Spring 事务传播行为( Propagation )
PROPAGATION_REQUIRED: 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS: 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY: 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW: 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED: 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER: 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED: 它与 PROPAGATION_REQUIRES_NEW 的区别是, PROPAGATION_REQUIRES_NEW 另起一个事务,将会与它的父事务相互独立,而 Nested 事务和它的父事务是相依的,他的提交是要等和他的父事务一块提交的。也就是说,如果父事务最后回滚,它也要回滚的。

共享锁和排它锁
原文: http://www.cnblogs.com/edwinchen/p/4171866.html
共享锁类似于 Java 里面的读写锁: 允许多个线程同时读,但只允许一个线程写。读的时候写线程被阻塞,写的时候读线程被阻塞。
排它锁类似于普通的 synchronized 或者普通的 Lock ,永远只有一个线程在工作。
如果是在 read committed 或 repeatable read 下,普通的 select 语句并不会进行锁操作,其它 session 可以照常更新或插入操作。所以在这里面就可以发现,如果只是普通 select ,不管在不在事务中, mysql 都不会将 select 加锁,所以根本无法阻止其它事务插入记录。
select ...... for update 会加上排它锁,防止这个问题。

表锁和行锁
原文: http://www.jb51.net/article/50047.htm
页级:引擎 BDB 。
表级:引擎 MyISAM ,理解为锁住整个表,可以同时读,写不行。
行级:引擎 INNODB ,单独的一行记录加锁。
表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许。
行级,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。
页级,表级锁速度快,但冲突多;行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。
分享到:
评论

相关推荐

    25个经典的Spring面试问答

    25个经典的Spring面试问答,Spring面试常见的问题与回答。 在准备Spring框架的面试时,应掌握的核心主题和概念包括: Spring Framework简介:了解Spring框架的核心理念,包括依赖注入(DI)和面向切面编程(AOP)。...

    Spring面试题目经典问答.zip

    Spring面试题目经典问答,Spring常见面试题汇总--本人收集了一些大家在面试时被经常问及的关于Spring框架问题,这些问题有可能在你面试时被问到,请大家参考。

    Maven创建Spring+SpringMvc+MyBatis包含网上常见问题解答

    Maven创建Spring+SpringMvc+MyBatis 在网上有好多例子但是出现问题都不进行汇总,这里不仅有代码还把一些大家提出的问题进行的解答,希望大家工作顺利!

    Spring面试问答Top 25

    大家在面试时被经常问及的关于Spring的主要问题,这些问题有可能在你下次面试时就会被问到。

    SpringCloud常见选择题28道(附答案).docx

    SpringCloud常见选择题28道(附答案),里面的题都是比较经典的SpringCloud选择题和问答题,可以帮助大家提升微服务技术,方便学习和面试

    spring问题总结

    Spring问题总结,对应spring常见的问题进行解答,对于spring框架理解有帮助

    Spring的69个问题.docx

    有关spring框架的69个问答题,有详细答案,全面总结Spring常见的问题。

    coursera-progfun-faqs:Coursera 上 Scala 课程中函数式编程原则的社区常见问题解答

    Coursera 上 Scala 课程中函数式编程原则的社区常见问题解答 有关课程提纲和注册详细信息,请参阅课程页面: 这些常见问题最初是在 Spring '13 运行期间基于论坛讨论在 Scala 中运行 FPP 期间创建的,随后在 13 ...

    webx3框架指南PDF教程附学习Demo

    说实话,如果阿里巴巴网站在2001年开始,就有这么多可选择的话,无论选择哪一个都不会有问题。因为这些年来,所有的开源Web框架都在互相学习、并趋于相似。Webx也不例外,它吸收了其它框架的很多想法。因此,当你...

    HackUTD-S21:提交HackUTD VII(2021年Spring)

    Solace借助众包的常见问题解答,实时公告和提醒以及精美的Web仪表板,在我们最需要的时候促进学生之间的协作。 灵感 作为学生,我们对Blackboard感到沮丧-尽管它是一个功能强大的系统,但许多功能却不直观,笨拙且...

    2023年最新java面试大全

    【10期】Redis 面试常见问答 【11期】分布式系统接口,如何避免表单的重复提交? 【12期】谈谈项目中单点登录的实现原理? 【13期】谈谈 Redis 的过期策略 【14期】你能说说进程与线程的区别吗 【15期】谈谈这...

    weixin基于微信小程序的网上商城+ssm(源码+SSM+小程序+vue).zip

    客服模块:在线客服咨询、常见问题解答等。 技术特点: 后端采用SSM框架,实现了MVC设计模式,使得代码结构清晰,易于维护。 前端采用微信小程序和Vue.js技术,实现了良好的用户交互体验。 数据库使用MySQL,存储...

    基于SSM的个人交友网站(源码+部署说明+系统介绍)

    帮助中心功能:帮助中心提供用户常见问题解答,用户可通过帮助中心及时解决疑问。 管理员功能:管理员可管理用户信息,包括审核、封禁、删除等操作。同时,管理员也可发布网站信息,管理站内文章、公告、活动等相关...

    基于Springboot+mysql的校园医疗保险管理系统设计与实现(源码+部署说明+视频演示).zip

    保险咨询:系统提供保险相关的咨询和常见问题解答,帮助学生和教职工了解医疗保险政策和流程,提供便捷的信息查询和解答服务。 用户友好:网站具有直观清晰的用户界面和友好的操作体验,提供便捷的保险信息管理、...

    互联网公司Java面试题及核心知识点

    无论你是要开发高性能的服务器端应用、分布式系统,还是要优化现有系统的并发性能,本资源都将为你提供实用的方法和技巧,帮助你解决常见的并发编程问题,提高系统的并发处理能力。 其他说明:本资源注重理论与实践...

    [计算机毕业设计]微信小程序基于ssm平台开发的“口腔助手”小程序设计与实现_1171u--论文(附程序源码和开发文档).rar

    1. **口腔知识库**:提供丰富的口腔健康知识文章、常见问题解答以及口腔疾病预防指南,帮助用户更好地了解和维护口腔健康。 2. **在线咨询**:用户可通过小程序与专业牙医进行实时在线交流,获取专业的口腔健康建议...

    《MyEclipse 6 Java 开发中文教程》前10章

    第一章 安装配置开发环境 18 1.1系统需求 18 1.2 JDK 的下载,安装和配置(可...10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法2 - 用 CGLIB 来实现事务管理 258 10.7.3 Spring相关的参考资料 261

    ssm项目小程序基于微信小程序的小微金融企业的设计与实现_3539r.zip

    7. **客户服务**:建立客户服务模块,包括在线咨询、常见问题解答、客户反馈收集等。 8. **数据分析**:后台提供业务数据分析功能,帮助企业更好地理解市场趋势和客户需求。 整个系统以微信小程序为前端,便于用户...

    微信小程序个人行政复议在线预约系统开发+ssm.zip

    7. **政务信息公开**:公布行政复议的相关法规、流程及常见问答,提高透明度。 8. **后台管理**:为政府工作人员提供后台管理工具,方便管理和处理复议申请。 整个系统以微信小程序为前端,便于用户随时随地访问和...

Global site tag (gtag.js) - Google Analytics