知识点

相关文章

更多

最近更新

更多

【第十二章】零配置 之 12.1 概述 ——跟我学spring3

2019-03-01 17:02|来源: 开涛

12.1  概述

12.1.1  什么是零配置

      在SSH集成一章中大家注意到项目结构和包结构是不是很有规律,类库放到WEB-INF/lib文件夹下,jsp文件放到WEB-INF/jsp文件夹下,web.xml需要放到WEB-INF文件夹下等等,为什么要这么放呢?不这样放可以吗?

      所谓零配置,并不是说一点配置都没有了,而是配置很少而已。通过约定来减少需要配置的数量,提高开发效率。

因此SSH集成时的项目结构和包结构完全是任意的,可以通过配置方式来指定位置,因此如web.xml完全可以不放在WEB-INF下边而通过如tomcat配置文件中新指定web.xml位置。

还有在SSH集成中还记得使用在Struts2配置文件中使用模式匹配通配符来定义action,只要我们的URL模式将类似于/{module}/{action}/{method}.action即可自动映射到相应的Action类的方法上,但如果你的URL不对肯定是映射不到的,这就是规约。

零配置并不是没有配置,而是通过约定来减少配置。那如何实现零配置呢?

12.1.2 零配置的实现方式

零配置实现主要有以下两种方式:

  • 惯例优先原则:也称为约定大于配置或规约大于配置(convention over configuration),即通过约定代码结构或命名规范来减少配置数量,同样不会减少配置文件;即通过约定好默认规范来提高开发效率;如Struts2配置文件使用模式匹配通配符来定义action就是惯例优先原则。

  • 基于注解的规约配置:通过在指定类上指定注解,通过注解约定其含义来减少配置数量,从而提高开发效率;如事务注解@Transaction是不是基于注解的规约,只有在指定的类或方法上使用该注解就表示其需要事务。

对惯例优先原则支持的有项目管理工具Maven,它约定了一套非常好的项目结构和一套合理的默认值来简化日常开发,作者比较喜欢使用Maven构建和管理项目;另外还有Strtus2的convention-plugin也提供了零配置支持等等。

大家还记得【7.5 集成Spring JDBC及最佳实践】时的80/20法则吗?零配置是不是同样很好的体现了这个法则,在日常开发中同样80%时间使用默认配置,而20%时间可能需要特定配置。

12.1.3  Spring3的零配置

Spring3中零配置的支持主要体现在Spring Web MVC框架的惯例优先原则和基于注解配置。

Spring Web MVC框架的惯例优先原则采用默认的命名规范来减少配置。

Spring基于注解的配置采用约定注解含义来减少配置,包括注解实现Bean配置、注解实现Bean定义和Java类替换配置文件三部分:

  • 注解实现Bean依赖注入:通过注解方式替代基于XML配置中的依赖注入,如使用@Autowired注解来完成依赖注入。

  • 注解实现Bean定义:通过注解方式进行Bean配置元数据定义,从而完全将Bean配置元数据从配置文件中移除。

  • Java类替换配置文件:使用Java类来定义所有的Spring配置,完全消除XML配置文件。


本文链接:领悟书生教程网,转自http://sishuok.com/forum/blogPost/list/0/2543.html

相关问答

更多
  • 你是直接在win7上安装openSUSE吧?这肯定不行,因为安装openSUSE所需要的物理硬盘都处于win7管理的状态下。 有两种解决方法: 1、下载一个vmware,至于他的作用,简单讲就是在windows系统下虚拟或者模拟一个linux运行的环境。用vmware可以方便的安装openSUSE。至于怎么安装你看vmware的教程。 2、把你win7下的磁盘删除一块,最好能有20G,使其不受windows管理。然后把openSUSE刻成光盘,在之前从windows上删除下来的那一块硬盘上安装linux,就 ...
  • spring概述和作用[2022-03-15]

    Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构 ...
  • 1.A 是的,您可以将Nix视为一种使用/nix/store作为缓存的构建工具。 Nix是一名软件包管理员,只是这个设计的一个副作用 。 1.B 你的nix表达式取决于你的设置。 为了解决这个问题,请查看您的$ NIX_PATH变量,该变量指向nixpkgs回购副本所在的位置。 这些副本(有时仍然)由nix-channel工具管理,但将来您可以指向nixpkgs,如: export NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/archive/16.03 ...
  • 对于凌乱的文档感到抱歉,我们计划在可能的情况下编写更多用户友好版本,但还有很多工作要做。 如果您执行ipython profile create profile_name ipython将创建一个名为profile_name的新配置,您可以根据需要尽可能多地使用它而不用ipython [subcommand] [options] --profile=profile_name ,只需使用“ ipython [subcommand] [options] --profile=profile_name即可使用它。 ...
  • 我们发现这是ojdbc驱动程序11.2.0.4及更高版本中的一个错误。 我们将在oracle创建一个bug报告。 解决方法是使用名称中没有点的tnsaliases。 We have found out this is a bug in ojdbc driver 11.2.0.4 and onwards. We will create a bugreport at oracle. workaround would be to use tnsaliases without dots in their name. ...
  • 可能是Weblogic正在使用自己的JPA库,这个库比你的早。 可能是在安装过程中未启用JPA 2.1。 您需要配置服务器以强制执行库而不是WLS提供的库。 如何配置首选应用程序包 Could be that Weblogic is using its own library for JPA, which is older than yours. Could be that JPA 2.1 wasn't enabled during setup. You need to configure the serv ...
  • 不会。正如其他人在他的评论中所指出的那样,没有(有限数量的)两个幂的和可以加起来恰好为12.1。 就像你无法在十位中完全代表1/3一样,无论你在小数点后使用多少位数字。 No. As others noted in followups to his comment, no sum of (a finite number of) powers of two can ever add up to exactly 12.1. Just like you can't represent 1/3 exactly in ...
  • 在这两个版本中都有Oracle Data泵: http : //docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm 如果你没有你创建的任何类型 - 它会工作得很好, 如果你有 - 你必须手动检查一切正常。 只使用数据泵导出用户(SCHEMAS参数) - 根据我的经验 - 它将导出用户罚款。 请注意:“除非在要导出的模式列表中指定了引用的模式,否则不会导出跨模式引用” - 这可能就是您所提到的。 我建议仅创建元数据导出,并在DB_LINK上 ...
  • 在IntelliJ调试设置中,您可以选择是挂起所有线程还是仅挂起断点的一个线程。 如果将其设置为Thread,您的应用程序将继续运行其他线程。 In the IntelliJ debug settings you can select whether to suspend All threads or just the one Thread you have the break point on. If you set it to Thread, your app will keep running its ...
  • 在正试图加载的cx_Oracle共享库文件上运行ldd命令。 您应该可以使用“imp”模块来查找正在加载的cx_Oracle模块的位置,如下所示: import imp imp.find_module("cx_Oracle") 你可能会发现它正试图加载的模块被发现在你没有想到的地方! 此外,当您运行命令pip install cx_Oracle确认它实际正在编译以及正在链接的文件时。 我希望这些提示中的一个能够帮助您找出配置中存在的问题。 Run the ldd command on the cx_Ora ...