Quando si sposta alla primavera 2.5.x ho trovato che aggiunge più annotazioni stereotipo (in cima @Repository da 2,0): @Component, @Service e @Controller. Come li usate? Ti affidi al supporto implicito di Spring o definisci funzioni/aspetti/caratteristiche specifici dello stereotipo personalizzato? O è predominante per marcare i fagioli (tempo di compilazione, concettuale, ecc.)?Come si usano le annotazioni degli stereotipi in Spring 2.5.x?
risposta
Le seguenti annotazioni stereotipo 2.5 possono essere utilizzati in applicazioni Spring MVC come alternativa al cablaggio dei fagioli in XML:
@Repository - per i fagioli DAO - permette di gettare DataAccessException quando la fonte dei dati non è disponibile.
@Service - per business bean - sono bean piuttosto semplici che hanno impostato alcune politiche di conservazione predefinite .
@Controller - per servlet - permette di impostare richiesta di pagina mappature, ecc
Inoltre, una quarta annotazione generica è stata introdotta: @Component. Tutte le annotazioni MVC sono specializzazioni di questo, e puoi anche usare @Component da solo, ma facendo questo in Spring MVC, non utilizzerai alcuna futura ottimizzazione/funzionalità aggiunta alle annotazioni di livello superiore. Puoi anche estendere @Component per creare i tuoi stereotipi personalizzati.
Ecco un rapido esempio delle annotazioni MVC in azione ... In primo luogo, l'oggetto di accesso ai dati:
@Repository
public class DatabaseDAO {
@Autowired
private SimpleJdbcTemplate jdbcTemplate;
public List<String> getAllRecords() {
return jdbcTemplate.queryForObject("select record from my_table", List.class);
}
}
Il servizio:
@Service
public class DataService {
@Autowired
private DatabaseDAO database;
public List<String> getDataAsList() {
List<String> out = database.getAllRecords();
out.add("Create New...");
return out;
}
}
E, infine, il controllore:
@Controller("/index.html")
public class IndexController {
@Autowired
private DataService dataService;
@RequestMapping(method = RequestMethod.GET)
public String doGet(ModelMap modelMap) {
modelMap.put(dataService.getDataAsList());
return "index";
}
}
Ho trovato this article molto buono per dare una panoramica generale dello stereotipo anno tazioni, oltre allo official documentation.
diresti che i nuovi (2.5) stereotipi si applicano solo a Spring MVC? – topchef
Le tre annotazioni di alto livello potrebbero essere visualizzate come specifiche MVC.Potresti riutilizzarli per altri scopi, ma potresti perdere dei problemi di aggiornamento se vengono modificati nelle versioni future. @Component è l'annotazione di cablaggio del bean generico e potrebbe essere facilmente estesa e utilizzata al di fuori del dominio MVC. – seanhodges
Non dimenticate di aggiungere questo tag su XML
<context:component-scan base-package="com.example.beans"/>
Le annotazioni non è MVC più specifica. Vedere lo reference documentation per ulteriori informazioni. Un esempio di utilizzo dell'annotazione @Component o di una sua specifica è il tcServer con il relativo supporto di monitoraggio. Vedi here per un esempio. Questo supporto per il monitoraggio viene aggiunto con la tessitura AspectJ in fase di caricamento.
Riepilogato, le annotazioni possono essere utilizzate in diverse impostazioni in fase di esecuzione dopo l'avvio del contenitore Spring o in fase di compilazione/caricamento con la tessitura AspectJ.
Questo non è completamente vero. L'annotazione @Component non è specifica per MVC, ma gli altri elencati nella domanda dell'OP sono tutti specifici per MVC. – seanhodges
seanhodges: No, @Repository, @Controller e @Service appartengono tutti al modulo org.springframework.context. @Endpoint che è anche una specializzazione di @Component è specifico per Spring WS ed è parte del modulo org.springframework.ws.java5. Un frammento della documentazione di riferimento di Spring 3 (non specifico MVC): In Spring 2.0 e versioni successive, l'annotazione @Repository è un marker per qualsiasi classe che soddisfa il ruolo o lo stereotipo (noto anche come Data Access Object o DAO) di un repository. Tra gli usi di questo marcatore c'è la traduzione automatica delle eccezioni. – Espen
- 1. Come si usano le spline in pythonOCC?
- 2. Mocking Spring MVC BindingResult quando si utilizzano le annotazioni
- 3. Accesso a HttpServletRequest dal consiglio AOP in Spring 2.5 con annotazioni
- 4. Spring @Le annotazioni di transazione ignorate
- 5. Spring AOP: come ottenere le annotazioni del metodo consigliato
- 6. prestazioni Haskell quando si usano le classi e le istanze
- 7. Annotazioni Spring @RequestMapping multiple
- 8. Come si sostituisce un bean spring definito in xml utilizzando le annotazioni?
- 9. Come si usano le stringhe letterali con l'interpolazione?
- 10. Perché devo dichiarare ogni singola classe nel mio hibernate.cfg.xml quando si usano le annotazioni?
- 11. Come si usano le sezioni in app.config C# 4.0?
- 12. Come si usano le variabili booleane in Perl?
- 13. Come si usano le variabili di classe in Clamato?
- 14. Come si usano le classi NodaTime in un PropertyGrid?
- 15. provare ... tranne ... come errore in Python 2.5 - Python 3.x
- 16. Leggere le proprietà del file usando le annotazioni Spring
- 17. Come si usano git worktrees in IntelliJ IDEA 2016.1?
- 18. Registrazione di un hook di chiusura in Spring 2.5
- 19. Abilita preventivamente le annotazioni pre-post di Spring Security
- 20. Ottieni percorsi automaticamente in Play! 2.5.x quadro
- 21. Pianificazione delle attività asincrone in PlayFramework 2.5.X (Java)
- 22. Come si usano i loop in TSQL?
- 23. Come si usano i CSS in Django?
- 24. Come si usano numeri casuali in C#?
- 25. Spring ignora le annotazioni @Transactional nella classe Apache Shiro Realm
- 26. Scrive meno DAO con Spring Hibernate utilizzando le annotazioni
- 27. Come costruire barattolo da quadro gioco 2.5.x
- 28. Come si usano le sessioni con Compojure/Ring?
- 29. Utilizzare le annotazioni Spring per applicare automaticamente Hibernate Interceptor?
- 30. Come si usano le icone di fontello nel mio css?
La semantica delle varie annotazioni degli stereotipi è documentata in javadoc. – skaffman