読者です 読者をやめる 読者になる 読者になる

JSR299 Java Contexts and Dependency Injectionについて

303と311は何度か目を通しましたが299のWebBeansはJavaOne以降ノーチェックでした。

JSR311: JAX-RS: The JavaTM API for RESTful Web Services

http://www.jcp.org/en/jsr/detail?id=311

WebBeansから名前が変わりJava Contexts and Dependency Injectionですか。
JSR299: Java Contexts and Dependency InjectionのDraftより
javaxパッケージに分けられたアノテーション一覧(interfaceは省略)

javax.annotation

@NonBinding
@Named
@Stereotype

javax.interceptor

@Interceptor
@InterceptorBindingType

javax.decorator

@Decorator
@Decorates

javax.context

@ScopeType
@ApplicationScoped
@RequestScoped
@SessionScoped
@ConversationScoped
@Dependent

javax.inject

@BindingType
@DeploymentType
@Produces
@Disposes
@Specializes
@Realizes
@Initializer
@New
@Current
@Production
@Standard
@Obtains

javax.inject.manager

@Initialized
@Deployed

javax.event

@Observes
@IfExists
@Asynchronously
@AfterTransactionCompletion
@AfterTransactionFailure
@AfterTransactionSuccess
@BeforeTransactionCompletion
@Fires

5章のLokkup, dependency injection and EL resolutionと7章のEventsは、興味深いものもありましたが
アノテーションが多いなという印象。

9章のXML based metadataでは、アノテーションベースのBean定義の代替手段として
beans.xmlファイルで定義が出来るようです。

<myapp:MockAsynchronousCreditCardPaymentProcessor>
  <myapp:Asynchronous/>
  <myapp:PayBy>CREDIT_CARD</myapp:PayBy>
  <SessionScoped/>
  <myfwk:Mock/>
  <myfwk:Service transactional="true"/>
  <Named>asyncCreditCardPaymentProcessor</Named>

  <myapp:synchronousProcessor>
    <myapp:PaymentProcessor>
      <myapp:Synchronous/>
      <myapp:PayBy>CREDIT_CARD</myapp:PayBy>
    </myapp:PaymentProcessor>
  <myapp:synchronousProcessor>

  <myapp:init>
    <Initializer/>
    <myfwk:SystemConfig/>
  </myapp:init>

</myapp:MockAsynchronousCreditCardPaymentProcessor>

↑この定義は↓と同等

@Asynchronous
@PayBy(CREDIT_CARD)
@SessionScoped
@Mock
@Service(transactional=true)
@Named("asyncCreditCardPaymentProcessor")
class MockAsynchronousCreditCardPaymentProcessor {
  @Synchronous @PayBy(CREDIT_CARD) PaymentProcessor synchronousProcessor;
  @Initializer void init(SystemConfig config) { ... }
  ...
}

ちょっと複雑か...

こちらでも言及されてますが、javax.injectときたかーという印象。
また、大幅な修正が入って精査されるのではないかと思っています。


時間のある人は ここからダウンロードして見てみてください。