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 "
03.
xmlns: xsi
=
" http://www.w3.org/2001/XMLSchema-instance "
. 04
xmlns: contesto
=
" http://www.springframework.org/schema/context "
05.
xmlns: MVC
=
" http://www.springframework.org/schema/mvc "
06.
xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
07.
http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd
08.
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd">
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ù ordinato, ma sono anche più difficili da installare? Ti 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.