2012-01-05 4 views
26

Nel @PostConstruct doc si dice circa i metodi annotati: "Il metodo deve non gettare un eccezione controllata"@PostConstruct & eccezioni controllate

Come comportarsi con ad es. una IOException che può essere generata in un tale metodo? Basta avvolgerlo in una RuntimeException e lasciare che l'utente si preoccupi dello stato iniziale difettoso dell'oggetto? Oppure @PostConstruct è il posto sbagliato per convalidare e inizializzare gli oggetti che hanno iniettato le loro dipendenze?

+0

Interessante, non l'avevo notato. Sembra una strana restrizione, dato che il metodo è chiamato in modo riflessivo. – skaffman

+0

Il metodo 'PostConstruct' è per l'inizializzazione degli oggetti. Perché dovresti mettere qualcosa che genera 'IOException' in un metodo di inizializzazione? – medopal

+1

@Medopal: sto verificando l'esistenza di tabelle DB nel metodo init di un servizio, che genera IOException – fasseg

risposta

36

Sì, racchiuderlo in un'eccezione di runtime. Prevalentemente qualcosa di più concreto come IllegalStateException.

Si noti che se il metodo init fallisce, normalmente l'applicazione non verrà avviata.