Download public void

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
What's New in CDI 2.0
JSR 365
Mark Paluch
‣ Software Craftsman
‣ Spring Data Engineer @ Pivotal
‣ EG for CDI 2.0 (JSR365)
‣ Open Source committer
CDI Timeline
I
D
C
Dec 2009
0
.
1
a
v
a
(J
E
E
)
6
I
D
C
Jun 2013
1
.
1
a
v
a
(J
E
E
)
7
I
D
C
Apr 2014
2
.
1
(M
)
R
I
D
C
Sep 2014
0
.
2
(K
o
k
ic
)
e
s
a
e
ff )
I
D
C
June 2016
0
.
2
l
e
(R
Parts
CDI 2.0 Parts
•
CDI core
•
Java SE
•
Java EE Integration
•
Support implementations for two TCK modes
Asynchronous Events
Asynchronous Events
•
Notify event observers asynchronously
•
One or more different threads
•
Decoupled from synchronous events
Firing Async Events
@Inject
private Event<MyEventPayload> event;
public void triggerEvent() {
event.fireAsync(new MyEventPayload());
}
Observing Async Events
public void observer(@ObservesAsync MyEvent payload) {
System.out.println("Yay, I'm called async!");
}
Asynchronous Events
•
Exceptions and Synchronization with
CompletionStage
•
Active scopes: Request, Application
•
Custom scopes depend on the implementation
Ordered Events
Ordered Events
•
Add @Priority to event observers
•
Aids observer ordering
•
Total global order determined when the event is fired
Observer Ordering
public void observer(@Observes @Priority(2500) MyEvent event) {
System.out.println("Default priority");
}
public void earlier(@Observes @Priority(2499) MyEvent event) {
// yay! I'm first
System.out.println("Notified before all other observers");
}
public void observer(@Observes MyEvent event) {
System.out.println("Default priority");
}
public void later(@Observes @Priority(2501) MyEvent event) {
System.out.println("Notified after all other observers");
}
Meta-Data Builder API
•
Standardized API
•
AnnotatedTypes, Beans, BeanAttributes, InjectionPoints, and
ObserverMethods
•
Builder and Configurator-style
Meta-Data Builder API
public class MyExtension {
public void afterBeanDiscovery(
@Observes AfterBeanDiscovery event) {
BeanBuilder<MyBean> builder = Builders.bean(MyBean.class);
builder.configure().addQualifier(new TransactionalLiteral());
Bean<MyClass> bean = builder.build();
event.addBean(bean);
}
}
Java SE
•
Bootstrap API
•
Start/stop contexts
Bootstrap API
public static void main(String[] args) {
}
try(CDI<Object> cdi = CDI.current()) {
cdi.select(MyApp.class).get().runMyApplication();
}
public class MyApp{
}
public void runMyApplication(){
// ...
}
What else is in work?
•
Java 8: Repeating annotations
•
Proxying of classes with final methods
•
AOP on produced and custom beans
Get in touch
Web: http://www.cdi-spec.org/
Mailing list: [email protected]
IRC: irc://freenode.net/#cdi-dev
Twitter: @cdispec
Github: https://github.com/cdi-spec
CDI 2.0 JCP page: http://jcp.org/en/jsr/summary?id=365
Q&A
Related documents