An open API service indexing awesome lists of open source software.

https://github.com/astefanutti/further-cdi

🔊 Going further with CDI presentation
https://github.com/astefanutti/further-cdi

camel cdi dropwizard java javaee metrics

Last synced: 6 months ago
JSON representation

🔊 Going further with CDI presentation

Awesome Lists containing this project

README

          

= 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].