零配置 之 Spring 概述

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

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://www.mzph.cn/news/326628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

背包问题+图解

图解 代码实现 package com.atguigu.dynamic;/*** 创建人 wdl* 创建时间 2021/4/3* 描述*/ public class KnapsackProblem {public static void main(String[] args) {int[] w{1,4,3};//物品的重量int[] val{1500,3000,2000};//物品的价值 这里的val[i]就是前面的v[i]int m4;/…

mysql预编译语句拼接查询_SQL语句预编译(查询)

SQL语句预编译SQL语句预编译能预防SQL注入提高安全性,是因为SQL语句在程序运行前已经进行了预编译,在程序运行时第一次操作数据库之前,SQL语句已经被数据库分析,编译和优化,对应的执行计划也会缓存下来并允许数据库以参…

java循环结构教程

循环的语法我发一下:while( 布尔表达式 ) {//循环内容}do {//代码语句}while(布尔表达式);for(初始化; 布尔表达式; 更新) {//代码语句}今天录制了一下java 的循环结构视频,包括while,do while以及for循环,时间有点长,所以大家看的…

想和你一起为 Visual Studio 庆祝20岁生日

Visual Studio Live 倒计时开始…… 1997年1月28日,Visual Stuido 97正式推出,她将Visual Basic、Visual C、Visual J、Visual Foxpro、Visual InterDev聚合在一起,并且这个让人着迷的“小妖精”,统揽天下20年尚未有退位的意思。 …

Spring 基于 Java 的配置

转载自 Spring 基于 Java 的配置 基于 Java 的配置 到目前为止,你已经看到如何使用 XML 配置文件来配置 Spring bean。如果你熟悉使用 XML 配置,那么我会说,不需要再学习如何进行基于 Java 的配置是,因为你要达到相同的结果&am…

2016蓝桥杯省赛---java---B---3(凑算式)

题目描述 凑算式 思路分析 通分 代码实现 package com.atguigu.TEST;class Main{static int a[]{1,2,3,4,5,6,7,8,9};static int ans;public static boolean check(){int xa[3]*100a[4]*10a[5];int ya[6]*100a[7]*10a[8];if((a[1]*ya[2]*x)%(y*a[2])0&&a[0](a[1…

java如何连接mysql_Java如何连接数据库

Java如何连接数据库1.加载驱动Class.forname(ClassName);2.建立数据库连接使用DriverManager类的getConnection()静态方法来获取数据库连接对象,其语法格式如下所示:Connection connDriverManager.getConnection(String url,String userName,String password);其中u…

Spring 基于注解的配置

转载自 Spring 基于注解的配置 基于注解的配置 从 Spring 2.5 开始就可以使用注解来配置依赖注入。而不是采用 XML 来描述一个 bean 连线,你可以使用相关类,方法或字段声明的注解,将 bean 配置移动到组件类本身。 在 XML 注入之前进行注解…

微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

摘录网上的“.NET 15周年”信息如下: 微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年,.NET 框架从一个流行的闭源软件开发平台,变成了一个开源的…

分治算法---汉诺塔

思路分析 代码实现 package com.atguigu.dac;public class Hanoitower {public static void main(String[] args) {hanoiTower(5,A,B,C);}//汉诺塔移动的方法//使用分治算法public static void hanoiTower(int num,char a,char b,char c){//如果只有一个盘if(num1){System.out…

数组复习

在我周围,像我这种性格的人特多——在公众场合什么都不说,到了私下里却妙语连珠,换言之,对信得过的人什么都说,对信不过的人什么都不说。保持沉默是怯懦的。——《沉默的大多数》ssh整合案例1泪点伊人颜多少红尘过客&a…

mysql id生成器自定义_MybatisPlus使用自定义Id生成器数据自动填充

使用自定义ID生成器实现IdentifierGenerator接口Componentpublic class CustomerIdGenerator implements IdentifierGenerator {Overridepublic Number nextId(Object entity) {// 填充自己的Id生成器,return HolaSms.snowFlake();}}实体类或者配置文件中指定id填充…

Spring JSR-250 注释

转载自 Spring JSR-250 注释 Spring JSR-250 注释 Spring还使用基于 JSR-250 注释,它包括 PostConstruct, PreDestroy 和 Resource 注释。因为你已经有了其他的选择,尽管这些注释并不是真正所需要的,但是关于它们仍然让我给出一…

.NET Core跨平台:使用.NET Core开发一个初心源商城总括

1..NET Core基本介绍 a 作为一个.NET的开发者,在以前的开发中,我们开发的项目基本都是部署在windows服务器上,但是在windows服务器上的话某些比较流行的解决访问量的方案基本都是先出现在linux上,而后才能迁移出现windows上,而且效…

二分查找非递归方式实现

思路分析 代码实现 package com.atguigu.binarysearchnorecursion;/*** 创建人 wdl* 创建时间 2021/4/2* 描述*/ public class BinarySearchNoRecur {public static void main(String[] args) {//测试int[] arr{1,3,8,10,11,67,89};int i binarySearch(arr,67);System.out.pr…

jQuery实现判断li的个数从而实现其他功能

需求&#xff1a;当ul中的li大于6个的时候显示图片&#xff0c;当li小于6个的时候隐藏图片&#xff0c;先来看看效果&#xff1a; 当有7个li的时候&#xff1a; 当有3个li的时候&#xff1a; 现在吧源码放上来&#xff1a; <!DOCTYPE html> <html><head…

windows mysql memcached_Memcached在Windows下的安装

前言 &#xff1a; 简介下 Memcached 和 Memcache 的区别和联系Memcached和Memcache的区别&#xff0c;其实很简单&#xff0c;一个是服务端&#xff0c;一个是客户端&#xff0c;就像mysql一样&#xff0c;我们在命令行里输入各种sql语句就能查询到需要的结果&#xff0c;这就…

baiduTemplate / artTemplate

转载自 baiduTemplate / artTemplate JS引擎模板 一、baiduTeplate 模板语法 提供一套模板语法&#xff0c;用户可以定义一个模板区块&#xff0c;每次根据传入的数据生成对应数据产生的html片段&#xff0c;从而渲染不同的界面效果&#xff1b; 优点&#xff1a; 语法简单…

辅助Visual Studio 2017部署的DevOps新工具

我们能看到Visual Studio 2017中的一个重大改进是对安装程序做了完全重写。前期的Visual Studio构建版本都是大一统的&#xff0c;完成安装需要相当长的时间和大量的磁盘空间。因此有需求要对安装过程做一些改进&#xff0c;这在本质上需要改进Visual Studio及其组件的检测方式…

2016蓝桥杯省赛---java---B---6(方格填数)

题目描述 方格填数 思路分析 全排列检查 代码实现 package com.atguigu.TEST;import static java.lang.Math.abs;class Main{static int a[]{0,1,2,3,4,5,6,7,8,9};static int ans;public static boolean check(){if (abs(a[0] - a[1]) 1 || abs(a[0] - a[3]) 1 || abs…