spring系列面试题(day2)

前景提要:

   作者会定期更新面试题,有兴趣一起学习的同学可以点个关注。

1。请写出 spring 中常用的依赖注入方式。

          IOC:控制反转,把对象的创建和对象的依赖关系交给spring管理

          好处是解耦,和方便开发

          DI:依赖注入,是IOC的实现方式。

       依赖注入的方式有两种;set方法注入的方式和构造方法注入的方式,xml和注解都行,随着             spring版本更新,完全注解化开发可替代XML方式。

        要和IOC容器的了两种实现方式和Bean管理的两种方式区分。

        注:IOC容器的两种实现方式:

             BeanFactory(接口),spring内部使用,加载配置文件时不会创建对象,在使用对象时创建。

              ApplicationContext,BeanFactory的子接口,加载配置文件时创建对象。

        Bean管理:创建Bean(创建对象),配置Bean(使用@Autowried等注解)

2. 简述Spring中如何基于注解配置Bean和装配Bean

           开启注解扫描,使用<context:component-scan base-package="">,或在配置类使用                        @ComponentScan()

           在具体类上加Component,service等注解,把对象交给spring管理

            使用@Autowried,@Resource等进行bean装配

3.简述Spring中IOC容器常用的接口和具体的实现类

     BeanFactory,IOC容器的最底层实现,面向spring框架本身。

     ApplicationContext,BeanFactory的字接口,提供了更多高级功能,面向开发者。

     ConfigurableApplicationContext,Application的子接口,扩展了cloe(),refresh()等关闭,刷新容           器           的                方   法。

     ClassPathXmlApplicationContext,从classpath的XML配置文件中读取.

     FileSystemXmlApplicationContext,从文件系统中的XML配置文件读取上下文。 

    XmlWebApplicationContext,由Web应用的XML文件读取上下文。

 

4.请解释Spring Bean的生命周期

      通过构造器或工厂的方式创建对象

       给Bean对象属性注入值

        调用后置处理器的postProcessBeforeInitialization

      调用初始化方法,进行初始化,初始化方法是bean标签的init-method属性进行指定

     调用后置处理器的postProcessAfterInitialization

    使用

    IOC容器关闭,销毁bean

      

5.简单的谈一下SpringMVC的工作流程?  

      用户发送请求到DispatcherServlet前端控制器

      DispatcherServlet前端控制器收到请求,调用HandlerMapping处理器映射器

      HandlerMapping处理器映射器找到具体的处理器,生成处理器对象和处理器拦截器对象(如          果     有),一并返回DispatcherServlet

      DispatcherServlet调用HandlerAdapter处理器适配器

     HandlerAdapter经适配调用具体的的处理器即后端控制器Controller

     Controller执行,返回ModelAndView返回DispatcherServlet

     DispatcherServlet将ModelAndView传给视图解析器ViewReslover,

     视图解析器解析,返回具体view

     DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

     DispatcherServlet响应用户

    

6.简述Spring 中bean的作用域?

        singleton(默认),单例bean,IOC容器只创建一个bean,后续从IOC 容器获取的都是同一个bean

        protyotype,多例模型(原型模型),每次从IOC容器获取,都会创建新的bean

       request,每次HTTP请求会产生一个新的bean,该bean在HTTP请求中共享。

        session,每次会话会产生一个新的bean,该bean在会话中共享

       global-session,全局HTTP会话,spring5已经没有了。

       知识点补充:

               设置bean作用域方法,bean标签的scope属性,和注解。

               单例模式和单例Bean有一定区别,单例bean并不是spring容器只有一个该类型的bean,

               该类型bean可能有多个不同id的bean,spring获取bean根据name,type.

                单例bean是线程不安全的。

             

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值