È necessario che un bean Java implementa l'interfaccia Serializable
?Perché i bean Java devono essere serializzabili?
risposta
È una delle caratteristiche "tipiche" come descritto nello Javabeans specification.
Ecco un estratto del capitolo 2.1 Che cos'è un bean?
Fagioliindividuale Java varieranno nella funzionalità che supportano, ma le tipiche caratteristiche unificanti che distinguono un Bean Java sono:
- Supporto per “introspezione” in modo che uno strumento di creazione può analizzare come un bean funziona
- Supporto per "personalizzazione" in modo che quando si utilizza un builder dell'applicazione un utente possa personalizzare l'aspetto e il comportamento di un bean.
- Supporto per "eventi" come una semplice metafora di comunicazione che può essere utilizzata per connettere i bean .
- Supporto per "proprietà", sia per la personalizzazione che per l'uso programmatico.
- Supporto per la persistenza, in modo che un bean possa essere personalizzato in un builder dell'applicazione e quindi avere lo stato personalizzato salvato e ricaricato in seguito.
Ed ecco un estratto del capitolo 5.5 Sintesi della Persistenza:
Tutti i fagioli devono supportare sia la serializzazione o esternalizzazione.
In pratica, non è esplicitamente necessario per il suo funzionamento. In generale, funzionerà anche correttamente senza l'implementazione di Serializable
. È comunque utile quando vuoi memorizzarli "in chiaro" su harddisk o inviare "plain" via rete. Ad esempio quando si tratta di un bean con scope di sessione che deve essere memorizzato nella sessione HTTP e il server è stato configurato per mantenere e riattivare le sessioni HTTP durante l'arresto/riavvio. In qualsiasi modo, ogni volta che si affronta un NotSerializableException
con il nome completo della classe qualificata del bean nel messaggio, allora è sufficiente firmarlo per consentirne l'implementazione Serializable
.
Sì.
Per definizione - un bean Java è esattamente questo, un serializable POJO (plain oggetto vecchio Java), con un costruttore senza argomenti e campi privati con getter/setter.
- 1. Perché i blocchi sono serializzabili in java?
- 2. Perché i bean Java sono chiamati "bean"?
- 3. java @SafeVarargs perché i metodi privati devono essere definitivi
- 4. Perché i metodi parziali devono essere annullati?
- 5. Perché i tipi WinRT devono essere sigillati?
- 6. SonarQube - I campi di regole in una classe "serializzabile" devono essere transitori o serializzabili
- 7. In Java, perché equals() e hashCode() devono essere coerenti?
- 8. Perché gli oggetti Java devono essere multipli di 8?
- 9. Java: tutti i metodi statici devono essere sincronizzati?
- 10. Perché i parametri di restituzione devono essere denominati?
- 11. Perché i sindacati anonimi globali devono essere dichiarati come statici?
- 12. Perché i frammenti IP devono essere multipli di 8 byte
- 13. Perché i metodi statici devono essere inclusi in una classe?
- 14. Perché i componenti in reazione devono essere in maiuscolo?
- 15. Le annotazioni Java sono serializzabili?
- 16. Come devono essere documentati i test unitari?
- 17. I parametri del modello devono essere tipi?
- 18. I distruttori virtuali devono essere pubblici?
- 19. I file .dmg devono essere firmati?
- 20. Quanto devono essere diversi i semi casuali?
- 21. I flag enum C# devono essere sequenziali
- 22. I frammenti Android devono essere statici
- 23. I comandi devono essere asincroni in CQRS?
- 24. Regex - I trattini devono essere sfuggiti?
- 25. Prestazioni di lambda serializzabili in Java 8
- 26. Java: come garantire le collezioni serializzabili
- 27. I metodi Robot devono essere eseguiti sulla coda eventi?
- 28. perché gli oggetti funzione devono essere pass-by-value
- 29. Perché i tipi esposti devono essere sigillati per i componenti WinMD/WinRT?
- 30. Perché i metodi di test in Junit devono essere definiti pubblici?
E i bean 'ApplicationScoped', dovrebbero implementare un'interfaccia Serializable? –