Spring4.0系列7-Ordering Autowired Collections

spring 4.0的一个小特性是在自动注入的时候使用@Order。Spring 2.5中,我们将bean注入List,如下代码:

Java代码  

  1. import org.springframework.stereotype.Component;  
  2. @Component  
  3. public class Employee implements Person {  
  4. }  

 

Java代码  

  1. import org.springframework.stereotype.Component;   
  2. @Component   
  3. public class Customer implements Person {   
  4. }  

 

Java代码  

  1. import org.springframework.beans.factory.annotation.Autowired;  
  2. import org.springframework.stereotype.Component;  
  3. @Component  
  4. public class Organization {  
  5.     @Autowired  
  6.     List<Person> people;  
  7.    
  8.     public String toString() {  
  9.         return people.toString();  
  10.     }  
  11. }  

 

此例中,Organization中的people是无序的。多数情况下,在xml配置里,bean被有序添加到people list。这时Srping 4.0提供了一个解决方案:使用@Order。

@Order注解在Spring2.0时已经在Spring框架里。它的主要作用是给组件排序。现在在Spring4.0里,它也能给注入到有序的colletion的bean排序。@Order接受一个排序值,值小的优先级高,也意味着在collection中排序靠前。上面的例子改写成:

Java代码  

  1. import org.springframework.core.annotation.Order;  
  2. import org.springframework.stereotype.Component;  
  3. @Component  
  4. @Order(value=1)  
  5. public class Employee implements Person {  
  6. }  

 

Java代码  

  1. import org.springframework.core.annotation.Order;  
  2. import org.springframework.stereotype.Component;  
  3. @Component  
  4. @Order(value=2)  
  5. public class Customer implements Person {  
  6. }  
时间: 2024-08-02 09:54:52

Spring4.0系列7-Ordering Autowired Collections的相关文章

Spring4.0系列6-Generic Qualifier(泛型限定)

在Spring4.0里,泛型是可以用来决定哪一个bean需要依赖注入的(无论xml配置还是注解配置). 用一个简单的例子解释.假设你有一个使用了泛型的DAO.   Java代码   public class Dao<T> {     ...   }    现在创建两个实现类的bean: Java代码   import org.springframework.context.annotation.Bean;   import org.springframework.context.annotat

Spring4.0系列4-Meta Annotation(元注解)

spring框架自2.0开始添加注解的支持,之后的每个版本都增加了更多的注解支持.注解为依赖注入,AOP(如事务)提供了更强大和简便的方式.这也导致你要是用一个相同的注解到许多不同的类中去.这篇文章介绍meta annotation来解决这个问题. Meta Annotation(元注解)定义 Spring4.0的许多注解都可以用作meta annotation(元注解).元注解是一种使用在别的注解上的注解.这意味着我们可以使用Spring的注解组合成一个我们自己的注解. 创建组合注解 自定义注

Spring4.0系列9-websocket简单应用

spring 4.0的一个最大更新是增加了websocket的支持.websocket提供了一个在web应用中的高效.双向的通讯,需要考虑到客户端(浏览器)和服务器之间的高频和低延时消息交换.一般的应用场景有:在线交易.游戏.协作.数据可视化等.   使用websocket需要考虑的浏览器的支持(IE<10不支持),目前主流的浏览器都能很好的支持websocket. websocket协议中有一些子协议,可以从更高的层次实现编程模型,就像我们使用HTTP而不是TCP一样.这些子协议有STOMP,

Spring4.0系列3-@RestController

4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解.4.0之前的版本,spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet.   使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestController.     当你实现一个RESTful web services的时候,response将一直通过response body发送.为了简化开发,Spring 4.0提供了

Spring4.0系列8-Groovy DSL

4.0的一个重要特征就是完全支持Groovy,Groovy是spring主导的一门基于JVM的脚本语言(动态语言).在spring 2.x,脚本语言通过 Java scripting engine在Spring中得到支持.而在4.0中,Groovy的变得更重要,Groovy可以替换xml和注解用来作为bean配置. 要使用Groovy,首先用maven下载Groovy的包,pom.xml文件中添加: Xml代码   <dependency>    <groupId>org.code

Spring4.0系列5-@Conditional

这篇文章介绍spring 4的@Conditional注解.在Spring的早期版本你可以通过以下方法来处理条件问题: 3.1之前的版本,使用Spring Expression Language(SPEL). 3.1版本有个新特性叫profile,用来解决条件问题. 1.Spring Expression Language(SPEL) SPEL有一个三元运算符(if-then-else)可以在配置文件中当作条件语句,如下: Java代码   <bean id="flag">

[CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口

Reprint it anywhere u want. 文章Points: 1.介绍RESTful架构风格 2.Spring配置CXF 3.三层初设计,实现WebService接口层 4.撰写HTTPClient 客户端,并实现简单调用     介绍RESTful架构风格     REST是REST之父Roy Thomas创造的,当时提出来了REST的6个特点:客户端-服务器的.无状态的.可缓存的.统一接口.分层系统和按需编码.其具有跨语言和跨平台的优势.     REST是一种架构风格.其描述

Entity Framework 5.0系列之Code First数据库迁移

我们知道无论是"Database First"还是"Model First"当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Code First如何更新已有的模型呢?今天我们简单介绍一下Entity Framework的数据迁移功能. Entity Framework配置 在开始今天的话题之前先来看一下Entity Framework的配置,因为有很多朋友因为配置文件的问题造成"Migrations"命令执行失败.

黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块Cryptographyproviders中为对称加密配置Key文件的3种方式: create a new key  : 使用一串字符串作为Key,然后通过加密保存到一个Key文件中. use an existing DPAPI-protected key file  : 使用一个现有的Key文件进