2012-01-05 13 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.

Problemi correlati