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. Codeforces Round #281 (Div. 2) C. Vasya and Basketball 暴力水题

    C. Vasya and Basketball time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  2. hdu 刷题记录

    1007 最近点对问题,采用分治法策略搞定 #include<iostream> #include<cmath> #include<algorithm> using ...

  3. antd 父组件获取子组件中form表单的值

    还是拿代码来讲吧,详情见注释 子组件 import React, { Component } from 'react'; import { Form, Input } from 'antd'; con ...

  4. Linux终端(Xshell等)的编码设置

    先简单说说一下遇到的情况吧: 在用类似Xshell的工具连接远端Linux时,运行命令ls时,如果有中文,就会显示有乱码: 网上查资料时,也把相应的连接属性修改为utf-8了(见下图),但是还是不行: ...

  5. java转换emoji表情

    /** * @Description 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式(表情占4个字节,需要utf8mb4字符集) * @param str * 待转换字符串 ...

  6. 获取WINDOWS打印机列表

    获取WINDOWS打印机列表 如何知道WINDOWS已经安装了哪些打印机? 1) usesVcl.Printers 2) Printer.Printers  // property Printers: ...

  7. [翻译] AsyncImageView 异步下载图片

    AsyncImageView  https://github.com/nicklockwood/AsyncImageView AsyncImageView is a simple extension ...

  8. css3 实现圆角边框的border-radius属性和实现阴影效果的box-shadow属性

    首先我要介绍的是border-radius属性,它的作用是实现圆角边框,其中border-radius:20px;表示,一个’体‘四个角都圆滑20px,其值如果为100px那么圆角度则为最高,如果是正 ...

  9. Zabbix named 监控

    Named 监控 配置 named.conf ,在options 配置节增加如下配置(同时检查/var/named 文件夹权限),然后重启named服务. tatistics-file "/ ...

  10. VMware与Cisco DRAC中的virtual disk的对应关系

    笔者面临的问题如下: 笔者有一台Cisco C240的服务器, 其中有十块容量一样大的SAS的local disk, 一块SSD. 其中的两块SAS盘组成了一个RAID 1的virtual drive ...