Podczas tworzenia ziarna w ManagedBean można wybrać poniższe Scope:
request
application
view
none
Jest jeszcze session. Poczytaj o tym czym jest request http, czym jest sesja. Application to taki singleton, który jest współdzielony przez wszystkich użytkowników. NoneScoped oznacza, ze po wykonaniu DI wstrzyknięty Managed Bean odziedziczy scope komponentu, który go wstrzykuje. View zachowuje stan w biazacej zakladce przegladarki: w kazdej zakladce jest inny stan dla tego samego widoku.
Serializable przydaje sie tam, gdzie scope moze byc zrzucony w pamieci i zapisany np. na dysku. Czyli zawsze ViewScoped i SessionScoped.
@PostConstruct służy jako konstruktor, po stworzeniu Managed Beana jest wykonywana metoda w ten sposób zaadnotowana. Używa się tego ponieważ w konstruktorze nie masz dostępu do wstrzykiwanych bytów np. @ejb, @Inject, @ManagedProperty. Są one dostępne dopiero w @PostConstruct. Jest to przydatne szczególnie wtedy jak podczas załadowaniu widoku chcesz pobrać np. dane z bazy i je od razu wyswietlic.
Z czystych konstruktorów raczej nie korzysta się z przyczyn wspomnianych powyżej.