Java中的@Created注释

时间:2014-11-18 20:49:43

标签: java java-ee annotations cdi

通过JBossTicket Monster tutorial我偶然发现了 @Created 注释,但我找不到任何有关它的信息。据我所知,它没有在项目的任何地方实施。

@Path("/bookings")
@Stateless
public class BookingService extends BaseEntityService<Booking> {

    @Inject
    SeatAllocationService seatAllocationService;

    @Inject @Created
    private Event<Booking> newBookingEvent;

    public BookingService() {
        super(Booking.class);
    }
}

有人可以解释它的作用吗?

1 个答案:

答案 0 :(得分:1)

Java和CDI中都没有@Created。这是您创建的自定义限定符,用于指示在注入元素时要使用的实现。

如果您在示例中进一步阅读,则说明@Created的含义:

  

我们希望应用程序的其他部分知道已经创建了新的预订,因此我们使用CDI来触发事件。我们通过将一个Event实例注入服务(表明其有效负载将是一个预订)来实现。为了将此事件单独标识为引用事件创建,我们使用CDI限定符,我们需要添加它:

     

的src /主/ JAVA /组织/ JBoss的/ JDF /示例/ ticketmonster / util的/限定符/ Created.java

/**
* {@link Qualifier} to mark a Booking as new (created).
*/
@Qualifier
@Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Created {
}
     

什么是限定符?

     

CDI对注射和观察者使用基于类型的解决机制。为了区分接口的实现,您可以使用限定符(一种注释)来消除歧义。注入点和事件观察者可以使用限定符来缩小候选集合