有备考软考的小伙伴,想积分落户,单位评职称?科目太多不知道怎么选?考试考点难点太多没有头绪?刚准备1个多月过了高级,关注我,我整理了软考各科目的报考条件、适合人群以及备考攻略,可以直接领取:
https://edu.51cto.com/surl=Qrh6x1
应用场景
上文所述的构建模块在很多的情况下使 Spring 是一个合理的选择,从资源受限的嵌入式程序到企业级的应用程序都可以使用 Spring 事务管理功能和 web 框架集成。
Spring 的声明式事务管理特性使 Web 应用程序拥有完整的事务,就像使用 EJB 容器管理的事务。所有的自定义业务逻辑可以用简单的 POJO 实现,用 Spring 的 IoC 容器进行管理。额外的服务包括发送电子邮件和验证,不依赖于网络层,这就可以让你选择在何处执行验证规则。Spring 的 ORM 支持集成 JPA,Hibernate,JDO;例如,当使用 Hibernate,您可以继续使用现有的映射文件和 标准的 Hibernate 的 SessionFactory 配置。表单控制器将 Web 层和领域模型无缝集成,消除 ActionForms 或其他用于变换 HTTP 参数成为您的域模型值的类的需要。
有些系统不允许你完全切换到一个不同的框架。但Spring Framework不强制要求你使用它的每一个组件;它不是一个一揽子的解决方案。现有的使用Struts、Tapestry、JSF和其它UI框架搭建的前端可以集成到以Spring为基础的中间层,这样可以使用Spring的事务功能。仅需要将业务逻辑交由ApplicationContext管理,并使用WebApplicationContext集成到web层。
当需要通过web服务访问现有代码,可以使用Spring的Hessian-, Burlap-, Rmi- 或 JaxRpcProxyFactory 类。启用远程访问现有应用并不难。
Spring Framework也提供了企业级Java Bean的访问和抽象层,使得可以重用现有的POJOs,并且将它们包装成无session状态的bean,用于可伸缩、自防卫的声明式安全的应用中。
依赖关系管理和命名约定
依赖管理和依赖注入是不同的概念。为了让 Spring 的这些不错的功能运用到运用程序中(比如依赖注入),需要收集所有需要的库(JAR文件),并且在运行时将它们放到类路径中,有时候编译时也需要。这些依赖不是虚拟组件的注入,而通常是在文件系统中的物理资源。依赖管理过程包括定位这些资源,存储它们并添加它们到类路径。依赖可以是直接(如我的应用程序运行时依赖于 Spring ),或者是间接(如我的应用程序依赖 commons-dbcp ,而 commons-dbcp 又依赖于 commons-pool)。间接的依赖也被称为 “transitive (传递)”,它是最难标示和管理的依赖。
如果要使用 Spring,需要复制那些包含你需要的 Spring 功能的 jar包。为了使这个过程更加简单,Spring 被分别打包为一些模块,这些模块尽可能的不相互依赖。例如,如果不想写一个 web 应用程序,你就不需要引入 Spring-web 模块。为了标记 Spring 库的模块我们使用了速记命名约定 spring-* 或者 spring-.jar ,其中 * 代表模块的简称(比如 spring-core,spring-webmvc, spring-jms 等)。实际的jar 文件的名字,通常是用模块名字和版本号联结组成(如 spring-core-4.3.0.RELEASE.jar)。
每个 Spring Framework 发行版本将会发布到下面的位置:
Maven Central (Maven 中央库),它是 Maven 查询的默认库,不需要任何特殊的配置就能使用。许多 Spring 常用的依赖库也存在于Maven Central ,并且 Spring 社区的很大一部分都使用 Maven 进行依赖管理,所以这是最方便。jar 命名格式是 spring-*-<version>.jar , Maven groupId 是 org.springframework。在公共 Maven 仓库中有 Spring 专有的库。除了最终的 GA 版本,这个库还保存开发的快照和里程碑。除了最终的 GA 版本,这个库还保存开发的快照和里程碑,所以这是让 Spring 的开发版本使用其它部署在 Maven Central 库的一个有用的地方。该库还包含一个用于发布的 zip 文件包含所有Spring jar,方便大家下载。所以,首先你要决定用什么方式管理你的依赖,通常建议你使用自动系统像 Maven, Gradle 或 Ivy, 当然你也可以下载 jar包。
Spring的依赖和依赖于Spring
虽然 Spring 提供了一个大范围的企业和其他外部工具的支持和集成,但是它尽量将它强制的依赖关系将到最低。在简单的用例里,你无需查找并下载(即使是自动的)一大批 jar 库来使用 Spring 。基本的依赖注入只有一个外部强制性的依赖,这是用来记录日志的。
Spring 本身在编译时是使用 Gradle 来管理依赖的,大多数示例也是使用 Gradle 或 Maven。
Maven 依赖管理
如果使用的是 Maven 的依赖管理你甚至不需要明确提供日志依赖。例如,要创建一个应用程序的上下文和使用依赖注入来配置应用程序,你的Maven 依赖将看起来像这样:
注意,如果你不需要编译 Spring 的API,scope 可声明为 runtime ,这通常是基本的依赖注入使用的案例。
以上的例子使用的是Maven Central 存储库。如果要使用 Spring Maven 存储库(如里程碑或开发者快照),你需要在 Maven 配置指定的存储位置。如下:
里程碑:
以及快照:
Maven "Bill Of Materials" 依赖
在使用Maven时有可能出现混合使用不同版本Spring的情况。例如,你可能发现一个第三方的库,或另一 Spring 的项目,传递依赖较早的发布包。如果你自己忘记了显式声明一个直接依赖,各种意想不到的问题出现。
为了克服这些问题,Maven 支持 "bill of materials" (BOM) 的依赖的概念。你可以在你的 dependencyManagement 部分引入 spring-framework-bom 来确保所有 spring依赖(包括直接和传递的)是同一版本。
使用 BOM 后,引用依赖 Spring Framework 组件后,无需指定<version> 属性。
有备考软考的小伙伴,想积分落户,单位评职称?科目太多不知道怎么选?考试考点难点太多没有头绪?刚准备1个多月过了高级,关注我,我整理了软考各科目的报考条件、适合人群以及备考攻略,可以直接领取:
https://edu.51cto.com/surl=Qrh6x1
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
赞 收藏 评论 举报相关文章