Spring框架

1.介绍Spring框架

1.1Spring

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。JAVA EE应该更加容易使用。

1.2Spring提高了IOC和AOP

(1)控制反转------Spring通过一种称作控制反转(IOC)的技术促进了松耦合。

(2)面向切面------Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。

(3)spring的特点:

方便解耦,简化开发----层层之间的依赖降低。

方便程序的测试:----提供单元测试jar,

方便集成各种优秀框架---集成第三方的框架---mybatis

2.为什么使用Spring

降低耦合,对象与对象之间的耦合度。

工厂模式解决上面的问题

接口解决上面工厂模式的问题

3.程序的耦合

耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。耦合性存在于各个领域,而非软件设计中独有的,但是我们只讨论软件工程中的耦合。在软件工程中,耦合指的就是就是对象之间的依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。

**4.**解决办法IOC控制反转

控制反转 (Inversion of Control,缩写为IoC ),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做**依赖注入(Dependency Injection,简称 DI**),还有一种方式叫"依赖查找"(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。使用对象的时候不再是我们直接new,而是将创建对象的权利交给框架中的核心容器IOC,需要使用对象的时候直接从容器中获取。

5.如何使用Spring

5.1加入依赖

5.2创建Spring的配置文件

5.3创建Dao

5.3.1接口
5.3.2dao类实现接口

5.4测试

6.BeanFactory和ApplicationContext的区别

Spring容器顶层接口:获取Bean对象;管理类和类之间的关系(依赖关系)BeanFactory由org.springframework.beans.factory.BeanFactory接口定义 BeanFactory是工厂模式(Factory pattern)的实现,是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

6.1ApplicationContext接口

是基于BeanFactory之上的,提供了应用程序框架服务,扩展的新功能如下:提供国际化的支持资源访问,如URL和文件 事件传递载入多个配置文件等 实现类常见有三个(1)ClassPathXmlApplicationContext:-classpath路径加载xml文件的(2)FileSystemXmlApplicationContext:基于项目根路径进行加载xml文件的(3)AnnotationConfigApplicationContext:基于注解的配置。基于类书写的配置

6.2BeanFactory和ApplicationContext区别

BeanFactory 才是 Spring 容器中的顶层接口。

ApplicationContext 是它的子接口。

单例模式下创建对象的时间点不一样:

ApplicationContext:(饿汉模式)只要一读取配置文件,马上就会创建配置文件中配置的对象。

BeanFactory:(懒汉模式)什么时候getBean("id"),也就是说当根据id获取对象时,才会创建。

7.获取bean的三种方式

8.bean的作用范围

bean对象的作用范围调整需要配置scope 属性,设置单例还是多例(只针对ApplicationContext接口来说,默认是单例的

scope:常用 singleton,prototype

singleton:单例的(默认值)当加载配置文件时,就会创建对象。

prototype:多例的(当getBean时才会创建对象)

request:作用于请求范围---同一个那么使用bean同一个。

session:作用于会话范围---同一个会话

相关推荐
sxhcwgcy2 小时前
Spring Cloud GateWay搭建
java
轩情吖2 小时前
MySQL之表的约束
android·数据库·c++·后端·mysql·开发·约束
xjt_09012 小时前
用 LiteLLM 打通 Codex CLI 与 Claude Code(有key即可实现编程自由)
后端·python·flask
Tzarevich2 小时前
Agent记忆模块:让大模型“记住”你,还能省Token!
后端·langchain·agent
baizhigangqw2 小时前
SpringBoot中整合ONLYOFFICE在线编辑
java·spring boot·后端
pangares2 小时前
Spring Boot文件上传
java·spring boot·后端
zhglhy2 小时前
Java分布式链路技术
java·分布式·分布式链路
大黄说说2 小时前
RESTful API vs GraphQL:设计哲学、性能博弈与选型指南
后端·restful·graphql
想你的液宝2 小时前
运单更改单字段对比与追溯系统设计与实现
后端·程序员