Spring01_spring概述和IOC概念
1、Spring简介:
1)Spring是分层的JavaSE/EE轻量级框架(full-stack),以IOC(Inverse Of Control反转控制)和AOP(Aspect Oriented Programming面向切面编程)为内核。提供了表现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,
还可以整合开源世界中众多的优秀的第三方框架和类库,逐渐成为使用最多的Java EE企业级应用框架
2)Spring优势:
a:方便解耦,简化开发
通过Spring提供的IOC容器,可以将对象的依赖交给Spring控制,避免硬编码造成的程序耦合。用户可以不再为单例模式类,属性文件解析等这些很底层的问题进行编码,可以更专注于上层的应用。
b:AOP编程的支持
通过Spring的AOP功能,方便进行面向切面编程。许多不能通过OOP实现的功能可以通过AOP轻松实现。
c:声明式事务的支持
传统的事务需要我们通过频繁的编码控制,这里可以通过声明式方式灵活的对事务进行控制
d:方便集成各种有序框架
Spring可以降低各种框架的使用难度,提供了对各种优秀框架(Struts2、Hibernate、Hessina、QUartz等)的支持
e:方便程序测试
测试人员不需要再关注必须的实现类和接口。可以使用非容器依赖的编程方式进行几乎所有的测试工作
f:降低Java API的使用难度。提供了经典的学习范例等等
3)Spring的体系结构
2、IOC的概念和作用
1)耦合性介绍
耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。在软件工程中,耦合指的就是就是对象之间的依赖性。对象之间的耦合越高,维护成本越高。
2)耦合分析
public class AccountServiceImpl implements IAccountService { private IAccountDao accountDao = new AccountDaoImpl(); }
上面的代码表现了:
业务层调用持久层,此时业务层依赖持久层的接口和实现类。如果此时没有持久层的实现类,那么业务层就不可以使用。这种就是编译时期的依赖
//1.注册驱动 //DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Class.forName("com.mysql.jdbc.Driver"); //2.获取连接 //3.获取预处理 sql 语句对象 //4.获取结果集 //5.遍历结果集
在比如使用JDBC操作的时候,注册驱动我们使用的是Class.forName而不是DriverManager的registerDriver方法。
原因:
我们的类依赖了数据库的驱动类,如果这时候我们更换了数据库的品牌方,这里就需要修改原码来重新安装数据库连接,维护成本大,这显然不是好的方案。
3)解决思路
我们注册驱动的时候是通过反射的方式进行注册,此时只需要一个字符串。我们的类中不依赖一个具体的驱动类,此时就算我们删除了原来的驱动,只需要更新一个新驱动的字符串就好。而这个字符串我们可以通过配置文件解决硬编码。
4)工厂模式解耦
根据这个思路我们可以把三层对象全部进行配置文件配置,然后通过工厂读取配置文件后,创建配置的对象保存起来,想用的时候直接取出类就可以。
5)IOC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!