Spring框架(一)——耦合和解耦

前面两个点相信大部分百度都有,这里我就是大概看了一下,也不是我写的是抄百度的,在步入spring时还是有必要了解一下spring是个什么东西

 

什么是Spring

Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多 著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。

 

Spring的优势

  • 方便解耦,简化开发 通过 Spring提供的 IoC容器,可以将对象间的依赖关系交由 Spring进行控制,避免硬编码所造 成的过度程序耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可 以更专注于上层的应用。

  • AOP编程的支持 通过 Spring的 AOP 功能,方便进行面向切面的编程,许多不容易用传统OOP 实现的功能可以通过 AOP 轻松应付。

  • 声明式事务的支持 可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理, 提高开发效率和质量。

  • 方便程序的测试 可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可 做的事情。

  • 方便集成各种优秀框架 Spring可以降低各种框架的使用难度,提供了对各种优秀框架(Struts、Hibernate、Hessian、Quartz 等)的直接支持。

  • 降低 JavaEE API的使用难度 Spring对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些 API 的 使用难度大为降低。

耦合和解耦

 

什么是耦合

耦合字面意思就是连在一起互相依赖,在程序中也会有存在耦合,换种说法可以说是程序间的依赖关系,程序间的耦合有类之间的耦合,也有方法之间的耦合,在软件开发的过程中我们通常用耦合度和内聚度作为衡量模块独立程度的标准。对象之间的耦合越高,维护成本越高。

耦合在代码中举例表现

UserInterface interface=new UserInterfaceImpl();

这段代码是一个简单的实现接口的操作,假若我们没有创建UserInterfaceImpl这个实现类,那么在编译期间它就会产生错误,这种编译期依赖关系,应该在我们开发中杜绝。我们需要优化代码解决,在这我们就需要说到解耦了

什么是解耦

解耦就是耦合的相反词吧可以这么说,就是把耦合的东西解开使他们的独立性增强,也就是降低程序间的依赖关系,在我们的实际开发中我们应该做到编译期不依赖,运行时依赖,这时我们在讲一个让大家非常熟悉的例子,相信大家都学过jdbc吧,在我们注册驱动的时候我们为什么选用:

 Class.forName("com.mysql.cj.jdbc.Driver");

而不是选用:

DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 

请注意这里在第二条代码我们是用了new,这意味着如果没有了mysql这个驱动,那么整个代码根本就通过不了编译,这就存在了一种耦合性,而第一条代码恰恰就是一个解耦实例,即使没有这个驱动我们也能进行编译,只不过说如果没有这个驱动我们程序还是不能运行,只是我们能够编译而已。

 

更多问题

Q:驱动不存在,那可以把驱动装载进来就解决了啊?

A:的确是解决了,但是如果我们更换了数据库,不用mysql了用oracle,那你岂不是要去修改源码,在真实的项目中这是我们不想要的。

Q:那使用Class.forName()在参数里已经把数据库写死了,那还不是一样换数据库要修改源码?

A:使用了Class.forName()我们的类中不再依赖具体的驱动类,此时就算删除 mysql 的驱动 jar 包,依然可以编译,但是的确存在了这个参数写死的问题,其实这个问题非常容易解决,我们利用配置文件配置就好了,这样即使我们如何换数据库,只需要更改配置文件即可

发布了15 篇原创文章 · 获赞 7 · 访问量 1920

猜你喜欢

转载自blog.csdn.net/weixin_40875853/article/details/104066588
今日推荐