• Spring/Spring MVC


    90.为什么要使用 spring?

    答:spring是一个开源框架,是个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架

    • 方便结构简化开发
    • AOP编码的支持
    • 声明式事物的支持
    • 方便程序的测试
    • 方便集成各种优势框架
    • 降低Java EE API 的使用难度

    91.解释一下什么是 aop?

     答:AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。

    AOP分为静态AOP和动态AOP:

    • 静态AOP是指AspectJ实现的AOP,他是将切面代码直接编译到Java类文件中。
    • 动态AOP是指将切面代码进行动态织入实现的AOP,JDK动态代理。

    92.解释一下什么是 ioc?

    答:即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

      IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。

    93.spring 有哪些主要模块?

    答:core模块、aop模块、data access模块、web模块、test模块

    94.spring 常用的注入方式有哪些?

    答:详细解析:https://blog.csdn.net/a909301740/article/details/78379720

    • 构造方法注入
    • setter注入
    • 基于注解注入

    95.spring 中的 bean 是线程安全的吗?

    答:

      Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。

    最浅显的解决办法就是将多态bean的作用域由“singleton”变更为“prototype”。

    96.spring 支持几种 bean 的作用域?

    答:singleton、prototype、request、session、globalSession五中作用域。

    97.spring 自动装配 bean 有哪些方式?

    答:可分为四种:

    • byName:按照bean的属性名称来匹配要装配的bean
    • byType:按照bean的类型来匹配要装配的bean
    • constructor:按照bean的构造器入参的类型来进行匹配 
    • autodetect(自动检测):先使用constructor进行装配,如果不成功就使用byType来装配

    98.spring 事务实现方式有哪些?

    答:三种

    (1)基于 TransactionProxyFactoryBean的声明式事务管理

    (2)基于 @Transactional 的声明式事务管理

    (3)基于Aspectj AOP配置事务

    https://blog.csdn.net/qq_42914528/article/details/83743726

    spring事务实现原理    动态代理

    99.说一下 spring 的事务隔离?

    答:spring事务传播和隔离

    100.说一下 spring mvc 运行流程?

    答:DispatcherServlet->HandlerMapping->HandlerAdapter->ModelAndView->ViewResolver->view

    https://www.cnblogs.com/hujiapeng/p/5765636.html

    101.spring mvc 有哪些组件?

    答:

    DispatcherServlet(前端处理器)收到请求后,依据HandlerMapping的配置,调用相应的Controller来处理

    Controller将处理结果封装成ModelAndView对象,返回给DispatcherServlet.

    DispatcherServlet依据ViewResolver的解析,调用相应的视图对象,(如jsp)来生成相应的页面。

    102.@RequestMapping 的作用是什么?

    答:@RequestMapping注释用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径

    103.@Autowired 的作用是什么?

    答:spring可以自动帮你把Bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
    @Autowired注释进行自动注入时,spring容器中匹配的候选Bean数目必须有且仅有一个。
    当找不到一个匹配的Bean时,spring容器将抛出BeanCreationException异常,并指出必须至少拥有一个匹配的Bean。
    如果spring容器中拥有多个候选Bean,spring容器在启动时也会抛出BeanCreationException
    这个时候就可以借助@Qualifier注释指定注入Bean的名称,这样@Autowired遇到多个候选Bean的问题也就解决了。

  • 相关阅读:
    How to extract msu/msp/msi/exe files from the command line
    Windbg and resources leaks in .NET applications 资源汇总
    [c# 20问] 3.String和string的区别
    [c# 20问] 2.如何转换XML文件
    [c# 20问] 1. 何时使用class与struct
    安装配置BITS上传服务
    The J-Link hardware debugging Eclipse plug-in
    swift material
    SCLButton
    ChatCell
  • 原文地址:https://www.cnblogs.com/zousong/p/10513338.html
Copyright © 2020-2023  润新知