基于XML配置

Bean的定义:           在XML文件中通过<bean>元素定义。

Bean的名称:           通过<bean>的id或name属性定义。

Bean的注入:           通过<property>子元素或通过p命名空间的动态属性。

Bean生命过程方法:通过<bean>的init-method和destory-method属性指定Bean实现类的方法名。最多只能指定一个初始化方法和一个销毁方法。

Bean作用范围:       通过<bean>的scope属性指定。

Bean延迟初始化:   通过<bean>的lazy-init属性指定,默认为default,继承于<beans>的default-lazy-init设置,该值默认为false。

应用场景:

1、Bean实现类来源于第三方类库,如 DataSoure、JdbcTemplate等,因无法在类中标注注解,所以通过XML配置方式比较好。

2、命名空间的配置,如aop、context等,只能采用基于XML的配置。

基于注解配置

Bean的定义:           在Bean实现类处通过标注@Compoent或衍型类(@Repository、@Service、@Controller)定义Bean。

Bean的名称:           通过注解的value属性定义,如@Component("name")。默认名称为小写字母开头的类名(不带包名)name。

Bean的注入:           通过通过在成员变更或方法入参处标注@Autowired,按类型匹配自动注入。还可以配合使用@Qualifier按名称匹配方式注入。

Bean生命过程方法:通过在目标方法上标注@PostConstruct 和@PreDestroy注解指定初始化或销毁方法,可以定义任意多个。

Bean作用范围:       通过在类定义处标注@Scope指定,如@Scope("prototype")

Bean延迟初始化:   通过在类定义处标注@Lazy指定,如@Lazy(true)。

应用场景:

1、Bean的实现类是当前项目开发的,可以直接在Java类中使用基于注解的配置。

基于Java类配置

Bean的定义:           在标注了@Configuration的Java类中,通过在类方法上标注@Bean定义一个Bean。方法必须提供Bean的实例化逻辑。

Bean的名称:           通过@Bean的name属性定义,如@Bean("user")。默认名称为方法名。

Bean的注入:           比较灵活,可以在方法处通过@Autowired使方法入参绑定Bean,然后在方法中通过代码进行注入;还可以通过调用配置类@Bean方法进行注入。

Bean生命过程方法:通过@Bean的initMethod或destoryMethod指定一个初始化或销毁方法。对于初始化方法来说,可以直接在方法内通过代码的方法灵活定义初始化逻辑。

Bean作用范围:       通过在Bean方法定义处标注@Scope指定。

Bean延迟初始化:   通过在Bean方法定义处标注@Lazy指定。

应用场景:

1、基于JAVA类配置的优势在于可以通过代码方法控制Bean初始化的整体逻辑。如果实例化Bean的逻辑比较复杂,则比较适合基于Java类配置的方式。

基于Groovy DSL配置

Bean的定义:           在Groovy文件中通过DSL定义Bean。

Bean的名称:           通过Groovy的DSL定义Bean的名称(Bean的类型,Bean构建函数参数)。

Bean的注入:           比较灵活,可以在方法处通过ref()方法进行注入,如:ref("logDao")。

Bean生命过程方法:通过bean->bean.initMethod或bean.destoryMethod指定一个初始化或销毁方法。

Bean作用范围:       通过bean->bean.scope="prototype"指定。

Bean延迟初始化:   通过bean->bean.lazyInit=true指定。

应用场景:

1、基于Groovy DSL配置的优势在于可以通过Groovy脚本灵活控制Bean初始化的过程。如果实例化Bean的逻辑比较复杂,则比较适合基于Groovy DSL配置的方式。

Bean的不同配置方式比较与应用场景的更多相关文章

  1. IoC容器装配Bean(xml配置方式)(Bean的生命周期)

    1.Spring管理Bean,实例化Bean对象 三种方式 第一种:使用类构造器实例化(默认无参数) package cn.itcast.spring.initbean; /** * 使用构造方法 实 ...

  2. Spring中Bean的不同配置方式

    Bean的配置方式一共分为三种: 1.基于XML(适用于第三方类库,无法在类中写注解以及写命名空间的配置等情况) 2.基于注解(适用于大部分情况) 3.基于Java类 以下是三种不同情况的配置方式   ...

  3. Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

    Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML ...

  4. springmvc的系统学习之配置方式

    资源:尚学堂  邹波 springmvc框架视频  一.springMVC 工作流程        页面请求---->控制器(Controller DispatcherServlet)----& ...

  5. SpringMVC(一)-- springmvc的系统学习之配置方式

    资源:尚学堂  邹波 springmvc框架视频  一.springMVC 工作流程        页面请求---->控制器(Controller DispatcherServlet)----& ...

  6. Bean 注解(Annotation)配置(1)- 通过注解加载Bean

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  7. 【Spring3.0系列】---Bean不同配置方式比较 和适用场合

    Bean不同配置方式比较1.基于XML配置定义:在XML文件中通过<bean>元素定义Bean,例如<bean class="com.bbt.UserDao"/& ...

  8. Bean不同配置方式比较

      基于XML配置 基于注解配置 基于Java类配置 Bean定义 在XML文件中通过<bean>元素定义Bean,如:<bean class="com.bbt.UserD ...

  9. 【转】Spring 中三种Bean配置方式比较

    今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...

随机推荐

  1. pycharm5.0 激活方式

    Pycharm5注册方式   0x1 ,安装 0x2 , 调整时间到2038年. 0x3 ,申请30天试用 0x4, 退出pycharm 0x5, 时间调整回来. ##注册方法2### 注册方法:   ...

  2. php自定义错误

    function myErrorHandler ( $errno , $errstr , $errfile , $errline ) { if (!( error_reporting () & ...

  3. Django-ondelete

    on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为 on_delete=models.CASCADE, # 删除关联数据,与之关联也删除 on_delete=m ...

  4. SVG 签名动画 制作

    不知道哪天看到的一个朋友圈里面有发的什么什么免费教签名之类的,就看了下SVG,做这功能还不错. 主要用到的几个属性,需要自行百度一下,不详说  stroke-dashoffset ,  stroke- ...

  5. Asp.Net Core 初探 (三)

    昨天失败的生产环境部署就先放着,明天再解决! 今天利用中午的空余时间看了一下Asp.net core 的Areas . 相对于Asp.net MVC5 以及之前的版本,asp.net core 的Ar ...

  6. VMware虚拟机下实现Linux与window文件夹共享

    这里说的是在VMware虚拟机下来实现在windows与Linux下共享一个文件夹. 下面来说明一下是如何实现的: 1.安装VMware.Workstation. 2.安装Fedora10. 3.完成 ...

  7. 查看客户端java日志

    通过 Java 控制面板启用 Java 控制台 Windows 8 使用搜索来查找控制面板 按 Windows 徽标键 + W 以打开搜索框来搜索设置,或者将鼠标指针拖动到屏幕的右下角,然后单击搜索图 ...

  8. RabbitMQ 基础

    Windows下安装RabbitMq 下载RabbitMq 安装参考 http://www.rabbitmq.com/install-windows.html 下载Erlang Erlang 下载安装 ...

  9. 最简单的基于FFMPEG的Helloworld程序

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  10. Linux环境下安装MySQL(yum方式)

    1.下载mysql源安装包shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 安装my ...