spring常见的面试题,面试问spring是什么

  spring常见的面试题,面试问spring是什么

  Yyds干货库存

  专长:全栈工程师、爬虫、ACM算法

  微信官方账号:浅谈知识

  这次都替他拿,下次跟面试官PK

  温馨提醒:这个面试官太残忍了。

  spring创建bean时如何调用构造函数?创建spring的过程称为推理构造法。

  它分为以下几种情况:

  未实现构造函数。

  默认情况下,类将创建一个无参数构造函数。类实现无参数构造函数。

  创建bean时,您将调用自己的无参数构造函数。类定义无参数构造函数和无参数构造函数。

  创建Bean时,调用无参数构造函数。类中定义了无参数构造函数。

  如果没有定义无参数构造函数,我们不会自动创建无参数构造函数,直到有一个,然后在spring中没有无参数构造函数的情况下调用无参数构造函数(当然这是在只有一个无参数构造函数的前提下)。该类中定义了多个参数化构造函数。

  会报错,因为spring没有无参数的构造函数不知道调用哪个,也可以把@Autowire加到你想用的构造函数里,

  对于带参数的构造函数,我们可以根据它们的类型去容器中查找参数。如果按类型不止一个,我们可以按名字查。如果他们根据名字找不到任何错误,我们可以创建它们。我们在创建它们的时候,可能会有一个循环依赖的问题,然后我们引入spring的三级缓存来解决循环依赖。spring为什么用三级缓存而不是二级缓存创建bean?为什么首先要有一个缓存?因为没有缓存,所以当存在循环依赖时,没有办法解决循环依赖的问题。

  现在看到这个问题,对三级缓存在bean创建过程中的作用有了一定的了解。

  为什么不用二级缓存?

  如果生成的bean不需要生成代理对象,就只能使用二级缓存,但是如果需要生成代理对象,就需要进行三级缓存更改,因为如果我们没有二级缓存,那么创建的对象就在三级缓存中,其他bean在创建的时候就注入到当前bean中,因为检测到当前bean有AOP,就会让当前bean生成代理对象。但是,如果有多个其他bean要注入到当前bean中,则会生成当前bean的代理对象,所以需要二级缓存来存储当前存储在三级的bean的代理对象。当其他bean需要注入当前bean时,可以直接从二级缓存中取出。

  春天的@懒标注是什么意思?这个注释的含义在不同的地方是不一样的,所以会分不同的情况来讨论。

  @懒的在班上装饰

  该对象在启动时不会被创建,只有在实际使用时才会被创建。@懒

  A级

  公共静态void main(String[] args) {

  }

  }@Lazy是在@Bean注释的方法上修饰的。启动时不会创建bean对象,但使用时会创建由@Bean修饰的方法返回的对象。@配置

  A级

  @Bean

  @懒

  public B get(){

  返回新的B();

  }

  }

  B类{

  }@Lazy放在@Autowired注释的属性上。它将只分配一个代理对象,而不是给修饰属性分配一个实值。当这个属性被实际使用时,它将返回到容器并找到一个匹配的对象。@组件

  A级

  @自动连线

  @懒

  私B b

  }

  @组件

  B类{

  }总结以上是春天三个问题的总结,希望有所帮助。

  版权归作者所有:来自博客的原创作品,转载授权请联系作者,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: