通过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);
}
}
有人可以解释它的作用吗?
答案 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对注射和观察者使用基于类型的解决机制。为了区分接口的实现,您可以使用限定符(一种注释)来消除歧义。注入点和事件观察者可以使用限定符来缩小候选集合