当前位置: 首页 > news >正文

pc网站 手机网站 微信网站 上海龙岩网页制作

pc网站 手机网站 微信网站 上海,龙岩网页制作,找模板,网站数据库如何建设作者#xff1a;逍遥Sean 简介#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话#xff0c;可以三连支持一下~ 如有需要我的支持#xff0c;请私信或评论留言#xff01; Spring需要理解的问… 作者逍遥Sean 简介一个主修Java的Web网站\游戏服务器后端开发者 主页https://blog.csdn.net/Ureliable 觉得博主文章不错的话可以三连支持一下~ 如有需要我的支持请私信或评论留言 Spring需要理解的问题 谈谈你对IOC的理解单例Bean和单例模式Spring事务传播机制Spring事务什么时候会失效Spring中的Bean创建的⽣命周期有哪些步骤Spring中Bean是线程安全的吗ApplicationContext和BeanFactory有什么区别Spring中的事务是如何实现的Spring中什么时候Transactional会失效Spring容器启动流程是怎样的Spring⽤到了哪些设计模式 Spring在面试中的 高频问题总结码起来面试之前复习一遍 谈谈你对IOC的理解 通常我们认为Spring有两⼤特性IoC和AOP那到底该如何理解IoC呢 对于很多初学者来说IoC这个概念给⼈的感觉就是我好像会但是我说不出来。 那么IoC到底是什么接下来来说说我的理解实际上这是⼀个⾮常⼤的问题所以我们就把它拆细了来回答IoC表示控制反转那么 什么是控制控制了什么什么是反转反转之前是谁控制的反转之后是谁控制的如何控制的为什么要反转反转之前有什么问题反转之后有什么好处 这就是解决这⼀类⼤问题的思路⼤⽽化⼩。 那么我们先来解决第⼀个问题什么是控制控制了什么 我们在⽤Spring的时候我们需要做什么 建⼀些类⽐如UserService、OrderService⽤⼀些注解⽐如Autowired 但是我们也知道当程序运⾏时⽤的是具体的UserService对象、OrderService对象那这些对象是什么时候创建的谁创建的包括对象⾥的属性是什么时候赋的值谁赋的所有这些都是我们程序员做的以为我们只是写了类⽽已所有的这些都是Spring做的它才是幕后⿊⼿。 这就是控制 控制对象的创建控制对象内属性的赋值 如果我们不⽤Spring那我们得⾃⼰来做这两件事反过来我们⽤Spring这两件事情就不⽤我们做了我们要做的仅仅是定义类以及定义哪些属性需要Spring来赋值⽐如某个属性上加Autowired⽽这其实就是第⼆个问题的答案这就是反转表示⼀种对象控制权的转移。 那反转有什么⽤为什么要反转 如果我们⾃⼰来负责创建对象⾃⼰来给对象中的属性赋值会出现什么情况 ⽐如现在有三个类 A类A类⾥有⼀个属性C cB类B类⾥也有⼀个属性C cC类 现在程序要运⾏这三个类的对象都需要创建出来并且相应的属性都需要有值那么除开定义这三个 类之外我们还得写 A a new A();B b new B();C c new C();a.c c;b.c c; 这五⾏代码是不⽤Spring的情况下多出来的代码⽽且如果类在多⼀些类中的属性在多⼀些那相应的代码会更多⽽且代码会更复杂。所以我们可以发现我们⾃⼰来控制⽐交给Spring来控制我们的代码量以及代码复杂度是要⾼很多的反⾔之将对象交给Spring来控制减轻了程序员的负担。 总结⼀下IoC表示控制反转表示如果⽤Spring那么Spring会负责来创建对象以及给对象内的属性赋值也就是如果⽤Spring那么对象的控制权会转交给Spring。 以上是SpringIOC的理解参考这两篇文章可以更好地理解IOC原理 IOC概述及其实现原理 理解Spring原理 - 手写IOC和DI 单例Bean和单例模式 单例模式表示JVM中某个类的对象只会存在唯⼀⼀个。 ⽽单例Bean并不表示JVM中只能存在唯⼀的某个类的Bean对象。 Spring事务传播机制 多个事务⽅法相互调⽤时事务如何在这些⽅法间传播⽅法A是⼀个事务的⽅法⽅法A执⾏过程中调⽤了⽅法B那么⽅法B有⽆事务以及⽅法B对事务的要求不同都会对⽅法A的事务具体执⾏造成影响同时⽅法A的事务对⽅法B的事务执⾏也有影响这种影响具体是什么就由两个⽅法所定义的事务传播类型所决定。 REQUIRED(Spring默认的事务传播类型)如果当前没有事务则⾃⼰新建⼀个事务如果当前存 在事务则加⼊这个事务SUPPORTS当前存在事务则加⼊当前事务如果当前没有事务就以⾮事务⽅法执⾏MANDATORY当前存在事务则加⼊当前事务如果当前事务不存在则抛出异常。REQUIRES_NEW创建⼀个新事务如果存在当前事务则挂起该事务。NOT_SUPPORTED以⾮事务⽅式执⾏,如果当前存在事务则挂起当前事务NEVER不使⽤事务如果当前事务存在则抛出异常NESTED如果当前事务存在则在嵌套事务中执⾏否则REQUIRED的操作⼀样开启⼀个事 务 Spring事务什么时候会失效 spring事务的原理是AOP进⾏了切⾯增强那么失效的根本原因是这个AOP不起作⽤了常⻅情况有如下⼏种 发⽣⾃调⽤类⾥⾯使⽤this调⽤本类的⽅法this通常省略此时这个this对象不是代理类⽽是UserService对象本身解决⽅法很简单让那个this变成UserService的代理类即可⽅法不是public的Transactional 只能⽤于 public 的⽅法上否则事务不会失效如果要⽤在⾮ public ⽅法上可以开启 AspectJ 代理模式。数据库不⽀持事务没有被spring管理异常被吃掉事务不会回滚(或者抛出的异常没有被定义默认为RuntimeException) Spring中的Bean创建的⽣命周期有哪些步骤 Spring中⼀个Bean的创建⼤概分为以下⼏个步骤 推断构造⽅法实例化填充属性也就是依赖注⼊处理Aware回调初始化前处理PostConstruct注解初始化处理InitializingBean接⼝初始化后进⾏AOP Spring中Bean是线程安全的吗 Spring本身并没有针对Bean做线程安全的处理所以 如果Bean是⽆状态的那么Bean则是线程安全的如果Bean是有状态的那么Bean则不是线程安全的 另外Bean是不是线程安全跟Bean的作⽤域没有关系Bean的作⽤域只是表示Bean的⽣命周期范围对于任何⽣命周期的Bean都是⼀个对象这个对象是不是线程安全的还是得看这个Bean对象本身。 ApplicationContext和BeanFactory有什么区别 BeanFactory是Spring中⾮常核⼼的组件表示Bean⼯⼚可以⽣成Bean维护Bean⽽ApplicationContext继承了BeanFactory所以ApplicationContext拥有BeanFactory所有的特点也是⼀个Bean⼯⼚但是ApplicationContext除开继承了BeanFactory之外还继承了诸如EnvironmentCapable、MessageSource、ApplicationEventPublisher等接⼝从⽽ApplicationContext还有获取系统环境变量、国际化、事件发布等功能这是BeanFactory所不具备的 Spring中的事务是如何实现的 Spring事务底层是基于数据库事务和AOP机制的⾸先对于使⽤了Transactional注解的BeanSpring会创建⼀个代理对象作为Bean当调⽤代理对象的⽅法时会先判断该⽅法上是否加了Transactional注解如果加了那么则利⽤事务管理器创建⼀个数据库连接并且修改数据库连接的autocommit属性为false禁⽌此连接的⾃动提交这是实现Spring事务⾮常重要的⼀步然后执⾏当前⽅法⽅法中会执⾏sql执⾏完当前⽅法后如果没有出现异常就直接提交事务如果出现了异常并且这个异常是需要回滚的就会回滚事务否则仍然提交事务Spring事务的隔离级别对应的就是数据库的隔离级别Spring事务的传播机制是Spring事务⾃⼰实现的也是Spring事务中最复杂的Spring事务的传播机制是基于数据库连接来做的⼀个数据库连接⼀个事务如果传播机制配置为 需要新开⼀个事务那么实际上就是先建⽴⼀个数据库连接在此新数据库连接上执⾏sql Spring中什么时候Transactional会失效 因为Spring事务是基于代理来实现的所以某个加了Transactional的⽅法只有是被代理对象调⽤时那么这个注解才会⽣效所以如果是被代理对象来调⽤这个⽅法那么Transactional是不会失效的。 同时如果某个⽅法是private的那么Transactional也会失效因为底层cglib是基于⽗⼦类来实现的⼦类是不能重载⽗类的private⽅法的所以⽆法很好的利⽤代理也会导致Transactianal失效 不是代理对象被调用方法不可访问private Spring容器启动流程是怎样的 在创建Spring容器也就是启动Spring时 扫描Bean。⾸先会进⾏扫描扫描得到所有的BeanDefinition对象并存在⼀个Map中创建Bean。然后筛选出⾮懒加载的单例BeanDefinition进⾏创建Bean对于多例Bean不需要在启动过程中去进⾏创建对于多例Bean会在每次获取Bean时利⽤BeanDefinition去创建构造Bean。利⽤BeanDefinition创建Bean就是Bean的创建⽣命周期这期间包括了合并BeanDefinition、推断构造⽅法、实例化、属性填充、初始化前、初始化、初始化后等步骤其中AOP就是发⽣在初始化 后这⼀步骤中启动容器。单例Bean创建完了之后Spring会发布⼀个容器启动事件。Spring启动结束在源码中会更复杂⽐如源码中会提供⼀些模板⽅法让⼦类来实现⽐如源码中还涉及到⼀些BeanFactoryPostProcessor和BeanPostProcessor的注册Spring的扫描就是通过BenaFactoryPostProcessor来实现的依赖注⼊就是通过BeanPostProcessor来实现的在Spring启动过程中还会去处理Import等注解 Spring⽤到了哪些设计模式 单例模式工厂模式模板方法模式代理模式 这些比较容易理解的还有其他的比如责任链模式观察者模式面试中只需要完整的说出几个并举例即可
http://www.dnsts.com.cn/news/134237.html

相关文章:

  • 如何做自己公司的网站企业做网站多少钱
  • 秦皇岛网站制作与网站建设公司wordpress分享缩略图不显示图片
  • 男装网站的网站建设背景系统软件主要包括网页制作软件
  • 网站模块标准版微信群推广平台
  • 目前市面上做网站的程序视频网站切片怎么做
  • 网站制作网站推广学生制作网站建设 维护
  • 做外文H网站网站抄袭别人的做可以吗
  • 网站建设 镇江wordpress用户二级域名
  • 桂林网站建微信上怎么做广告推广
  • 微网站如何做潍坊淘宝网站建设
  • 做私活的网站silverlight 做的网站
  • 北京康迪建设监理咨询有限公司网站梧州论坛一红豆社区
  • 网站制作用的软件建e网全景制作教程视频
  • 合肥 中网站外包公司哪家好
  • 网站备案主体负责人苏州知名高端网站建设机构
  • 监利县建设局网站纸业建站服务
  • 做网站数据需要的软件网页浏览器证书失效怎么修复
  • 仙居微信网站开发企业查询系统官网天眼查
  • 济南做网站的中企如何推广自己的店铺
  • 企业站模板招聘网站开发的流程
  • 做柱状图好看的网站中国万网张向东去哪了
  • 东莞营销型网站建设公司pc 移动的网站开发
  • ps做网站字号大小一个wordpress的爱好者
  • 中国建设银行网站u盾修改密码wordpress数据表结构
  • wordpress网站网页加密5113二次加密和三次加密
  • 哈尔滨市建设工程交易网网站字头优化
  • 网站没有百度快照idc机房
  • 做哪个网站零售最好aso优化技巧大aso技巧
  • 秦皇岛网站制作电话ysl 官网中国
  • 英文网站建设服务合同模板下载软件平台建设方案