# CDI fähige Beans und @ Inject



## johndearmusik (19. Nov 2015)

Ich hätte eine Frage, und zwar bin ich Neuling was CDI betrifft & wollte euch fragen, was man genau unter einem CDI fähigen Bean versteht, sind das normale Objekte ?!

Und was bewirkt man mit der Annotation @Inject. Ich habe dazu nicht wircklich brauchbares gefunden, sondern nur das es Referenzen auf ein CDI fähiges Bean ist. (was wieder die erste Frage aufwirft  )

Danke für eure Hilfe !


----------



## stg (19. Nov 2015)

Das kann so ziemlich alles sein. Aber ersteinmal sind das "irgendwelche" Klassen.  Je nach Umfeld / Anwendungsfall ist manchmal erforderlich, dass es einen non-private no-args constructor gibt. Um weiter ins Detail zu gehen ist deine Frage für mich zu unspezifisch. 
Der Grundgedanke ist zunächst einmal erst, dass du benötigte Objekte nicht selbst erstellst, sondern einfach nach einer Instanz fragst. Das ist prinzipiell das, was du mit @Inject hinterher machst.


----------



## johndearmusik (19. Nov 2015)

als bsp.:
die Objekte werden von meinem Applikations Server erstellt  (wildfly)  & die werden durch @Inject "angefordert" ?

Könnte man das so sagen ?


----------



## Steven Hachel (23. Mai 2016)

Also, die POJOs, die mit @SessionScoped, @RequestScoped etc annotiert sind, werden beim initiieren der Application am Server registriert. Sobald du eine Klasse, die du als Variable mit @Inject annotiert hast in einer anderen CDI benutzt, durch die reine Annotation passiert erstmal nix, wird diese Klasse instanziiert und an deine Variable übergeben. Bei einem @RequestScoped Bean wird immer wieder eine Instanz erzeugt, sobald du mit der Variable arbeitest.


----------

