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接口

posted @ 2020-05-21 23:08  南宫煌_慧  阅读(164)  评论(0编辑  收藏  举报