Spring复习-问题回答

这篇具有很好参考价值的文章主要介绍了Spring复习-问题回答。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是 spring,你对 spring 的理解?

Spring是一个轻量级,非侵入式的(不使用框架特定的类,感受不到框架)IOC和AOP一站式的java后端开发框架,简化企业开发。

2.spring 的优缺点

优点:

Spring是一个容器,可以管理对象(IOC);

创建对象和使用对象分离,降低耦合度;

使用AOP思想可以更加方便地扩展功能;

可以集成其他框架;

缺点:

配置繁琐

依赖jar太多

3.解释一下 IOC 和 AOP

IOC:

控制反转(Inverse of Control),将创建对象的权利反转给Spring框架,使用对象时,只需要从Spring容器中获取,不用关系创建过程。

AOP:

面向切面编程(Aspect Oriented Programming),   将程序中的非业务代码抽取,使非业务代码与业务代码相隔离,为目标类创建一个代理对象让代理对象调用目标类中的方法也就是非业务代码,提高了代码的复用率和灵活性,提高开发效率,降低了非业务代码与业务代码的耦合性。 应用场景:保存日志,权限管理,统一异常处理 ,事务管理。

4.IOC 和 DI 的区别是什么

IOC是一种设计思想,将对象的创建和组装交给容器管理;

DI是IOC的具体实现,通过依赖注入的方式实现对象之间的解耦,依赖注入可以通过构造函数、setter 方法或字段注入的方式实现。

spring框架:简介+依赖注入-CSDN博客

有详细举例 

5.spring 中注入对象的方式

XML配置文件

注解标签

6.自动注入的注解有哪些注解

  • @Autowired:由 Spring 提供
  • @Qualifier: 当有多个同一类型的 Bean 时,可以用@Qualifier(“name”)来指定。与@Autowired 配合使用.
  • @Resource:由 jdk提供

7.Springc 中的 bean 和 new 的对象由什么区别

bean是将对象的管理权限交给了Spring容器,而new对象是创建新的对象,需要手动管理其生命周期和依赖关系。

8.AOP 中的术语有哪些,通知有哪些

  1. 连接点(Joinpoint):类中可以被增强的方法(新增修改等);
  2. 切入点(pointcut):实际被增强的方法;
  3. 通知(Advice): 一个切面在特定的连接点要做的事情(方法被增强的功能),分为前置通知、后置通知、异常;
  4. 切面(Aspect):把通知添加到切入点的整个过程称为切面;
  5. 目标(Target): 代理的目标对象(连接点,切入点所在类);
  6. 代理(Proxy): 向目标对象应用通知时创建的代理对象。

9.Spring 实现 AOP 有哪几种方式

XML配置

注入

spring:AOP面向切面编程+事务管理_aop切面方法事务-CSDN博客

详细内容见上文。

10.谈谈 Spring 事务管理,实现方式有几种,原理是什么?

编程式:

声明式:注解和XML配置

Spring 事务管理的原理是基于 AOP 技术和 JDBC 事务 API 实现的。当应用程序中的方法被标记为需要事务管理时,在方法执行前,Spring 会创建一个代理对象,并在代理对象中织入事务管理的逻辑。当方法执行时,代理对象会自动开启事务、执行业务逻辑、提交或回滚事务,并在方法执行后释放连接,保证了数据库操作的完整性和一致性。事务管理的实现依赖于底层的数据源和JDBC 驱动,可以支持不同的事务管理方式和隔离级别。

11.声明式事务哪些场景下会失效

  • @Transactional 应用在非 public 修饰的方法上
  • 异常被 catch 捕获导致失效
  • 出现编译期异常
  • @Transactional 事务传播行为设置错误
  • 数据库引擎不支持事务
  • 同一个类中,使用非代理对象调用一个有事务的方法,导致事务错误

12.SpringWEB(springMVC)运行流程

Spring复习-问题回答,java,spring

DispatcherServlet的工作原理:

  1. 请求接收:当客户端发送一个HTTP请求时,DispatcherServlet会创建一个请求对象,并从中获取请求的URL路径、HTTP方法、请求头等信息。
  2. 请求映射:DispatcherServlet会使用HandlerMapping实例来根据请求的URL路径和HTTP方法来匹配一个或多个Handler实例。HandlerMapping实例负责将URL路径和HTTP方法映射到具体的Handler实例上。
  3. 请求解析:当一个Handler实例被选中后,DispatcherServlet会调用HandlerAdapter实例来解析请求,获取请求的参数、请求头等信息。
  4. 业务处理:当请求被解析后,Handler实例会调用业务逻辑来处理请求。这个过程通常由Controller类中的方法来完成。
  5. 视图渲染:当业务逻辑处理完成后,Handler实例会调用ViewResolver实例来选择一个合适的视图来生成HTTP响应。ViewResolver实例负责将业务逻辑的结果转化为HTML、XML等格式的视图内容。
  6. 响应生成:当视图被选择后,Handler实例会调用View类中的render方法来生成HTTP响应。这个过程通常包括设置响应头、生成响应内容等操作。
  7. 响应发送:当HTTP响应生成完成后,DispatcherServlet会将响应发送给客户端。这个过程通常由Servlet容器来完成。

13.spring 和 springboot 的关系区别

 SpringBoot是Spring的升级,简化Spring框架的搭建;SpringBoot的核心是:起步依赖,自动装配。文章来源地址https://www.toymoban.com/news/detail-821578.html

到了这里,关于Spring复习-问题回答的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring复习:(12) BeanDefinitionHolder

    BeanDefinitionHolder有3个属性: 分别用来存储BeanDefinition, bean name和别名。 实现了接口BeanMetadataElement的getSource方法 该方法从beanDefinition属性中拿到source并返回。

    2024年02月13日
    浏览(33)
  • spring复习:(6) AbstractBeanDefinition

    private volatile Object beanClass; 这个变量用来保存bean对应的类,该变量可能为String类型,也可能为Class?类型。 操作它的几个主要方法:

    2024年02月13日
    浏览(31)
  • spring复习:(33)AopProxyFactory接口

    该接口只用一个方法: createAopProxy,用来创建Aop代理对象,它只有一个实现类:DefaultAopProxyFactory. public class DefaultAopProxyFactory implements AopProxyFactory, Serializable { }

    2024年02月16日
    浏览(31)
  • Spring复习:(59)@Qualifier注解

    @Qualifier注解用来指定自动注入时合作bean需要满足的qualifier的名称,如果一个bean没有指定qualifier属性,则用它的id为qualifier,来给别的bean提供注入。 示例 ##########################################################

    2024年02月11日
    浏览(34)
  • 解决Spring Boot跨域问题(配置JAVA类)

    跨域问题指的是不同端口之间,使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它是为了保证用户的安全,防止恶意网站窃取数据。 比如前端用的端口号为8081,后端用的端口号为8080,后端想接收前端发送的数据就会出现跨域问题。 如图所示: 这里

    2024年01月17日
    浏览(49)
  • java spring boot 注解、接口和问题解决方法(持续更新)

    @RestController         是SpringMVC框架中的一个注解,它结合了@Controller和@ResponseBody两个注解的功能,用于标记一个类或者方法,表示该类或方法用于处理HTTP请求,并将响应的结果直接返回给客户端,而不需要进行视图渲染 @Controller         是Spring Framework中的注解,用于

    2024年02月06日
    浏览(55)
  • Spring复习:(1) DefaultListableBeanFactory和BeanDefinitionReader

    一、beans11.xml: 二、Student类: 三、主类:

    2024年02月12日
    浏览(28)
  • spring复习: (16) AbstractBeanFactory之doCreateBean

    总体流程: 一、 先调用getSingleton,尝试从缓存中获取bean 如果获取bean成功,则调用getObjectForBeanInstance(sharedInstance, name, beanName, null); 该方法主要是通过区分普通bean和工厂bean来决定是返回原始的bean还是工厂bean通过调用getObject方法产生的bean. 二、如果第一步中sharedInstance为null,则

    2024年02月15日
    浏览(32)
  • spring复习:(39)注解方式的ProxyFactoryBean

    一、定义接口 二、定义实现类: 三、定义配置类,配置业务bean、advisor bean、ProxyFactoryBean 四、定义主类,获取ProxyFactoryBean并使用 五、运行结果

    2024年02月16日
    浏览(35)
  • 解决Spring Initializr只能创建为Java 17版本以上的问题

      目前我们发现使用IntelliJ IDEA通过Spring Initializr创建创建Spring Boot项目只能创建Java 17版本以上,但我们常用的还是Java 8版本,那么该如何解决呢?   Spring Initializr是Spring官方提供的一个用于初始化Spring Boot项目的工具。它可以帮助开发人员快速创建一个基于Spring Boot的项目

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包