首页 > 其他分享 >Spring相关知识点总结

Spring相关知识点总结

时间:2024-03-22 14:33:41浏览次数:28  
标签:总结 知识点 Web Spring bean Bean 注解 IoC

一. IoC和AOP

IoC和AOP是Spring框架中的两个核心思想。

1. 什么是IoC?

IoC(Inversion of Control)控制反转,是一种设计思想或设计模式,不是一种具体的技术实现。IoC的核心思想是将原本在程序中手动创建对象的控制权交给Spring框架管理。

IoC可以看作是一个工厂,负责对对象进行统一创建和管理。当需要创建一个对象时,只需要配置好配置文件和注解即可,不需要了解对象是如何创建的。在Spring中,IoC容器是实现IoC的载体,IoC容器实际上是一个Map(key,value),存放各种对象。

IoC解决了什么问题?

让两方不在相互依赖,交由第三方容器进行资源管理。这样可以降低对象间的耦合度和依赖程度,同时方便了资源的统一管理。

IoC 最常见以及最合理的实现方式叫做依赖注入(Dependency Injection,简称 DI)。

2. 什么是AOP?

AOP(Aspect-Oriented Programming)面向切面编程,将那些与业务无关,却为业务模块所共同调用的逻辑(如事务处理、日志管理、权限控制等)封装起来。减少冗余代码,降低模块耦合度,便于后续的扩展与维护。

AOP之所以称为面向切面编程,是因为它的核心思想是将横切关注点(事务处理、日志管理、权限控制等)从核心业务逻辑中分离出来,形成一个个切面(横切关注点的封装类)。

AOP解决了什么问题?

在不改变原有业务逻辑的前提下,将横切关注点从核心业务逻辑中分离,减少代码冗余程度,实现代码的复用和解耦。

AOP的底层基于动态代理,如果要代理的对象实现了接口,那么AOP采用JDK动态代理去创建代理对象,如果没有实现接口的对象,那么采用Cglib生成一个被代理对象的子类作为代理。

二. Spring MVC

MVC是模型(Model)、视图(View)、控制器(Controller)的缩写,其核心思想是通过将业务逻辑、数据、视图分离来组织代码。 

Spring MVC 可以帮助我们进行更简洁的 Web 层的开发,并且它天生与 Spring 框架集成。Spring MVC 下一般把后端项目分为 Service 层(处理业务)、Dao 层(数据库操作)、Entity 层(实体类)、Controller 层(控制层,返回数据给前端)。

三. Spring、Spring MVC和Spring Boot之间的关系

Spring MVC和Spring Boot是建立在Spring框架基础上的扩展。

Spring MVC是基于Spring的Web开发框架,用于构建Web应用程序。Spring Boot简化了Spring的搭建和配置,做到开箱即用,并且内嵌服务器,如Tomcat,方便部署和运行,同时也提供了一系列强大的开发工具支持,如自动重启、自动化测试等,提升了开发效率。

四. Spring Bean

Bean代指那些被IoC容器管理的对象。需要告诉IoC容器帮我们管理哪些对象。

1. 将一个类声明为Bean的注解有哪些?

  • @Component:通用的注解,可标注任意类为Spring组件。如果一个Bean不知道属于哪个层,可用该注解
  • @Repository: 对应持久层Dao层,主要用于数据库相关操作。
  • @Service: 对应服务层,主要涉及一些复杂的逻辑,需要调用Dao层。
  • @Controller: 对应Spring MVC控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。

2. @Component 和 @Bean 的区别是什么?

  • @Component 注解作用于类,@Bean注解作用于方法。
  • @Component 通过类路径扫描来自动检测类以及自动装配到Spring容器中(可以使用ComponentScan注解定义要扫描的路径,从中找出标识了需要装配的类)
  • @Bean注解通常是在标有该注解的方法中,定义产生这个bean,告诉Spring这是某个类的实例,要用时给我。
  • @Bean注解比@Component注解的自定义性更强,而且很多地方只能通过Bean注解来注册bean。比如引用第三方库中的类,需要装配到Spring容器时,只能通过@Bean来实现。

3. 注入Bean的注解有哪些?

Spring内置的 @Autowired 以及 JDK 内置的 @Resource 和 @Inject 都可以用于注入 Bean。

4. @Autowired和@Resource的区别?

  • @Autowired是Spring提供的注解,@Resource是JDK提供的注解。
  • Autowired默认注入方式为byType,@Resource默认注入方式为byName。
  • 一个接口存在多个实现类时,@Autowired和@Resource都需要通过名称匹配到对应Bean。Autowired可以通过 @Qualifier注解来显式指定名称,@Resource可以通过name属性来显式指定名称。

5. Bean的作用域

  • singleton: IoC容器中只有唯一的bean实例。Spring中的bean默认都是单例的,是对单例设计模式的应用。
  • prototype: 每次获取都会创建一个新的bean实例。连续getBean() 两次,得到不同的Bean实例。
  • request(仅Web应用可用): 每次HTTP请求都会产生一个新的bean(请求 bean),该bean仅在当前HTTP request内有效。
  • session(仅 Web 应用可用) : 每次来自新session的HTTP请求都会产生一个新的bean(会话 bean),该 bean 仅在当前 HTTP session 内有效。
  • application/global-session(仅 Web 应用可用):每个Web应用启动时创建一个Bean(应用 Bean),该 bean 仅在当前应用启动时间内有效。
  • websocket(仅 Web 应用可用):每一次WebSocket会话产生一个新的 bean。

如何配置作用域?

xml方式:

<bean id="..." class="..." scope="singleton"></bean>

注解方式:

@Bean
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public Person personPrototype() {
    return new Person();
}

标签:总结,知识点,Web,Spring,bean,Bean,注解,IoC
From: https://blog.csdn.net/konghaoran1/article/details/136928641

相关文章

  • springboot/java/php/node/python微信小程序的宠物管理系统【计算机毕设】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着社会的发展和人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。伴随着宠物数量的增加,宠物管理问题也日益凸显,如宠物的健康监护、日常饮食管理......
  • SLF4J记录日志&&日志文件的滚动策略__SpringBoot
    Logback是Log4j的作者的另一个开源日志组件,与Log4j相比,Logback重新了内核,使它的性能提升了很多,大约是Log4j的10倍,同时占用更小的内存,并且完整的实现了SLF4JAPI是你可以很方便的切换日志框架。SpringBoot默认集成了Logback,可以开箱即用,对于中小型项目,个人更倾向于......
  • 【工作总结】证书到底有什么用?
    写在前面在去年的S13全球总决赛中,Faker今年面对LPL最强的队伍,一号种子JDG时,语出惊人:我见证了许多队伍的兴衰,但是浪花淘尽,唯有我屹立不倒。当然最后Faker更是一路高歌猛进,捧起了人生的第四座召唤师奖杯,赛后王多多老师的结束语更是让笔者有了无限的感慨,其中最让笔者感触的......
  • 总结
    三层架构+MVC架构---》解耦开发框架SpringIOCAOPIOC:控制翻转约泡:泡温泉,泡茶,泡友附近的人,打招呼。加微信,聊天,天天聊,--》约泡浴池(容器):温泉,茶庄,泡友直接进温泉,就会有相应的好友跟你一起!原先是需要通过自己一步步进行操作,现在交给了容器!需要什么就去拿即可!newI......
  • Spring源码:手写Bean配置
    文章目录一、背景二、解决1、基于xml配置2、基于注解1)定义相关注解2)扫描包下的所有被@Componment修饰的Java类,生成BeanDefinition,注册到BeanFactory三、优化四、总结1、注解2、xml配置一、背景下面的代码,无论是IOC,DI,都需要创建BeanDefinition,设置构造器、初始方......
  • 计算机常见的知识点(1)
    目录一、计算机网络基础知识。1、局域网中的MAC层2、在计算机中BUS表示总线,TE表示终端,Server表示服务器3、 FTP的含义是一种数据传输协议,负责将我们电脑上的数据与服务器数据进行交换4、SMTP、Telnet、FTP、DNS的含义一、计算机网络基础知识。1、局域网中的MAC层......
  • SpringBoot - [03] SpringBoot整合Mybatis Plus连接数据库
    原文链接:https://mp.weixin.qq.com/s/ZJTKX_gmn6ffsY7hNrspHQ 一、开发环境JDK:1.8SpringBoot:2.1.1.RELEASEMySQL:8.0.28 二、引入依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId&g......
  • C IO复用select, epoll 简单总结
    1.文件描述符类型REG:文件DIR:目录CHR:字符BLK:块设备UNIX:unix域套接字FIFO:先进先出队列IPv4:网际协议(IP)套接字其中,标准输入STDIN(0)和STDOUT输出(1),STDERR错误(2)为指定的值2.  IO复用模型(1).select(在指定的一段时间内,轮询监听用户需要的文件描述符(用户添加到fd......
  • OGG 抽取进程注册时报OGG-08221 ORA-00001错误总结
    OGG部署时,抽取进程(Extract)注册到数据库时遇到下面错误:REGISTER EXTRACT ***** DATABASEERROROGG-08221CannotregisterorunregisterEXTRACT becauseofthefollowingSQLerror:OCIErrorORA(status=1-ORA-00001:uniqueconstraint(SYSTEM.LOGMNR_SESSION_UK1)......
  • Spring中Bean的生命周期
    1.BeanDefinition2.构造函数在此期间,调用Bean的构造函数,实例化对象(但是还未赋值!)3.依赖注入Spring容器会将Bean的属性设置为Bean定义中指定的值。这个过程也被称为依赖注入,因为Spring容器会自动寻找并注入Bean所依赖的其他Bean。4.Aware接口用于增强Bean的功能......