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

辽宁鞍山网站建设网站制作蒙特

辽宁鞍山网站建设,网站制作蒙特,网站运营管理,中国网站用Cn域名前 言 #x1f349; 作者简介#xff1a;半旧518#xff0c;长跑型选手#xff0c;立志坚持写10年博客#xff0c;专注于java后端 ☕专栏简介#xff1a;java面试宝典#xff0c;特点#xff1a;全、精、深、简#xff0c;力求每个核心知识点1分钟回答好。 #x1f3… 前 言 作者简介半旧518长跑型选手立志坚持写10年博客专注于java后端 ☕专栏简介java面试宝典特点全、精、深、简力求每个核心知识点1分钟回答好。 文章简介本文将介绍spring核心的面试12问 文章目录一、Spring1.谈谈你理解的spring2.谈谈spring的优缺点二、IOC3.谈谈你对IOC的理解4.谈谈IOC的实现机制是什么5.从源码角度说下Spring IOC的加载过程三、bean6.聊聊你对Spring Bean的了解7.Spring Bean的默认作用域是什么它有什么优势8.Spring中bean是线程安全的吗9.什么是自动装配它有几种方式10.谈谈spring中bean的生命周期11.Spring中Bean的循环依赖问题是如何解决的四、注解12.ComponentRepositoryServiceController有什么区别一、Spring 1.谈谈你理解的spring 2.谈谈spring的优缺点 (1)优点 先回顾下spring的特性IOC、AOP、事务、功能性的封装 IOC带来的优点 集中管理了对象使对象之间的耦合度降低了。 对象的开发维护变得简单了。 AOP带来的优点 可以在不修改代码的情况下进行功能增强并且减少了重复的代码提高了代码的维护降低了代码冗余 事务声明 spring事务机制简化了开发 功能性的封装 封装了许多功能性代码如jdbctemplate也方便于集成各个优秀框架可以帮助方便的使用三方框架简化了开发。 源码spring的底层大量运用反射、设计模式等其源码也是不可多得的宝贵学习资料。 (2)缺点 简化了开发从应用角度上更好但是对于底层的细节进行了封装想要了解底层就更加困难。而且它大而全源码代码量达百万不易研究源码。 二、IOC 3.谈谈你对IOC的理解 IOC的意思是控制反转控制反转的意思就是将创建对象的权力转移到容器来完成。 以前创建一个对象是由程序员通过new一个对象来创建这样会造成两个问题 1耦合度过高这其实本质上是面向接口编程的问题。如果通过硬编码写了一个superclass A new subclass()如果想要使用另外一个subclass就需要更改源码重新编译。如果使用Spring IOC来做只需要更改配置即可。 2维护不方便。在实际项目中一个 Service 类可能依赖了很多其他的类假如我们需要实例化这个 Service你可能要每次都要搞清这个 Service 所有底层类的构造函数这可能会把人逼疯。如果利用 IoC 的话你只需要配置好然后在需要的地方使用Autowired注解自动注入(DI)就行了这大大增加了项目的可维护性且降低了开发难度。 控制反转可以达到解耦和方便维护的目的。 注 Spring IOC和DI的区别是什么 IOC是思想DI是实现是实现IOC的关键一步。 4.谈谈IOC的实现机制是什么 Spring IOC实际上是通过简单工厂设计模式和反射来实现的。所谓简单工厂设计模式其实就是通过传入一个标识根据标识选择生产对应的对象。通过简单工厂模式(BeanFactory.getbean())会带来一个问题就是需要给每一个对象提供一个创建的过程如果创建的对象变化还需要改源码。因此引入反射机制将类的完整类路径作为参数传递给工厂工厂通过反射机制直接获取对象返回即可。 注为了方便理解可以参考如下代码。 5.从源码角度说下Spring IOC的加载过程 第一步通俗理解就是通过bean工厂的后置处理器将配置文件转化为一个对应的java类。 第二步通俗理解就是通过简单工厂模式和反射来实例化对象 第三步通俗理解就是通过依赖注入来完成对象的属性注入工作 三、bean 6.聊聊你对Spring Bean的了解 (1) 什么是Spring Bean 被spring IOC容器管理、实例化的对象称之为spring的bean。 (2)怎么配置Spring Bean 可以通过如下四种方式配置Spring Bean。 (3)Bean有哪些作用域 单例、多例request(针对web应用一个请求创建一个request对象)session(web 应用会话)application(一个全局的应用) 7.Spring Bean的默认作用域是什么它有什么优势 Spring默认的Bean是单例对象只会创建一次。 具有如下优势: 8.Spring中bean是线程安全的吗 Spring默认的Bean是单例多个线程操作的是同一个对象如果在类中声明了成员变量并且进行了读写操作(有状态)就会出现线程安全问题。 但是我们如果把变量声明在方法中就是线程安全的。将成员变量使用ThreadLocal修饰将操作方法或者代码块加上synchronized同步锁(并行会变成串行影响吞吐量)或者将bean设置为多例也可以保证线程安全。 9.什么是自动装配它有几种方式 自动装配就是指spring中的对象无需手工创建其依赖对象可以由容器创建需要依赖的对象并进行装配。 10.谈谈spring中bean的生命周期 11.Spring中Bean的循环依赖问题是如何解决的 循环依赖是指spring中多个对象相互依赖导致在容器创建对象过程时出现互相嵌套的问题。 八股文结束。 详细理解 循环依赖可以参考下图理解。 其中AServce的生命周期如下图。 在上图中要填充bService对象就需要从单例池中获取一个bService对象。如果此时bService没有创建在单例池找不到因此需要触发bService的生命周期创建bService。而bService创建时也需要填充aService就会循环套娃这就是所谓的循环依赖。 因此需要打破循环因此需要从其它地方找到一个aService对象。因此可以考虑在aService的生命周期第一步就进行一次缓存(一级缓存)因为尽管此时已经有一个无参的aService对象了。具体的细节可以参考下图理解。 不过上面的做法其实埋了坑。考虑如果aService执行了AOP那么就会创建一个代理类在生命周期的第五步实际上加入单例池中是其代理类对象。而bService在填充时获得的是一个aService对象这不就不一致了么。 实际上在bService填充时应该也是填充一个aService的代理对象(加强了功能)。要做到这一点就应该在第一步就进行aService的AOP。 按照这个思路走aService的生命周期如下。 不过这样bean的生命周期设计就乱了啊。第1步就创建AOP第4步还创建不创建了最好能够判断是否出现循环依赖只有出现循环依赖时才提前创建AOP代理对象。可以在aService创建时就设置一个状态量进行下标记如果在创建bService发现aService还没有创建完就可以知道出现循环依赖问题了。 现在考虑三个对象的情况如果aService还和cService也出现了循环依赖会咋样答案是冗余操作。而且进行了两次AOP那么bService和cService中填充的还是同一个代理对象么不是了啊 那么我们在第一次AOP产生代理对象把它放到单例池中不就可以了 但是单例池中是啥都可以放的吗它只能够放一个完整的对象这些过程中的对象你也放进去么 还是分清楚点最后引入二级缓存。 似乎大功告成了。不过现在可存在一个大问题。在2.1进行AOP生成代理对象时代理对象需要有一个aService类型的属性啊。哦豁还是没有啊。 引入三级缓存。问题解决。 实际上第1步三级缓存中存的并不是一个aServce的对象而是一个Lambda表达式即一个函数式接口。其存储的源码如下。 为什么呢这说明三级缓存只存储一个变量不够它需要存储方法。实际上它里面包含判断AOP判断是否要进行AOP代理的代码逻辑。 四、注解 12.ComponentRepositoryServiceController有什么区别 Component 通用的注解可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层可以使用Component 注解标注。这是RepositoryService和Controller的元注解。Repository : 对应持久层即 Dao 层主要用于数据库相关操作。Service : 对应服务层主要涉及一些复杂的逻辑需要用到 Dao 层。Controller : 对应 Spring MVC 控制层主要用户接受用户请求并调用 Service 层返回数据给前端页面。
http://www.hkea.cn/news/14393229/

相关文章:

  • 深圳网站建设制作开发公司成都筑巢网站建设
  • 米拓建站下载官方网站
  • 上海知名 网站设计公司wordpress 完美搬家
  • 安徽公司招聘网站南通网站建设有限公司
  • 哈尔滨企业自助建站贵阳网站制作企业
  • 郑州网站建设熊掌号工业设计参考网站
  • wordpress开发网站模板近期国外重大新闻事件
  • 拼团手机网站开发适合前端做项目的网站
  • 网站建设工作职责网站转移空间
  • 自动生成手机网站互联网公司排名500强名单
  • 彭州建设网站深圳网站设计兴田德润i优惠吗
  • 网站建设验收报告类网站建设
  • 做网站公司无锡微网站管理
  • 门源县住房和城乡建设局网站wordpress文档
  • 秦皇岛做网站wordpress 短代码 嵌套
  • 免费做企业网站网上书店网站建设实训总结
  • 网站建设企业蛋糕自己开发微信小程序教程
  • 昌吉州住房和城乡建设局网站百度网站下载安装
  • 小企业网站 优帮云怎么网站是什么语言做的
  • 蚌埠网站开发程序员最吃香的5个岗位
  • 廊坊住房和城乡建设厅网站广州联享网站建设公司怎么样
  • 如何在网站上做网盘小鱼儿企业网站管理系统
  • 在线网站建设机构大连建设信息网
  • 整站seo服务怎么做自己的刷赞网站
  • 微站和网站数据同步拓者设计网
  • 石大远程网页设计及网站建设答案设计师招聘网站有哪些
  • 长沙做网站zwnet专业高端网站建设服务公司
  • 昆明网站设计价格百度关键词竞价查询系统
  • 做网站公司如何赚钱如何快速做企业网站包括商城
  • 怎么给网站图片加alt如何选择合适的建站公司