further-cdi icon indicating copy to clipboard operation
further-cdi copied to clipboard

🔊 Going further with CDI presentation

= Going Further with CDI

image:https://travis-ci.org/astefanutti/further-cdi.svg[Travis CI build, link="https://travis-ci.org/astefanutti/further-cdi"]

Presentation material about advanced features and use cases of http://www.cdi-spec.org/[CDI], the Contexts and Dependency Injection standard for the Java platform.

== About

This presentation introduces the CDI type and metadata SPI. It then focuses on the concept of http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#spi[portable extensions] and covers the complete bean manager lifecycle, depicted in the diagram below. Lastly, it illustrates the use of these concepts through practical examples like the https://github.com/astefanutti/camel-cdi[Camel CDI] and https://github.com/astefanutti/metrics-cdi[Metrics CDI] extensions.

.Application initialization and shutdown lifecycle image::http://astefanutti.github.io/further-cdi/lifecycle.svg[]

.Container lifecycle events image::http://astefanutti.github.io/further-cdi/events.svg[]

== History

This presentation has been used as material for the following sessions:

|===

| Conference | Session | Commit [/ Branch] | Slides

| http://www.devoxx.ma[Devoxx MA] 2016 | Going further with CDI 2.0 | https://github.com/astefanutti/further-cdi/tree/25bcd4d7ece45b7d5a022decfd17e4fcf457778a[25bcd4d] | http://astefanutti.github.io/further-cdi/going-further-with-cdi-devoxxma-2016.html[html], http://astefanutti.github.io/further-cdi/going-further-with-cdi-devoxxma-2016.pdf[pdf] | https://www.oracle.com/javaone/[JavaOne] 2015 | https://events.rainfocus.com/oow15/catalog/oracle.jsp?event=javaone&search=TUT2376[Advanced CDI in Live Coding [TUT2376]] | https://github.com/astefanutti/further-cdi/tree/d8ce65f6fac56c2f0b654b3126d62aa8150acbdb[d8ce65f] | http://astefanutti.github.io/further-cdi/advanced-cdi-in-live-coding-javaone-2015.html[html], http://astefanutti.github.io/further-cdi/advanced-cdi-in-live-coding-javaone-2015.pdf[pdf], https://www.youtube.com/watch?v=OgfLlupOWZY[video] | http://www.devoxx.fr/[Devoxx FR] 2015 | Allons plus loin avec CDI 1.2 [OGT-5265] | https://github.com/astefanutti/further-cdi/tree/b490b41747b70b0e5a28f05ba3e5ef20ec5dcd3c[b490b41] | http://astefanutti.github.io/further-cdi/going-further-with-cdi-devoxxfr-2015.html[html], http://astefanutti.github.io/further-cdi/going-further-with-cdi-devoxxfr-2015.pdf[pdf] | http://www.devoxx.be/[Devoxx BE] 2014 | Going Further with CDI 1.2 [CSX-3476] | https://github.com/astefanutti/further-cdi/tree/6aa51e7230cd5177ab30135c21b0d17b428565e9[6aa51e7] | http://astefanutti.github.io/further-cdi/going-further-with-cdi-devoxxbe-2014.html[html] | https://www.oracle.com/javaone/[JavaOne] 2014 | https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=5585[Going Further with CDI 1.2 [CON5585]] | https://github.com/astefanutti/further-cdi/tree/6fd80dd792e325729b6b8724f50b93475d5dc3be[6fd80dd] / https://github.com/astefanutti/further-cdi/tree/javaone[javaone] | http://astefanutti.github.io/further-cdi/going-further-with-cdi-javaone-2014.html[html]

|===

== Build

=== Environment

. Install http://rvm.io[RVM]: +

$ \curl -sSL https://get.rvm.io | bash -s stable --ruby

. Install http://bundler.io/[Bundler]: +

$ gem install bundler

. Install http://www.graphviz.org/[Graphviz] and have the dot executable in the path

=== Instructions

. Initialise and check out the asciidoctor-backends and dzslides submodules: +

$ git submodule update --init

. Install the required gems: +

$ bundle install

. Generate the HTML presentation: +

$ asciidoctor -r asciidoctor-diagram -T asciidoctor-backends/slim -a data-uri -a linkcss! slides.adoc

. Generate the PDF presentation: .. Install https://github.com/astefanutti/decktape[DeckTape] .. Export the HTML presentation: +

$ decktape dzslides slides.html slides.pdf

=== LiveReload

With http://guardgem.org/[Guard] and http://livereload.com/[LiveReload], you can modify the content of the presentation and have the files automatically generated and reloaded into your Web browser.

. Install the http://feedback.livereload.com/knowledgebase/articles/86242-how-do-i-install-and-use-the-browser-extensions-[LiveReload plugin] for your Web browser (Chrome, Firefox and Safari are supported)

. Launch Guard: +

$ bundle exec guard

. Browse to the generated file you want to refresh and activate the LiveReload plugin (don't forget to configure the plugin to accept refreshing local files)

=== Docker

Alternatively to installing Ruby and Graphviz, you can use the https://hub.docker.com/r/asciidoctor/docker-asciidoctor/[asciidoctor/docker-asciidoctor] Docker image available on https://hub.docker.com[Docker Hub]:

. Run an interactive container with the documents volume bind-mounted to the working directory: +

$ docker run --rm -it -v pwd:/documents/ asciidoctor/docker-asciidoctor

. Generate the HTML presentation: +

[root@... documents]# asciidoctor -r asciidoctor-diagram -T asciidoctor-backends/slim -a data-uri -a linkcss! slides.adoc

== License

The content of this project is licensed under the http://creativecommons.org/licenses/by/4.0/[Creative Commons Attribution 4.0 license], and the underlying source code used for the examples is licensed under the http://opensource.org/licenses/mit-license.php[MIT license].