lunedì 7 novembre 2011

Utilizzando JSR-250 è @ PostConstruct Annotazione per sostituire Spring InitializingBean

JSR-250 Annotazioni aka comuni per la piattaforma Java è stata introdotta come parte di Java EE 5 uno è di solito utilizzato per EJB3s annotati. Cosa non così noto è che la Primavera ha sostenuto tre delle annotazioni a partire dalla versione 2.5. Le annotazioni supportati sono:
  • @ PostContruct - Questa annotazione è applicato a un metodo per indicare che esso dovrebbe essere invocato dopo tutto l'iniezione di dipendenza è completa.
  • @ PreDestroy - Questo è applicato a un metodo per indicare che dovrebbe essere invocato prima che il fagiolo è stato rimosso dal contesto primavera, cioè subito prima che sia distrutto.
  • @ Resource - Questo duplica la funzionalità di @ Autowired combinato con @ Qualifier come si ottiene l'ulteriore vantaggio di poter nome che si sta iniettando di fagioli, senza la necessità di due annotazioni.

Questo blog vuole un rapido sguardo alla prima annotazione nell'elenco @ PostConstruct, dimostrando come sia applicata e confrontandola con l'interfaccia equivalente InitializingBean. InitializingBean dispone di un metodo, afterPropertiesSet (), e fa quello che dice sulla latta. Il metodo afterPropertiesSet () viene chiamato dopo la primavera ha completato il cablaggio cose insieme. Il frammento di codice seguente mostra come InitializingBean è implementata.


01.pubblico classe ImplementInitializingBean implementa InitializingBean {
02. 
03.private boolean risultato;
04. 
05.pubblico businessMethod String () {
06. 
07.System.out.println ( "Inside - ImplementInitializingBean" );
08.ritorno "InitializingBeanResult" ;
09.}
10. 
11./ **
12.* Questo fa parte dell'interfaccia InitializingBean - chiamato dopo che il fagiolo è stata messa a punto. Utilizzare questo metodo per controllare che la
13.fagiolo * è stata messa a punto correttamente. Anche così usarlo per configurare le risorse esterne, come i database, ecc
14.* /
15.@ Override
16.pubblico vuoto afterPropertiesSet () throws Exception {
17. 
18.result = true ;
19.System.out.println ( "In aferPropertiesSet () - controlla il set-up del fagiolo.");
20.}
21. 
22.pubblico boolean getResult () {
23.rientro risultato;
24.}
25.}

Le annotazioni sono tenuti a rendere la vita più facile, ma fanno in questo caso? In primo luogo usare la @ PostConstruct annotazione è necessario includere le seguenti dipendenze del file POM:

01.<- Richiesto per le annotazioni Primavera ->         
02.dipendenza >
03.groupId > org.springframework </ groupId >
04.artifactId > primavera-web </ artifactId >
05.versione > spring.version $ {} </ version >
06.</ dipendenza >
07.dipendenza >
08.groupId > org.springframework </ groupId >
09.artifactId > primavera-webmvc </ artifactId >
10.versione > spring.version $ {} </ version >
11.</ dipendenza >
12.dipendenza >
13.groupId > javax.servlet </ groupId >
14.artifactId > servlet-api </ artifactId >
15.versione > 2.5 </ version >
16.ambito > fornito </ portata >
17.</ dipendenza >

È inoltre necessario dire Primavera di usare le annotazioni aggiungendo quanto segue al file di configurazione di primavera:

01.<? xml version "1.0" encoding "UTF-8" ?>
02.fagioli xmlns http://www.springframework.org/schema/beans "
. 04xmlns: contesto http://www.springframework.org/schema/context "
09. 
10.<!-- Scans the classpath of this application for @Components to deploy as beans -->
11.<context:component-scan base-package="jsr250annotations" />
12. 
13.<!-- Configures the @Controller programming model -->
14.<mvc:annotation-driven />
15.</beans>

Having setup the environment, you can now use the @PostConstruct annotation.
01.@Component
02.public class ImplementPostConstruct implements MyPostConstructExample {
03. 
04.private boolean result;
05. 
06.@Override
07.public String businessMethod() {
08. 
09.System.out.println("Inside - ImplementPostConstruct");
10.return "ImplementPostConstruct";
11.}
12. 
13./**
14.* @PostConstruct means that this is called after the bean has been set-up.
15.*                Use this method to check that the bean has been set-up
16.*                correctly. Also so use it to configure external resources
17.*                such as databases etc.
18.*/
19.@PostConstruct
20.public void postConstruct() {
21. 
22.result = true;
23.System.out
24..println("In postConstruct() - check the set-up of the bean.");
25.}
26. 
27.@Override
28.public boolean getResult() {
29.return result;
30.}
31.}
32. 
33.This is tested using the JUnit Test below:
34.@Test
35.public void postConstructTest() {
36. 
37.instance1 = ctx.getBean(ImplementPostConstruct.class);
38. 
39.String result = instance1.businessMethod();
40.assertEquals("ImplementPostConstruct", result);
41. 
42.boolean var = instance1.getResult();
43.assertTrue(var);
44.}
I due ammassi di codice di cui sopra fanno la stessa cosa con PostConstruct () viene chiamato alasafterPropertiesSet tempo stesso (). E 'facile vedere che le annotazioni aspetto più ordinatoma sono anche più difficili da installareTi lascerò essere il giudice di tutto questo. Infine, un ultima cosa da notare, le annotazioniJSR-250 forniscono utili funzionalità di base, ma sono parte del progetto Spring MVC garantendo una dipendenzapossibile superfluo sulla javax.servlet-api vaso, in modo forse un po 'di refactoring può essere una buona idea un certo punto.

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.