spring面试题简述

1、Spring是一个什么框架?

  • Spring是一个资源整合框架,其核心是资源整合,然后以一种更加科学的方式对外提供服务,例如提高对象的应用效率,降低系统开销,提高代码的可维护性等等。其官方网址为spring.io.

2、Spring框架中有哪些重要的模块?

  • Spring IOC,Spring AOP,Spring WEB,Spring Data等

3、Spring框架是如何构建对象?

  • Spring框架中所有Bean对象都是通过BeanFactory接口类型的工厂对象构建的,此工厂底层会基于Java中的反射技术进行实现,首先获取类的字节码对象,然后基于字节码对象获取构造方法对象,最后基于构造方法对象构建类的实例对象。

4、如何理解spring中IOC设计?

  • IOC是一种设计思想,我们称之为控制反转,本质上讲解的是对象控制权问题。基于这种设计可以让初学者将对象的控制权转交给第三方,由第三方专业团队管理和应用对象。这样可以更好的避免对象的非正确使用方式,进而更好改善对象在内存中的科学应用。
  • 举例:这个IOC设计从生活的角度可以理解为由股票操盘手负责帮你进行资金管理,由父母包办你的婚姻。
  • 再简单总结一下的话,IOC可以理解为饭来张口、衣来伸手。

5、为什么要将对象交给spring管理?

  • Spring为我们的对象赋予了很多个更加科学的特性,例如延迟加载,作用域,生命周期方法以及运行时的自动依赖注入(降低耦合,提高程序的可维护性)机制等,基于这些特性可以更好的提高对象的应用性能以及程序的可扩展性

6、Spring框架中的Bean有什么特性?

  • Spring框架为了更加科学的管理和应用Bean对象,为其设计相关特性,例如:懒加载(@Lazy)作用域(@Scope)以及生命周期方法。
    在这里插入图片描述

7、Spring中用于定义Bean什么周期方法的注解?

  • @PostConstruct
  • @PreDestroy

8、Spring中用于实现依赖注入的注解?

  • @Autowired
  • @Resource

9、@Autowired注解有什么作用?

  • @Autowired由spring框架定义,用于描述类中属性或相关方法(例如构造方法)。
  • Spring框架在项目运行时假如发现由他管理的Bean对象中有使用@Autowired注解描述的属性或方法,可以按照指定规则为属性赋值(DI)。
  • 其基本规则是:首先要检测容器中是否有与属性或方法参数类型相匹配的对象,假如有并且只有一个则直接注入。其次,假如检测到有多个,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,有则直接注入,没有则抛出异常。
  • 最后,假如我们有明确要求,必须要注入类型为指定类型,名字为指定名字的对象还可以使用@Qualifier注解对其属性或参数进行描述(此注解必须配合@Autowired注解使用)。

10、描述下@Qualifier注解的作用?

  • @Qualifier注解用于描述属性或方法参数,当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean。
    在这里插入图片描述

11、@Component和@Configuration注解的异同点?

  • @Component:
    1. 注解通常用于描述一般bean对象,比如具备一定通用性的对象。
    2. 使用@Component注解描述类时,系统底层并不会为此类创建代理对象,只是创建当前类的对象,然后调用@Bean注解描述的方法,创建和初始化Bean,方法每调用一次就会创建一个新的对象。
  • @Configuration:
    1. 注解通常用于描述spring工程中的配置类,是一个增强版的@Component注解,在配置类中定义一些由@Bean注解描述的方法,然后通过这些方法对一些自己定义或第三方的Bean进行对象的创建和初始化。
    2. 当我们使用这@Configuration注解描述一个配置类时,Spring框架底层会为这个@Configuration注解描述的配置类创建一个CGLIB代理对象,然后由代理对象调用@Bean注解描述的方法,同时底层会检测方法返回的Bean是否已创建,假如已创建则不再创建。

12、说说你对Spring中JdbcTemplate的理解?

  • JdbcTemplate是Spring中提供的一个封装了JDBC操作的模板类,此类中基于模板方法模式定义了很多JDBC模板方法,简化了JDBC的一些基本操作步骤,可以更好提高我们的开发效率。
  • 此类在运行时需要由Spring注入一个DataSource对象,然后基于DataSource可以获取一个连接池,从池中获取访问数据库的连接。

13、Spring框架常用设计模式有哪些?

工厂模式、建造模式、策略模式、代理模式、单例模式、模板方法模式、享元模式、适配器模式。。。

14、Spring AOP 实现原理是怎样的?

Spring中AOP设计,是在系统启动时为目标类型创建子类或兄弟类型对象,这样的对象我们通常会称之为动态代理对象,然后通过动态代理对象为目标对象实现功能的扩展
其中,为目标类型(XxxServiceImpl)创建其代理对象方式有两种:
第一:JDK代理,借助JDK官方API为目标对象类型创建其兄弟类型对象,但是目标对象类型需要实现相应接口.
第二,CGLIB代理,借助CGLIB库为目标对象类型创建其子类类型对象,但是目标对象类型不能使用final修饰.
如图所示:
在这里插入图片描述

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值