汝州网站制作,开办时 网站建设费 科目,wordpress识别环境的文件夹,wordpress+4.4.1+漏洞个人主页#xff1a;兜里有颗棉花糖 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring系列】 本专栏旨在分享学习Spring MVC的一点学习心得#xff0c;欢迎大家在评论区交流讨论#x1f48c; 目录 前言一、IoC二、… 个人主页兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【Spring系列】 本专栏旨在分享学习Spring MVC的一点学习心得欢迎大家在评论区交流讨论 目录 前言一、IoC二、Bean的存储Controller控制器存储Service服务存储Repository仓库存储Component组件存储Configuration类注解之间的关系Bean方法注解Bean参数的传递 三、扫描路径四、Spring DI属性注入构造方法注入Setter方法注入 前言
我们知道Java是一个面向对象的语言既然是面向对象的话就必须得有对象无论我们使用哪种框架或者组件前提是必须得有对象而Spring IoC就是帮助我们创建和管理对象的可以把Spring IoC当成一个创建和管理对象的容器。
Spring IoC是Spring全家桶中各个模块的基础创建对象的容器。
AOP是以IoC为基础AOP是面向切面编程。 什么是面向切面编程。 在传统的面向对象编程中我们通过将功能分散到对象的方法中来实现系统的各种需求。但是随着系统的复杂性增加这种方式可能导致代码的重复和混乱特别是在处理横切关注点cross-cutting concerns时如日志记录、事务管理、安全性等。 AOP的出现就是为了解决这些横切关注点的问题。它允许开发者通过将横切关注点从业务逻辑中分离出来然后在需要的地方进行统一的管理和应用。在AOP中这些横切关注点被称为切面Aspect它们是与业务逻辑独立的模块可以在不修改源代码的情况下通过横切方式将它们应用到系统中。可以将AOP理解为抽象的面向编程 一、IoC
IoC控制反转Inversion of Control即将创建对象的控制权进行反转。通常情况下我们是手动进行对象的创建的而Spring IoC可以使得开发者不再需要创建对象而是由IoC容器根据需求自动创建项目所需要的对象。
Spring容器管理的主要是对象,这些对象,我们称之为Bean.我们把这些对象交由Spring管理,由 Spring来负责对象的创建和销毁.我们程序只需要告诉Spring,哪些需要存,以及如何从Spring中取出对象所以Spring IoC最主要的两个功能是存取对象。
二、Bean的存储
IoCInversion of Control是一种设计模式用于实现控制反转其中对象的创建和管理被转移到了容器如Spring框架中。在Spring框架中对象的管理通常通过依赖注入Dependency Injection来实现。
常见的依赖注入方式有两种分别是类注解和方法注解。
类注解Controller、Service、Repository、Component、Configuration。方法注解Bean。
Controller控制器存储
使⽤Controller存储bean对象的代码如下所⽰ ApplicationContext context取到Spring上下文之后就可以取到所Spring管理的对象然后执行对象中的doController方法。
Service服务存储
使⽤Service存储bean对象的代码如下所⽰ 通过类型获取对象 通过名称获取对象需要强制类型转换 通过名称和类型获取bean 运行结果如下 Repository仓库存储
使⽤Repository存储bean对象的代码如下所⽰ 运行结果如下 Component组件存储
使⽤Component存储bean对象的代码如下所⽰ 运行结果如下 Configuration
使⽤Configuration存储bean对象的代码如下所⽰ 运行结果如下 类注解之间的关系
程序的应用分层调用如下 Controller、Service、Repository、Configuration注解都是Component注解的衍生类。
Spring MVC架构中的三层结构控制层(Controller)、服务层(Service)和持久层(Repository/DAO)
控制层(Controller)负责接收和处理HTTP请求并将处理结果返回给客户端。通常使用Controller或RestController注解标识。服务层(Service)负责应用程序的业务逻辑处理包括数据处理、算法实现等。服务层通常使用Service注解标识。持久层(Repository/DAO)负责与数据库进行交互执行数据的持久化操作。通常使用Repository注解标识DAO接口的实现类。
在这种架构下控制层中的方法可以调用服务层中的方法而服务层中的方法可以调用持久层中的方法从而实现了业务逻辑的分层和解耦。
Bean方法注解
Bean注解使用
使用Bean注解的时候Bean的名称是方法名即首字母大写如果前两个字母是小写的话那么Bean的名称就是类名。Bean注解必须搭配其它五大注解来使用。即方法注解Bean 要配合类注解才能将对象正常的存储到Spring容器中当一个对象类型存在多个Bean时就不能通过类型来获取Bean了此时应该通过名称或者方法名称的方式来获取Bean如下举例。 运行结果如下 Bean参数的传递
Bean参数的传递演示如下 运行结果如下 三、扫描路径
SpringBoot的一大特点约定大于配置。此特点的其中一个体现就是扫描路径。
启动类默认扫描路径是启动类所在的路径及其子孙目录。 如下图将启动类放到controller目录下面那么启动类扫描的范围就是controller目录及其controller所有的子孙目录 启动类这样放置的话运行就会报错。 如果非要把启动类放到controller目录下的话要配置扫描路径让Spring扫描到这些注解也就是通过ComponentScan来配置扫描路径。 再次运行就会成功了 虽然通过ComponentScan来配置扫描路径但是不推荐这样做推荐做法是把启动类放在我们希望扫描的包的路径下,这样我们定义的bean就都可以被扫描到。 四、Spring DI
DI即依赖注入的意思有的地方叫做对象注入、属性装配这里需要根据上下文去进行理解。
依赖注入是一个过程是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源而资源指的就是对象。简单来说,就是把对象取出来放到某个类的属性中。
关于依赖注入Spring为我们提供了三种方式
属性注入构造方法注入Setter注入
下面我们上这三种方式一一进行举例。
属性注入
属性注⼊是使⽤Autowired实现的比如将Service类注⼊到Controller类中。 运行结果如下 属性注入以类型进行匹配与注入的属性名称无关。当一个类型存在多个对象时优先进行名称匹配但是如果连名称都匹配不上的话就会报错。
构造方法注入
构造方法注入是在类的构造⽅法中实现注入。 运行结果如下
当存在多个构造函数时需要加AutoWired注明使用哪个构造函数如果只存在一个构造函数的话则AutoWired可以省略。 Setter方法注入 运行结果如下 好了以上就是本文的全部内容了。希望各位友友可以一键三连哈