首页 > 其他分享 >Spring常见问题描述

Spring常见问题描述

时间:2023-03-29 16:45:27浏览次数:48  
标签:常见问题 对象 spring bean Spring 注解 注入 描述

1 渊源 原型在200210由Rod Johnson发布的书中体现,后来在200403spring 1.0版本发布,201709spring 5.0发布,

(1)spring ioc 控制反转,管理容器中的bean,主要使用di依赖注入实现。

  工厂模式,通过sessionFactory去注入实例。

(2)spring Aop 面向切面,调用者和被调用者解藕,用于权限、缓存等功能实现。

spring transaction

事务管理,一通过配置文件,二基于注解

spring mvc

数据,业务,展示分离

spring security

提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以spring应用上下文中配置的bean,为应用提供声明式的安全访问控制功能。

spring schedule

 基于spring能用统一的配置和编码风格来使用schedule方案,支持Jdk time、concurrent、quartz

1.2 spring boot

     由于spring的边界不断的进行扩充,导致了基础配置越来越复杂,spring boot应运而生,201404 springboot 1.0.0发布,其核心思想,约定大于配置。

引入web模块

   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>

开发环境调试

spring-boot-maven-plugin

json接口开发

@RestController

@RequestMapping(“/test”)

自定义filter

@Configuration

@Bean

 自定义配置文件

@Component

@Value(“${asd.sdf}”)

1.3 spring cloud 

      基于spring boot开发,解决微服务架构中的服务治理而提供的开发框架。是一系列框架的有序集合,简化了分布式基础设施的开发,如发现注册,配置中心,消息总线,负载均衡,断路器,数据监控等。

2 Spring bean的作用域 :singleton、prototype、request、session 、global session

<bean=“” class=“” scope=“”/>

(1)singleton单例 缺省作用域:容器中只会存在一个共享的bean实例,无论多少个bean引用他,始终指向一个对象。

(2)prototype原型:每个bean都会创建一个新的bean实例。

(3)request:不同的http request产生不同的bean,该bean只在当前request有效。

(4)session :不同的http session产生不同的bean,该bean仅在当前session有效。

(5)global session:在一个全局的http session中,容器会返回该bean的同一个实例,仅在portlet context时有效

3 Servlet的生命周期:实例化、初始init、接收请求service、销毁destory

4 spring bean实例化顺序

  实例化bean对象

  设置对象属性(依赖注入)

  检验aware相关接口并设置相关依赖

  BeanPostProcessor前置处理

  检查是否是initbean决定是否调用afterpropertiesset

  检查是否配置有init-method

  BeanPostProcessor后置处理,至此Bean就被创建了。

  当bean不需要时,经过i清理阶段,如果实现了DisposableBean接口,则调用destory()

  如果Spring中配置了destroy-method属性, 则调用销毁方法。

5  Spring中Autowired和Resource关键字的区别

相同点:都是bean注入时的注解,变量和setter方法上。

不同点:@Resource不是Spring的注解,包是javax.annotation.Resource,byName查找,从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常

    @Autowired是Spring的注解,byType查找,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常。

 

spring ioc理解:控制反转,管理容器中的bean,主要使用di依赖注入实现。

  IOC让对象的创建不用去new了,可以由spring自动生产,使用java的反射机制,根据配置文件在运行时动态的去创建对象以及管理对象,并调用对象的方法的。

  依赖注入的方式有几种:构造器注入、setter方法注入、接口注入

(1)构造器注入:将被依赖对象通过构造函数的参数注入给依赖对象,并且在初始化对象的时候注入。

(2)setter方法注入:IoC Service Provider通过调用成员变量提供的setter函数将被依赖对象注入给依赖类。

(3)接口注入:依赖类必须要实现指定的接口,然后实现该接口中的一个函数,该函数就是用于依赖注入。该函数的参数就是要注入的对象。

7 什么是Spring:是一个轻量级的IOC和AOP容器框架,基于XML的配置,注解的配置,java的配置

  主要有几个模块:Spring Core:是框架的核心,它控制着控制反转和依赖注入等特性、

  Spring Context:在Core和Beans上产生,并提供了访问受限对象的媒介、

  Spring AOP、Spring Dao、

  Spring ORM:全称对象关系映射(Object/Relation Mapping),指将Java对象状态自动映射到关系数据库中的数据上。

  Spring Web、Spring MVC

8 Spring MVC工作流程:核心前端控制器DispatcherServlet,Controller执行返回ModelAndView

9 Spring MVC注解

  @RequestMapping:用于处理请求 url 映射的注解   @RequestBody:注解实现接收http请求的json数据,将json转换为java对象。   @ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。   @RequestParam:注解实现接收http请求的数据。 10 spring Aop理解:数据权限、日志、事务处理   AOP面向切面,用于与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect)类名上增加注解@Aspect,定义切点@Pointcut。   实现的关键:代理模式   (1)静态代理:AspectJ,AOP框架在编译阶段生成AOP代理类,   (2)动态代理:每次运行时在内存中临时为方法生成一个AOP对象,这个对象包含了全部方法,在特定的切点做了增强,并回调原对象的方法。  11 Spring框架用了哪些设计模式   (1)工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;   (2)单例模式:Bean默认为单例模式。   (3)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;   (4)模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。   (5)观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现--ApplicationListener。      

 

标签:常见问题,对象,spring,bean,Spring,注解,注入,描述
From: https://www.cnblogs.com/guobm/p/17269472.html

相关文章

  • Linux操作命令常见问题(N+)
    1.什么是Linux?它的特点是什么?答:Linux是一种开源的操作系统,其特点包括稳定性、安全性、灵活性、可扩展性、自由度高等。2.如何在Linux系统上安装软件?答:通常可以使用包......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-产品描述变广告文案应用从0到1快速入门——官
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载......
  • spring-boot-devtools 热部署造成的类加载问题
    如果你的项目在IDE中出现了像下面这些奇怪的错误objectisnotaninstanceofdeclaringclass//对象不是声明类的实例java.lang.ClassCastException:com.exam......
  • Springer出版社Applied Intelligence期刊投稿小记
      本篇文章记载自己在投稿过程面临的一些问题和解决方法,希望能对计划投稿本期刊的同学有所帮助。 1.模板    网站要求的nature模板:(注意不要尝试动模板,例如......
  • spring data jpa 分页
    publicPage<Task>getUserTask(LonguserId,Map<String,Object>searchParams,intpageNumber,intpageSize,StringsortType){PageRequestpageRequest=buil......
  • Spring整合Mybatis遇到的问题(一)
    问题1问题原因:在数据源配置类中没有创建事务管理在数据源配置类中添加好事务管理器的Bean即可问题2其实出现这个问题实质就是mapper接口和mapper.xml文件没有映射起......
  • SpringBoot(七)
    ③SpringBoot整合ActiveMQ老古董产品,目前市面上用的很少windows版安装包下载地址:https://activemq.apache.org/components/classic/download/运行bin目录下的win32或w......
  • spring注册bean
    spring是怎么注册一个bean的doGetObjectFromFactoryBean:177,FactoryBeanRegistrySupport(org.springframework.beans.factory.support)getObjectFromFactoryBean:101,......
  • Spring Boot 中的 ApplicationRunner 和 CommandLineRunner
    前言一般项目中的初始化操作,初次遇见,妙不可言。如果你还有哪些方式可用于初始化操作,欢迎在评论中分享出来~ApplicationRunner和CommandLineRunnerSpringBoot应用,在......
  • SpringBoot 集成支付宝的各种应用场景
    SpringBoot是一个非常流行的Java框架,它提供了一种快速、简便的方式来开发基于Java的Web应用程序。支付宝是中国最大的第三方支付平台,它提供了丰富的API,支持多种支付方式。......