• Spring常见面试题


    1、Spring框架有什么好处?

    1. 简化开发,DI依赖关系一目了然,IOC容器管理好系统中的Bean
    2. 兼容成熟的框架,Hibernate、MyBatis、Shiro、各种数据类型访问框架
    3. 模块化设计,即插即用,按需分配
    4. 自带测试组件
    5. 声明式事务,将非功能性代码和功能性代码分离,事务管理提前声明
    6. 过度设计嫌疑,完美分离了Servlet和普通Bean

    2、BeanFactory和ApplicationContext的区别

    ApplicationContext是BeanFactory的子接口,扩展了BeanFactory的方法;beanFactory的关键方法 getBean();
    ApplicationContext

    1. 提供了对IOC容器中Bean的监控,生命周期 PostProcessor会在Bean创建,销毁的时候触发事件
      Aware

    ApplicationEvent
    ContextRefreshedEvent
    ContextStartedEvent
    ContextStopedEvent
    2. 支持国际化i18n
    3. 扩展了统一资源文件读取方式URL,可以是本地URL,也可以是网络URL
    ClassPathXmlApplicationContext
    FileSystemXmlApplication
    XmlWebApplicationContext网络文件
    AnnotationConfigApplicationContext

    3、请解释Bean的生命周期

    建立在Spring的监听机制

    1. InitializingBean DisposableBean用来回调
    2. Aware接口
    3. init() destroy()
    4. @PostConstruct 和 @PreDestroy

    4、Spring Bean个作用域之间的区别?

    总共5个范围,对象什么时候创建,什么时候销毁。
    SpringBean 有5种生命

    1. 什么时候用,什么出生,用完就死(prototype)
    2. 从容器启动就产生,直到Spring销毁。(Singleton)
      web层
    3. request出生的时候就出生,request销毁的时候就销毁
    4. session出生的时候就出生,session销毁的时候就销毁
    5. global-session Context(上下文)

    5、Spring中的Bean是线程安全的吗?

    Spring Bean由IOC容器来创建,创建的对象由开发人员写的。
    BeanDefinition BeanWrapper instance Class.newInstance(); new Object()
    Map<String,BeanWrapper>做了一次代理,用一个新的类代替了原来的类。
    Bean安不安全跟我们写的代码有关系,跟Spring无关。

    6、Spring框架中常用的设计模式

    工厂模式;
    策略模式;
    模板模式;
    代理模式;

    7、Spring是怎样处理循环依赖问题的

    缓存机制解决循环依赖的问题,首先初始化可以创建的,第二次重新赋值

    8、BeanFactory和FactoryBean的区别

    9、怎样从Service中获取ApplicationContext

    实现ApplicationContextAware接口

  • 相关阅读:
    CSAPP bomb实验
    CSAPP y8664实验
    Linux的find基础使用
    redis学习
    cookie
    JavaScript技巧
    如何在网页中使用响应式图像
    10 个常用的 JS 工具库,80% 的项目都在用!
    Vue自定义指令
    巧用 CSS 实现动态线条 Loading 动画
  • 原文地址:https://www.cnblogs.com/nangonghui/p/12926634.html
Copyright © 2020-2023  润新知