• spring面试题


    一、spring面试题

    1、spring的优点

    • spring通过依赖注入和控制反转实现松耦合,来程序员和对象之前进行耦合
    • 通过面向切面编程,通过解耦的方式,来实现程序的事务,日志
    • spring是一个轻量级的框架
    • spring可以整合不同的框架,来创建项目

    2.Spring 用到了哪些设计模式?

    1、简单工厂模式BeanFactory就是简单工厂模式的体现,根据传入一个唯一标识来获得 Bean 对象。

    @Override
    public Object getBean(String name) throws BeansException {
        assertBeanFactoryActive();
        return getBeanFactory().getBean(name);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、工厂方法模式FactoryBean就是典型的工厂方法模式。spring在使用getBean()调用获得该bean时,会自动调用该bean的getObject()方法。每个 Bean 都会对应一个 FactoryBean,如 SqlSessionFactory 对应 SqlSessionFactoryBean

    3、单例模式: spring注册的所有的实例默认都是使用单例模式

    4、适配模式: 适配器 SpringMvc中HadlerAdatper类,当我们请求进入springMvc中,handlerMapping会根据url找到成对应的Handler ,会通过Adapter 来适配Handler ,最后通过Adapter来执行Handler方法

    5、代理模式:spring的aop使用动态代码,如果类实现了接口jdk自带的代理模式,如果没有实现通过cglib来进行代理

    3.什么是AOP?

    面向切面编程,作为面向对象的一种补充,将公共逻辑(事务管理、日志、缓存等)封装成切面,跟业务代码进行分离,可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关,但所有业务模块都会调用的公共逻辑

    4、AOP有哪些实现方式?

    AOP有两种实现方式:静态代理和动态代理。

    静态代理

    静态代理:代理类在编译阶段生成,在编译阶段将通知织入Java字节码中,也称编译时增强。AspectJ使用的是静态代理。

    缺点:代理对象需要与目标对象实现一样的接口,并且实现接口的方法,会有冗余代码。同时,一旦接口增加方法,目标对象与代理对象都要维护。

    动态代理

    动态代理:代理类在程序运行时创建,AOP框架不会去修改字节码,而是在内存中临时生成一个代理对象,在运行期间对业务方法进行增强,不会生成新类

    5、Spring AOP的实现原理

    SpringAOP实现原理其实很简单,就是通过动态代理实现的。如果我们为Spring的某个bean配置了切面,那么Spring在创建这个bean的时候,实际上创建的是这个bean的一个代理对象,我们后续对bean中方法的调用,实际上调用的是代理类重写的代理方法。而SpringAOP使用了两种动态代理,分别是JDK的动态代理,以及CGLib的动态代理

  • 相关阅读:
    uni-app+vue3会遇到哪些问题
    Java智慧工地SaaS管理平台源码:AI/云计算/物联网
    xml总结
    Swift 协议
    Python tkinter -- 第12章 Scale属性
    maven: Cannot access nexus-all xxx in offline mode错误的解决
    leetcode 97. 交错字符串
    11月19日绿健简报,星期六,农历十月廿六
    (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
    【程序猿保健】ShaderJoy —— 拉力带教程
  • 原文地址:https://blog.csdn.net/Afu1021/article/details/133661016