spring高频面试题

1.Spring框架能给我们带来哪些好处?

  1. 简化开发,解放双手
  2. 提供内置的解决方案BOP(面向Bean编程)、Ioc(控制反转)、AOP(面向切面编程)
  3. 声明式事务管理 (TransactionManager)
  4. 提供诸多的工具类,围绕Spring生态,比如 JdbcTemplate。

2.BeanFactory和ApplicationContext有什么区别?

  1. ApplicationContext是BeanFactory的实现类
  2. BeanFcatory是顶层设计(抽象),而ApplicationContext是User Interface
  3. ApplicationContext功能会非常丰富,API是最全的。一般会认为ApplicationContext就是Ioc
  4. Ioc的功能是在DefaultBeanFactory类中完成的。但是有共同的接口

3.BeanFactory 和 FactoryBean的区别?

  1. BeanFactory 是Ioc容器的顶层设计
  2. FactoryBean 是用来构建Bean的一个包装类

4.Spring Bean的生命周期

  1. singleton :是从Spring容器的启动到Spring容器的销毁,如果是延时加载,在调用前创建。
  2. prototype :在调用前创建,调用后销毁

作用域决定了生命周期的长短

5.Spring Bean各作用域之间的区别?

  1. singleton 作用域全局,在任何地方可以通过Ioc容器拿到它
  2. protoype 全局的
  3. request 在一次请求发起和结束之间
  4. session 一个session创建 和 session失效之间,一般默认是30分钟
  5. global-session 可以理解为容器中的一个应用(Spring 5 不再支持)

6.Spring 中的Bean是线程安全的吗?

Spring中的Bean是否线程安全和Spring 无关,跟自已写的代码有关。

7.请问Spring中用到了哪些设计模式?

  1. 工厂模式、
  2. 单例模式(容器式单例) 、
  3. 原型(多例)模式(容器式多例)、
  4. 代理模式、
  5. 享元模式、
  6. 门面模式、
  7. 适配器模式、
  8. 委派模式、
  9. 装饰器模式(事务装饰器)、
  10. 责任链模式、
  11. 空对象模式、
  12. 解释器模式、
  13. 建造者模式

8.Spring事务怎么传播?

通过 TransactionManager(使用了代理模式),从数据库连接池中拿到 Connection , 针对Connection 进行操作, 即:

 ......
	 before(){
	    conn.setAutocommint(false);
	 }
	 execute();//原始的逻辑 	 
	 after() {
	    if (condition) {
		     conn.rollback();
		} else {
		    conn.commit();
		}
	        
	 }
	 finally {
	     conn.close();
	 
	 }
 .....

想要实现事务嵌套 ,从数据库连接池拿到多个连接,对连接进行操作即可

通常数据库连接池均会实现 ConnectionPoolDataSource 接口,因此TransactionManager 可从池中拿到连接。

9.一个方法内,for循环内重复操作数据库,是用一个链接还是多个链接?

不要在一个方法内用for循环去查询数据库,因为会多次连接数据库, 导致连接池的数量不可控, 循环的次数未知 ,连接会很快用光。

解决方案:
1、分页
2、缓存
3、联合查询

10.Spring、SpringMvc、Spring Boot 、Spring Cloud到底有什么区别?

  1. Spring:是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案
  2. SpringMvc : 是Spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于Spring框架中WEB层开发的一部分
  3. Spring boot : 使用了默认大于配置的理念, 简化开发,spring 简化的不够,因为配置文件很头疼,配置的管理(架构师很累), 内置了默认的配置,我们需要配的是需要覆盖的,不需要覆盖实现零配置,全面的去servlet化,能够自运行了,部署也简单了,一个jar包打天下,不需要Tomcat ,Jetty 。 官方 层面提供了一套脚手架,一键搭建,节省时间。
  4. Spring Cloud : 正式进军分布式,包含有 注册中心、服务发现、监控(链路追踪)、配置中心、负载、熔断… , 打造一个生态 ,不需要自已整合,一站式分布式的解决方案。

Spring Cloud 依赖 Spring boot , Spring boot 依赖 Spring

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值