Spring中bean的作用域与生命周期

Spring中的bean

  组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。

  简单地讲,bean就是由IoC容器初始化、装配及管理的对象

  Spring中的bean默认都是单例的(scope="singleton"默认值)

  我们可以设置为多例(scope="prototype"

bean的作用域

  当scope="singleton"时

    Singleton是单例类型,就是在创建起容器时就同时自动创建了一个bean的对象

    不管你是否使用,他都存在了,每次获取到的对象都是同一个对象

  当scope="prototype"时

    Prototype是原型类型,它在我们创建容器的时候并没有实例化

    而是当我们获取bean的时候才会去创建一个对象,而且我们每次获取到的对象都不是同一个对象

bean的生命周期

  

  1、当scope=”singleton”,即默认情况下,会在启动容器时实例化。

  2、当scope=”prototype”时,容器会延迟初始化bean,Spring读取xml文件的时候,并不会立刻创建对象,

  而是在第一次请求该bean时才初始化Spring容器一旦把这个对象交给你之后,就不再管理这个对象了。

 面试题

  1.有哪些不同的IOC依赖注入方式

  直接的注入(seter)

  构造注入

  P命名标签注入

  往集合内注入(<constructor-ary></constructor-ary>)

  默认往域属性内注入(autowire="byType"与autowire="byName"

  2.java九大隐式对象有哪些

  request对象

  response对象

  session对象

  application对象

  out 对象

  pageContext 对象

  config 对象

  page 对象

  exception 对象

  3.数据库里的索引和约束是什么

  索引:指向表中数据的指针,把书比作数据,各个章节就相对于数据库中的表,而书的目录就是索引了。

  约束:是为了设计数据库的完整性,防止数据库存在不符合语义的数据、错误信息的输入和输出

  4.DAO的工作原理,能不能重载

  Dao接口就是Mapper接口。映射文件中的namespace的值;接口的方法名,就是映射文件中Mapper的Statement的id值;

  Mapper接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻找策略

  5.Mybatis时如何进行分页的,原理是什么

  Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页。可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。

  原理:是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。

原文地址:https://www.cnblogs.com/whtt/p/11752891.html