further-cdi
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].