更新时间:2020-03-26 13:06:52 来源:极悦 浏览2172次
毫无疑问,Spring框架是最流行的Java框架之一,通过提供依赖注入和控制反转等特性,可以轻松创建企业级Java应用程序。
但是,老实说,Spring不仅仅是另一个DI和IOC框架。通过提供一个有用的抽象层,它进一步简化了许多Java的api,例如JDBC、JMS、JavaMail等等。它们消除了Java开发人员在执行SQL语句和处理结果集以获得他们想要的Java对象时所面临的大部分困难。
因此,当您学习Spring时,不仅要学习如何使用它,还要学习如何用Java和面向对象方式编写更好的代码。
在这篇文章中,我将分享我在学习Spring过程中发现的一些最佳实践,主要是通过阅读CraigWalls的经典动作书籍《SpringInAction》和我自己在使用Spring过程中的体验。
这本书对我产生了巨大的影响,因为克雷格出色的写作风格,以及他解释Spring每一个概念的方式。如果你还没有读过它,我强烈建议你去读这本书——它完全值得你花费时间和金钱。
无论如何,在不浪费时间的情况下,以下是我学到的三种最佳实践,并建议每一个Java程序员在用Java编写代码时都要注意到这一点并加以应用。
1、CodingforInterfaces面向接口的编程
这是我第一次读HeadfirstDesignPatterns时学到的一个老的OOP指导原则。这个OOP设计原则的主要目的是减少两个类之间的耦合,从而增加灵活性。
Spring严格遵循这个面向对象的指导方针,并且经常公开一个接口来使用关键类,例如创建JdbcOperation接口来利用JdbcTemplate。这种做法可以让不同层之间松散耦合。
另一个很好的例子是缓存接口,它用于提供缓存。所有其他的缓存实现,例如EhCache、ConcurrentMapCache和NoOpCache等,都实现了这个接口。
如果您的代码依赖于缓存接口而不依赖于任何特定的实现,那么您可以切换缓存提供者而不会影响代码的其他部分。
下面是使用集合框架为Java中的接口编写代码的简单示例。如果您仔细观察,在这个示例中,我使用了接口而不是实现来声明Java中的变量、参数和返回方法类型。
importjava.util.Arrays; importjava.util.List; importjava.util.stream.Collectors; /** *ProgramtodemonstratecodingforinterfacesinJava *@authorWINDOWS8 * */ publicclassHello{ publicstaticvoidmain(Stringargs[]){ //Usinginterfaceasvariabletypes List<String>rawMessage=Arrays.asList("one","two","three"); List<String>allcaps=toCapitalCase(rawMessage); System.out.println(allcaps); } /** *UsingInterfaceastypeofargumentandreturntype */ publicstaticList<String>toCapitalCase(List<String>messages){ returnmessages.stream() .map(String::toUpperCase) .collect(Collectors.toList()); } }
这种编码风格是灵活的,在将来更容易进行扩展。
2、偏爱unchecked的异常胜过checked异常
如果您已经使用了Spring框架,那么您就会注意到Spring更倾向于不检查的异常,而不是检查过的异常,最好的例子就是SpringJDBC。
Spring有丰富的异常层次结构来描述连接和从数据库检索数据时可以获得的不同错误,但是它们的根是DataAccessException,这是未检查的。
Spring认为,大多数错误都源于在catch块中无法纠正的原因,因此它将捕获异常的决定留给开发人员,而不是像Java那样强制他们进入异常。其结果是更简洁的代码,没有空的catch块——以及更少的try-catch块。
在处理Java中的错误和异常时,这也是最佳实践之一。
3、使用模板方法设计模式
Spring大量使用模板方法设计模式来简化事情。这方面的一个很好的例子是JdbcTemplate,它在使用JDBCAPI时省去了很多麻烦。您只需要定义它需要什么,Spring就会处理流程的其余部分。
如果您不知道,模板模式定义了一个流程或算法,在这个过程或算法中,您无法更改流程,但同时,您可以根据需要定制步骤。
例如,在处理JDBC时,可以使用JdbcTemplate来执行查询并获取所需的对象。您只需要提供SQL,它在每种情况下都是不同的,以及映射逻辑将一行从一个表映射到一个对象。
这里有一个很好的图表,很好地解释了模板模式。您可以看到,每个人都有一些共同的任务,但是他们做不同的工作,模板方法很好地捕捉到了这一点。他们所需要做的就是定义他们的工作,他们可以通过定义work()抽象方法来定义他们的工作。
除了JdbcTemplate之外,您还可以在Spring框架的API中找到许多模板方法模式的其他示例,例如JmsTemplate和RestTemplate,它们允许您使用Java应用程序中的RESTAPI。
这就是您可以从Spring中学到的一些Java最佳实践。Spring是一个很棒的框架,其作者是经验丰富的Java开发人员。通过使用Spring以及查看它们的代码、所做的决策以及它们如何设计api,您可以学到很多东西。Spring是开源的,这意味着您可以下载并查看它们的源代码。
我知道Spring是许多这样的最佳实践的集合,有很多东西需要学习,但是我发现这三种方法在Spring中随处可见,这对Spring框架的代码质量产生了巨大的影响。
以上就是极悦java培训机构的小编针对“Java基础学习:Java框架学习方法”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习