1、Explicit configuration in XML:显示的XML配置。

优点:

1)XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译。

2)在处理大的业务量的时候,用XML配置应该更加好一些。
     缺点:

1)配置文件读取和解析需要花费一定的时间,配置文件过多的时候难以管理。

2)无法对配置的正确性进行校验,增加了测试难度。

2、Explicit configuration in Java:显示的JavaConfig,基于java类配置。

@Configuration

public class Conf {

@Scope(“prototype”)

@Bean(“loginUserDao”)

public LoginUserDao loginUserDao() {

return new LoginUserDao();

}

}

在标注了@Configuration的java类中,通过在类方法标注@Bean定义一个Bean。

通过在成员变量或者方法入参处标注@Autowired按类型匹配注入,也可以使用@Qualifier按名称配置注入。

JavaConfig is the preferred option for explicit configuration
because it’s more powerful, type-safe, and refactor-friendly.

优点:

1)在class文件中,降低维护成本。

2)不需要第三方解析工具。

3)编辑期就可以检验正确性,提高开发效率。

缺点:

1)配置代码过多时,直接影响代码质量,对于代码的简洁度有影响。

2)业务类之间的关系不如XML配置那样容易把握。

3)如果需要修改配置,则要重新编译整个工程。

3、Implicit bean discovery and automatic wiring:隐式的bean扫描,基于java注解配置,自动注入。

@Scope(“prototype”)

@Lazy(true)

@Component(“loginUserDao”)

public class LoginUserDao {  }

@Component:标注一个普通的Spring Bean类

在方法处通过@Autowired使方法入参绑定Bean,然后在方法中通过代码进行注入。

优点:

1)在class文件中,降低维护成本。

2)不需要第三方解析工具,利用java反射机制。

3)编辑期就可以检验正确性,提高开发效率。

缺点:

1)如果需要对annotation进行修改,那么要重新编译整个工程。

2)业务类之间的关系不如XML配置那样容易把握。

3)如果在程序中annotation比较多,直接影响代码质量,对于代码的简洁度有影响。

4)符合条件的多个bean注入时,spring不知道如何选择,会有异常NoUniqueBeanDefinitionException。

Spring -- 三种配置方式的更多相关文章

  1. spring Bean的三种配置方式

    Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java Config 添加spring的maven repository <dependency> ...

  2. 【jdbc】【c3p0】c3p0三种配置方式【整理】

    c3p0三种配置方式 c3p0的配置方式分为三种,分别是1.setters一个个地设置各个配置项2.类路径下提供一个c3p0.properties文件3.类路径下提供一个c3p0-config.xml ...

  3. tomcat下jndi的三种配置方式

    jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...

  4. IIS下PHP的三种配置方式比较

    在Windows IIS 6.0下配置PHP,通常有CGI.ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异. 1. ...

  5. 【转】tomcat下jndi的三种配置方式

    jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...

  6. c3p0三种配置方式(automaticTestTable)

    c3p0的配置方式分为三种,分别是http://my.oschina.net/lyzg/blog/551331.setters一个个地设置各个配置项2.类路径下提供一个c3p0.properties文 ...

  7. 【c3p0】 C3P0的三种配置方式以及基本配置项详解

    数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. ---------------------------------------- ...

  8. 深刻剖析spring三种注入方式以及使用注解的原理

    概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...

  9. Hive metastore三种配置方式

    http://blog.csdn.net/reesun/article/details/8556078 Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储.远端存储比较适 ...

随机推荐

  1. cocos2dx 3.0 中文 iconv 转换函数

    //#include <string> #pragma once #include "cocos2d.h"; #include "iconv\include\ ...

  2. 理解PHP数组的序列化和反序列化

    当我们想要将数组值存储到数据库时,就可以对数组进行序列化操作,然后将序列化后的值存储到数据库中.其实PHP序列化数组就是将复杂的数组数据类型转换为字符串,方便数组存库操作.对PHP数组进行序列化和反序 ...

  3. Linux 网络协议栈 图解

    http://www.cnblogs.com/sammyliu/p/5225623.html

  4. C/C++服务器开发的必备利器–libconfig

    http://www.leoox.com/?p=311 程序肯定需要一份配置文件,要不然,自己的程序不是“可配置”的,自己都不好意思往“高大上”靠拢.言归正传,以前自己写代码,配置文件的读写都是各式各 ...

  5. 3种方式实现KVO并进行对比

    KVO KVO属于设计模式中的观察者模式,在观察者模式中,一个对象任何状态的变更都会通知另外的对改变感兴趣的对象.这些对象之间不需要知道彼此的存在,这其实是一种松耦合的设计.当某个属性变化的时候,我们 ...

  6. Myeclipse设置快捷键

    快捷键中把我们习惯性使用的Alt+/进行代码自动补齐的快捷键改为了ctrl+空格,大家知道这是切换中英文输入法的键,所以需要更改这个快捷键, 1.选择MyEclipse6.0菜单栏中的Window-& ...

  7. Android图片加载框架最全解析(四),玩转Glide的回调与监听

    大家好,今天我们继续学习Glide. 在上一篇文章当中,我带着大家一起深入探究了Glide的缓存机制,我们不光掌握了Glide缓存的使用方法,还通过源码分析对缓存的工作原理进行了了解.虽说上篇文章和本 ...

  8. [ IOS ] iOS-控制器View的创建和生命周期

    reference to  : 1. 控制器View的创建 首先我们来看一下控制器view创建的流程图 控制器view加载.jpeg 从图中我们可以看出,在控制器view加载过程中有两个重要的方法lo ...

  9. Nodejs开发人脸识别系统-教你实现高大上的人工智能

    Nodejs开发人脸识别系统-教你实现高大上的人工智能   一.缘起缘生 前段时间有个H5很火,上传个头像就可以显示自己穿军装的样子,无意中看到了一篇帖子叫 全民刷军装背后的AI技术及简单实现 ,里面 ...

  10. 在Java Web程序中使用Hibernate

    在Java Web程序中使用Hibernate与普通Java程序一样.本文中将使用Servlet和JSP结合Hibernate实现数据库表的增删改查操作. Web程序中,hibernate.cfg.x ...