我了解CDI在JavaEE Web应用程序中的作用,在JavaEE Web应用程序中,它们有助于在bean之间传递用户会话数据。在没有用户会话的情况下,是否有充分的理由在Java SE或Java EE应用程序中使用CDI?
[这是JavaSE应用程序中Java EE CDI的一些用例
1事件总线
public void someMethod(@Observes @SomeFilter(SomeContext.SOME_FLAG) SomeEvent event) { ....
2种图案
@Produces
@Dependent
@ChartCanvasResult(DataFlow.CTS_FLOW)
Canvas canvasChart;
@Inject
@ModelResult(SomeContext.SOME_FLAG)
List<Double> someDataSinkList;
@Dependent
@Named("SomeService")
class SomeServiceImpl implements SomeService {
3应用程序引导上下文
Weld weld = new Weld();
WeldSEShutdownHook shutdownHook = new WeldSEShutdownHook(weld);
Runtime.getRuntime().addShutdownHook(shutdownHook);
weldContainer = weld.initialize();
4运行时上下文
public Object call(Class<?> clazz) {
log.debug("creating controller= {}", clazz.getSimpleName());
try {
return WeldSe.get(clazz);
} catch (Exception e) {
log.error("Error creating controller= " + clazz, e);
throw new RuntimeException(e);
}
}
1到4允许我管理引导程序,运行时对象图,关闭并使用企业模式来布局我的代码。Weld