Manuale Spring3

86
 

Transcript of Manuale Spring3

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 1/86

 

S p r i n g 3      

T r a v e r s i S i m o n e      

2 9 g e n n a i o 2 0 1 0      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 2/86

 

I n d i c e      

I n t r o d u z i o n e i v    

0 . 1 P a n o r a m i c a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i v      

0 . 2 L e i n n o v a z i o n i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i v      

0 . 3 I m o d u l i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v      

I C o r e T e c h n o l o g i e s 1    

1 I l c o n t e n i t o r e I o C 2    

1 . 1 C r e a z i o n e d i u n b e a n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4      

1 . 2 C o n g u r a z i o n e d i u n b e a n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5      

1 . 3 C o s t r u i r e u n a r e t e d i o g g e t t i . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6      

1 . 4 L e c o l l e z i o n i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8      

1 . 4 . 1 I g e n e r i c s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8      

1 . 5 L a s t r i n g a v u o t a e i l    n u l l    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9      

1 . 6 I n i z i a l i z z a z i o n e L a z y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9      

1 . 7 L o s c o p e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0      

1 . 8 C i c l o d i v i t a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0      

1 . 9 E s t e n s i o n e d e l c o n t a i n e r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1      

1 . 9 . 1 B e a n P o s t P r o c e s s o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1      

1 . 9 . 2 B e a n F a c t o r y P o s t P r o c e s s o r . . . . . . . . . . . . . . . . . . . . . . . . . 1 2      

1 . 9 . 3 B e a n F a c t o r y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3      

1 . 1 0 E r e d i t a r i e t à . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3      

1 . 1 1 U s a r e i l e . p r o p e r t i e s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 4      

1 . 1 2 U s o d e l l e a n n o t a t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 5      

1 . 1 2 . 1 @ R e q u i r e d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 5      

1 . 1 2 . 2 @ R e s o u r c e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 5      

1 . 1 2 . 3 @ P o s t C o n s t r u c t e @ P r e D e s t r o y . . . . . . . . . . . . . . . . . . . . . . 1 6      

1 . 1 3 R i l e v a z i o n e a u t o m a t i c a d e i c o m p o n e n t i . . . . . . . . . . . . . . . . . . . . . . 1 6      

1 . 1 3 . 1 U s o d e i l t r i p e r u n o s c a n n i n g c u s t o m i z z a t o . . . . . . . . . . . . . . . 1 7      

1 . 1 4 I n t e r n a z i o n a l i z z a z i o n e c o n      M e s s a g e S o u r c e      . . . . . . . . . . . . . . . . . . . . 1 8      

2 V a l i d a z i o n e 2 0    

2 . 1 I n t r o d u z i o n e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0      

2 . 2 L ' i n t e r f a c c i a      V a l i d a t o r      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0      

2 . 2 . 1 G e s t i o n e d i c o n t r o l l i p i ù c o m p l e s s i . . . . . . . . . . . . . . . . . . . . 2 3      

2 . 2 . 2 G e s t i o n e d e i m e s s a g g i d ' e r r o r e t r a m i t e      m e s s a g e S o u r c e      . . . . . . . . . 2 3      

2 . 3 V a l i d a z i o n e d i u n a r e t e d i b e a n . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4      

i  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 3/86

 

I N D I C E         i i  

3 S p r i n g E x p r e s s i o n L a n g u a g e ( S p E L ) 2 8      

3 . 1 I n t r o d u z i o n e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 8      

3 . 2 P a n o r a m i c a s u l l e c a r a t t e r i s t i c h e . . . . . . . . . . . . . . . . . . . . . . . . . . 2 8      

3 . 3 V a l u t a z i o n e d e l l e e s p r e s s i o n i u s a n d o l ' i n t e r f a c c i a      E x p r e s s i o n      d i S p r i n g . . . . 2 9      

3 . 3 . 1 L ' i n t e r f a c c i a      E v a l u a t i o n C o n t e x t    . . . . . . . . . . . . . . . . . . . . . . 3 1      

3 . 4 S u p p o r t o d e l l e e s p r e s s i o n i a l l a d e n i z i o n e d e i b e a n . . . . . . . . . . . . . . . 3 1      

3 . 5 R e f e r e n c e d e l l i n g u a g g i o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2      

4 S p r i n g A O P 3 3  

4 . 1 I n t r o d u z i o n e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3      

4 . 1 . 1 C o n c e t t i d e l l ' A O P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3      

4 . 1 . 2 C a p a c i t à e o b i e t t i v i d i S p r i n g A O P . . . . . . . . . . . . . . . . . . . . 3 4      

4 . 1 . 3 A O P P r o x i e s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 5      

4 . 2 A O P c o n @ A s p e c t J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 5      

4 . 2 . 1 A b i l i t a r e i l s u p p o r t o a @ A s p e c t J . . . . . . . . . . . . . . . . . . . . . 3 5      

4 . 2 . 2 D i c h i a r a r e u n a s p e t t o . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6      

4 . 2 . 3 D i c h i a r a r e u n p o i n t c u t . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6      

4 . 2 . 3 . 1 I n d i c a t o r i s u p p o r t a t i p e r i P o i n t c u t . . . . . . . . . . . . . . 3 7      

4 . 2 . 3 . 2 C o m b i n a r e l e e s p r e s s i o n i d e i p o i n t c u t . . . . . . . . . . . . . 3 8      

4 . 2 . 3 . 3 C o n d i v i d e r e l e d e n i z i o n i d e i p o i n t c u t i n c o m u n e . . . . . . . 3 9      

4 . 2 . 3 . 4 A l c u n i e s e m p i . . . . . . . . . . . . . . . . . . . . . . . . . . 4 0      

4 . 2 . 4 D i c h i a r a r e u n a d v i c e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2      

4 . 2 . 4 . 1 B e f o r e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2      

4 . 2 . 4 . 2 A f t e r r e t u r n i n g . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3      

4 . 2 . 4 . 3 A f t e r t h r o w i n g . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3      

4 . 2 . 4 . 4 A f t e r ( n a l l y ) . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4      

4 . 2 . 4 . 5 A r o u n d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4      

4 . 2 . 4 . 6 G e s t i o n e d e i p a r a m e t r i . . . . . . . . . . . . . . . . . . . . . 4 5      

4 . 2 . 4 . 7 P r i o r i t à . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6      

4 . 2 . 5 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6      

4 . 2 . 6 M o d e l l o d i i n s t a n z i a z i o n e d i u n a s p e t t o . . . . . . . . . . . . . . . . . 4 7      

4 . 2 . 7 E s e m p i o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 7      

4 . 3 A O P c o n X M L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 9      

4 . 3 . 1 D i c h i a r a r e u n a s p e t t o . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 0      

4 . 3 . 2 D i c h i a r a r e u n p o i n t c u t . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 0      

4 . 3 . 3 D i c h i a r a r e u n a d v i c e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1      

4 . 3 . 3 . 1 B e f o r e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1      

4 . 3 . 3 . 2 A f t e r r e t u r n i n g . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1      

4 . 3 . 3 . 3 A f t e r t h r o w i n g . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2      

4 . 3 . 3 . 4 A f t e r ( n a l l y ) . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2      

4 . 3 . 3 . 5 A r o u n d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2      

4 . 3 . 3 . 6 G e s t i o n e d e i p a r a m e t r i . . . . . . . . . . . . . . . . . . . . . 5 2      

4 . 3 . 4 I n t r o d u z i o n i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3      

4 . 3 . 5 M o d e l l o d i i n s t a n z i a z i o n e d i u n a s p e t t o . . . . . . . . . . . . . . . . . 5 3      

4 . 3 . 6 A d v i s o r s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3      

4 . 3 . 7 E s e m p i o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4      

4 . 4 S c e g l i e r e l o s t r u m e n t o p e r g e s t i r e l ' A O P . . . . . . . . . . . . . . . . . . . . . 5 5      

4 . 4 . 1 S p r i n g A O P o A s p e c t J ? . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5      

4 . 4 . 2 @ A s p e c t J o X M L ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 4/86

 

I N D I C E         i i i  

4 . 5 I l m e c c a n i s m o d e i p r o x y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 7      

4 . 5 . 1 C a p i r e i p r o x y A O P . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 7      

4 . 6 C r e a z i o n e p r o g r a m m a t i c a d e i p r o x y @ A s p e c t J . . . . . . . . . . . . . . . . . . 6 0      

I I D a t a A c c e s s 6 1    

5 G e s t i o n e d e l l e t r a n s a z i o n i 6 2      

5 . 1 V a n t a g g i d e l s u p p o r t o d i S p r i n g a l l a g e s t i o n e d e l l e t r a n s a z i o n i . . . . . . . . . 6 2      

5 . 1 . 1 T r a n s a z i o n i g l o b a l i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2      

5 . 1 . 2 T r a n s a z i o n i l o c a l i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2      

5 . 1 . 3 M o d e l l o d i p r o g r a m m a z i o n e d i S p r i n g . . . . . . . . . . . . . . . . . . 6 3      

5 . 2 C o m p r e n d e r e l ' a s t r a z i o n e d e l l e t r a n s a z i o n i d i S p r i n g . . . . . . . . . . . . . . 6 3      

5 . 3 G e s t i o n e d i c h i a r a t i v a d e l l e t r a n s a z i o n i . . . . . . . . . . . . . . . . . . . . . . 6 5      

5 . 3 . 1 C o m p r e n d e r e l ' a p p r o c c i o d i c h i a r a t i v o . . . . . . . . . . . . . . . . . . . 6 6      

5 . 3 . 2 E s e m p i o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6      

5 . 3 . 3 R o l l b a c k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 9      

5 . 3 . 4 C o n g u r a z i o n e d i e r e n t i p e r b e a n d i e r e n t i . . . . . . . . . . . . . . . 6 9      

5 . 3 . 5 < t x : a d v i c e / > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1      

5 . 3 . 6 @ T r a n s a c t i o n a l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1      

5 . 3 . 6 . 1 C o n g u r a z i o n e d i @ T r a n s a c t i o n a l . . . . . . . . . . . . . . . 7 3      

5 . 3 . 7 P r o p a g a z i o n e d e l l e t r a n s a z i o n i . . . . . . . . . . . . . . . . . . . . . . . 7 3      

5 . 3 . 7 . 1 R e q u i r e d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3      

5 . 3 . 7 . 2 R e q u i r e s N e w . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4      

5 . 3 . 7 . 3 N e s t e d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4      

5 . 3 . 8 A d v i s e p e r l e t r a n s a z i o n i . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4      

5 . 4 G e s t i o n e p r o g r a m m a t i c a d e l l e t r a n s a z i o n i . . . . . . . . . . . . . . . . . . . . 7 7      

5 . 4 . 1 U s a r e i l    P l a t f o r m T r a n s a c t i o n M a n a g e r      . . . . . . . . . . . . . . . . . . 7 7      

5 . 5 G e s t i o n e d i c h i a r a t i v a V s g e s t i o n e p r o g r a m m a t i c a . . . . . . . . . . . . . . . . 7 8      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 5/86

 

I n t r o d u z i o n e      

Q u e s t o d o c u m e n t o h a l o s c o p o d i f o r n i r e u n a g u i d a s e m p l i c e e i m m e d i a t a , m a n o n e s a u s t i v a ,  

a l l ' u t i l i z z o d e l f r a m e w o r k S p r i n g .  

I l m o t i v o c h e m i h a s p i n t o a l l a c o m p o s i z i o n e d i q u e s t o d o c u m e n t o r i s i e d e n e l l a s c a r s i s s i m a      

p r e s e n z a d i m a t e r i a l e i n i t a l i a n o s u l l ' a r g o m e n t o .  

C i t e n g o a p r e c i s a r e c h e q u e s t a g u i d a n o n p r e s e n t a t u t t i g l i a r g o m e n t i p r e s e n t i s u l l e r e f e r -    

e n c e u c i a l i , m a s o l o u n a s e l e z i o n e , e e t t u a t a s u l l a b a s e d e l l ' e e t t i v a u t i l i t à c h e i o h o r i l e v a t o      

s u c e r t e f u n z i o n a l i t à . T a n t o p e r c i t a r e u n o d e i g r a n d i e s c l u s i , l a f u n z i o n a l i t à d e l l '  a u t o w i r i n g      

n o n s a r à t r a t t a t a , p o i c h è l a r i t e n g o u n a f u n z i o n a l i t à c h e s e d a u n a p a r t e s e m p l i c a u n p o c h i n o      

i l l e d i c o n g u r a z i o n e d i S p r i n g , d a l l ' a l t r a r i s c h i a d i i n t r o d u r r e i m p r e c i s i o n e n e l l a s t r u t t u r a      

d e l l ' a p p l i c a z i o n e c h e s i r e a l i z z a . T a l e i m p r e c i s i o n e , s e n o n b e n c o n t r o l l a t a , p u ò p o r t a r e a u n      

c a t t i v o f u n z i o n a m e n t o . T u t t a v i a , s a l t a r e q u e s t o a r g o m e n t o n o n t o g l i e n u l l a a l l o s t u d i o d e l    

f r a m e w o r k , p o i c h è l o s t e s s o t i p o d i f u n z i o n a l i t à ( m a s e n z a i m p r e c i s i o n i ) p u ò e s s e r e o t t e n u t a      

c o n a l t r i s t r u m e n t i c h e i n v e c e s a r a n n o t r a t t a t i .  

I n o g n i c a s o , p e r q u a l s i a s i a p p r o f o n d i m e n t o s i c o n s i g l i a d i u t i l i z z a r e l a d o c u m e n t a z i o n e      

u c i a l e i n l i n g u a i n g l e s e , d i s p o n i b i l e a l l ' i n d i r i z z o :  

h t t p : / / w w w . s p r i n g s o u r c e . o r g / d o c u m e n t a t i o n      

L a v e r s i o n e a c u i q u e s t o d o c u m e n t o s i r i f e r i s c e è l a 3 .  

0 . 1 P a n o r a m i c a      

S p r i n g è u n f r a m e w o r k o p e n s o u r c e p e r l o s v i l u p p o d i a p p l i c a z i o n i s u p i a t t a f o r m a J a v a [ W i k i p e d i a ] .  

I l s u o s c o p o è q u e l l o d i r e n d e r e l o s v i l u p p o d i a p p l i c a z i o n i e n t e r p r i s e p i ù s e m p l i c e e p i ù      

v e l o c e , a b b a t t e n d o q u i n d i i c o s t i d i p r o d u z i o n e .  

L a p r i m a v e r s i o n e v e n n e s c r i t t a d a R o d J o h n s o n , n e l G i u g n o 2 0 0 3 e s o t t o L i c e n z a A p a c h e .  

I l p r i m o r i l a s c i o , l a v e r s i o n e 1 . 0 , r i s a l e a l M a r z o 2 0 0 4 .  

S p r i n g n a s c e p e r f o r n i r e a g l i s v i l u p p a t o r i u n ' a l t e r n a t i v a p i ù s e m p l i c e a g l i E J B 2 . 0 , l a s c i a n -    

d o a l t e m p o s t e s s o u n a m a g g i o r e l i b e r t à . I n q u e s t o è s t a t o a m p i a m e n t e r i c o n o s c i u t o c o m e u n      

o t t i m o r i s u l t a t o .  

0 . 2 L e i n n o v a z i o n i    

U n o d e i m e r i t i d i q u e s t o f r a m e w o r k è s t a t o q u e l l o d i r e n d e r e p o p o l a r i a l c u n e t e c n i c h e p r i m a      

d i e s s o p o c o n o t e , c o m e l '  I n v e r s i o n O f C o n t r o l    e i l   p a r a d i g m a d i p r o g r a m m a z i o n e      

o r i e n t a t a a g l i a s p e t t i    . 

T i p i c a m e n t e u n ' a p p l i c a z i o n e J a v a è c o m p o s t a d a u n c e r t o n u m e r o d i c o m p o n e n t i , g l i    

o g g e t t i    , c h e c o l l a b o r a n o l ' u n o c o n l ' a l t r o p e r o t t e n e r e i l c o m p o r t a m e n t o d e s i d e r a t o . T a l i    

o g g e t t i s o n o p e r t a n t o l e g a t i d a      d i p e n d e n z e      . 

I l l i n g u a g g i o J a v a h a s e m p r e l a s c i a t o g l i s v i l u p p a t o r i m o l t o l i b e r i d i p r o g e t t a r e l ' a r c h i t e t -    

t u r a d e l l e a p p l i c a z i o n i c o n a s s o l u t a ( f o r s e t r o p p a ) l i b e r t à . P e r q u e s t o m o t i v o n e l c o r s o d e l    

i v   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 6/86

 

I N T R O D U Z I O N E         v   

t e m p o s o n o n a t i u n a v a s t a g a m m a d i p a t t e r n s (    F a c t o r y      ,  B u i l d e r      ,  A b s t r a c t F a c t o r y      ,  D e c o r a t o r      , 

S e r v i c e L o c a t o r      ) c o m u n e m e n t e r i c o n o s c i u t i e d a c c e t t a t i d a l l ' i n d u s t r i a d e l s o f t w a r e . Q u e s t o è      

s t a t o s i c u r a m e n t e u n b e n e , m a i p a t t e r n s o n o s o l o q u e s t o : d e i    b e s t p r a t i c e s      . 

I l m o d u l o d e l l ' I o C ( I n v e r s i o n o f C o n t r o l ) , c o m e s i v e d r à i n s e g u i t o , f o r m a l i z z a q u e s t i c o n -    

c e t t i , f o r n e n d o u n a i n f r a s t r u t t u r a c h e g u i d a l o s v i l u p p a t o r e n e l l a c o s t r u z i o n e d e l l ' a p p l i c a z i o n e ,  

f o r n e n d o g l i t u t t i g l i s t r u m e n t i n e c e s s a r i p e r p o t e r a p p l i c a r e i s u d d e t t i p a t t e r n s .  

L a p r o g r a m m a z i o n e o r i e n t a t a a g l i a s p e t t i è u n p a r a d i g m a d i p r o g r a m m a z i o n e b a s a t o s u l l a      

c r e a z i o n e d i e n t i t à s o f t w a r e , g l i    a s p e t t i    , c h e s o v r i n t e n d o n o a l l e i n t e r a z i o n i f r a o g g e t t i n a l i z z a t e      

a d e s e g u i r e u n c o m p i t o c o m u n e . I l v a n t a g g i o r i s p e t t o a l l ' a p p r o c c i o t r a d i z i o n a l e a d o g g e t t i    

c o n s i s t e n e l n o n d o v e r i m p l e m e n t a r e s e p a r a t a m e n t e i n c i a s c u n o g g e t t o i l c o d i c e n e c e s s a r i o a d      

e s e g u i r e q u e s t o c o m p i t o c o m u n e [ W i k i p e d i a ] .  

T i p i c i e s e m p i d i r e s p o n s a b i l i t à ' s p a l m a t e ' s u m o l t e p l i c i o g g e t t i s o n o i l l o g d e l l e o p e r a z i o n i    

o l a g e s t i o n e d e l l a p r o l a z i o n e .  

E n t r a m b i q u e s t i c o n c e t t i s a r a n n o a p p r o f o n d i t i p i ù a v a n t i .  

0 . 3 I m o d u l i    

I n r e a l t à c h i a m a r l o f r a m e w o r k è f o r s e r i d u t t i v o , p o i c h è S p r i n g è c o m p o s t o d a u n a v a s t a g a m m a      

d i m o d u l i , o g n u n o d e i q u a l i è u n f r a m e w o r k a s e s t a n t e . L ' a s p e t t o i n t e r e s s a n t e è c h e o g n u n o      

d i q u e s t i m o d u l i l a v o r a i n m a n i e r a i n d i p e n d e n t e d a g l i a l t r i . Q u e s t o p e r m e t t e d i i n t e g r a r e      

n e l l a p r o p r i a a p p l i c a z i o n e t u t t i e s o l i i m o d u l i d i i n t e r e s s e . N o n s i a m o q u i n d i c o s t r e t t i a d u n      

a p p r o c c i o d e l t i p o      o t u t t o o n i e n t e      . 

T a l i m o d u l i s i p o s s o n o r a g g r u p p a r e i n b a s e a l l e l o r o c a r a t t e r i s t i c h e p r i n c i p a l i : C o r e C o n -    

t a i n e r , D a t a A c c e s s / I n t e g r a t i o n , W e b , A O P , I n s t r u m e n t a t i o n , T e s t . L ' o r g a n i z z a z i o n e d i t a l i    

g r u p p i è v i s i b i l e c h i a r a m e n t e n e l l a g u r a 1 .  

F i g u r a 1 : A r c h i t e t t u r a d i S p r i n g      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 7/86

 

I N T R O D U Z I O N E         v i  

N e i c a p i t o l i c h e s e g u i r a n n o v e r r a n o d e s c r i t t i q u e s t i m o d u l i u n o p e r u n o .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 8/86

 

P a r t e I    

C o r e T e c h n o l o g i e s    

1   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 9/86

 

C a p i t o l o 1      

I l c o n t e n i t o r e I o C        

E ' p r o b a b i l m e n t e u n o d e g l i a s p e t t i i n c u i S p r i n g s i è m o s t r a t o v e r a m e n t e i n n o v a t i v o .  

P e r u s u f r u i r e d i t a l e s e r v i z i o è n e c e s s a r i o i m p o r t a r e n e l p r o p r i o p r o g e t t o i d u e l e s j a r    

o r g . s p r i n g f r a m e w o r k . b e a n s      e    o r g . s p r i n g f r a m e w o r k . c o n t e x t    . 

M o l t o s p e s s o n e l l e n o s t r e a p p l i c a z i o n i , c a p i t a c h e u n o g g e t t o A d e b b a u s a r e i l m e t o d o d i    

u n o g g e t t o B . Q u a n d o q u e s t o s u c c e d e , t i p i c a m e n t e l ' o g g e t t o A d e v e p r i m a d i t u t t o c r e a r e      

u n ' i s t a n z a d i B . Q u e s t a o p e r a z i o n e è p o s s i b i l e t r a m i t e l ' u s o d e l l ' o p e r a t o r e      n e w     : 

/ / c l a s s e B      

p u b l i c c l a s s B {      

p u b l i c v o i d e s e g u i ( ) {      

S y s t e m . o u t . p r i n t l n ( " C i a o M o n d o ! " ) ;    

}   

}   

/ / c l a s s e A      

p u b l i c c l a s s A {      

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

B b = n e w B ( ) ;    

b . e s e g u i ( ) ;    

}   

}   

C o n l ' o p e r a t o r e      n e w     n o i s t i a m o c h i e d e n d o l ' i s t a n z i a z i o n e d e l l a c l a s s e B . O v v e r o l a c l a s s e      

A c h i e d e a l l a J V M u n ' i s t a n z a d e l l a c l a s s e B , c o m e r a p p r e s e n t a t o i n g u r a 1 . 1 .  

A JVM

n e w

F i g u r a 1 . 1 : C r e a z i o n e d i u n b e a n      

L ' I o C p a r t e d a l l ' i d e a d i i n f r a m e z z a r e t r a l a c l a s s e A e l a J V M u n t e r z o c o m p o n e n t e , c h e      

c h i a m e r e m o I O C , c h e s i p r o p o n e c o m e i n t e r m e d i a r i o . I l p a s s a g g i o , c o m ' è v i s i b i l e i n g u r a 1 . 2 ,  

s a r à q u i n d i : A c h i e d e a I O C d i c h i e d e r e a J V M u n ' i s t a n z a d e l l a c l a s s e B .  

2   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 10/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         3   

F i g u r a 1 . 2 : I n v e r s i o n o f C o n t r o l    

D a q u i , i l c o n c e t t o d i ' i n v e r s i o n e d e l c o n t r o l l o ' : n o n s i a m o p i ù ' n o i ' a c h i e d e r e u n ' i s t a n z a ,  

m a è q u a l c u n a l t r o c h e l a c h i e d e ( c e r t o , s u l l a b a s e c o m u n q u e d e l l e n o s t r e i s t r u z i o n i ) e c e l a      

r e s t i t u i s c e .  

M a p e r c h è i n t r o d u r r e u n ' i n d i r e z i o n e ?      

L ' i d e a d i i n t r o d u r r e u n i n t e r m e d i a r i o , i n r e a l t à , n o n è p o i c o s i s t r a n a . I n e e t t i , n e l l e      

a t t u a l i a p p l i c a z i o n i , m o l t o s p e s s o l a c r e a z i o n e d e i b e a n s è a d a t a a c l a s s i ( d i s o l i t o s t a t i c h e )    

p r e p o s t e a q u e s t o c o m p i t o , n e l r i s p e t t o d e l p a t t e r n f a c t o r y . N e l l ' e s e m p i o i n g u r a 1 . 3 l e      

c l a s s i d e l b u s i n e s s c h e h a n n o b i s o g n o d i u t i l i z z a r e c l a s s i d a o , n e c h i e d o n o l e i s t a n z e a l m o d u l o      

S e r v i c e F a c t o r y .  

I l v a n t a g g i o è q u e l l o d i c e n t r a l i z z a r e i l c o n c e t t o d i c r e a z i o n e ( e s o p r a t t u t t o c o n g u r a z i o n e )    

d e i b e a n s a l l ' i n t e r n o d i u n ' u n i c a c l a s s e , a n c h è i l p r o b l e m a p o s s a e s s e r e g e s t i t o p i ù a g i l m e n t e .  

I v a n t a g g i d i q u e s t o a p p r o c c i o s a r a n n o m e g l i o e v i d e n z i a t i p i ù a v a n t i .  

Business DAO

ServiceFactory

F i g u r a 1 . 3 : E s e m p i o d i i m p l e m e n t a z i o n e d e l p a t t e r n f a c t o r y      

S u p p o n e n d o d i a d o t t a r e u n a s o l u z i o n e d i q u e s t o t i p o , i l n o s t r o c o d i c e d i v e n t e r e b b e :  

/ / F a c t o r y      

p u b l i c a b s t r a c t c l a s s B e a n s F a c t o r y {      

p u b l i c s t a t i c B g e t B ( ) {      

r e t u r n n e w B ( ) ;    

}   

}   

/ / c l a s s e A      

p u b l i c c l a s s A {      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 11/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         4   

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

B b = B e a n s F a c t o r y . g e t B ( ) ;    

b . e s e g u i ( ) ;    

}   

}   

1 . 1 C r e a z i o n e d i u n b e a n        

L ' i d e a d i I o C è q u i n d i u n a f o r m a l i z z a z i o n e d i u n a t e c n i c a g i à p r e s e n t e d a d i v e r s i a n n i n e l -    

l ' i n g e g n e r i a d e l s o f t w a r e . T a l e m o d u l o c i m e t t e q u i n d i a d i s p o s i z i o n e u n a f a c t o r y g i à p r o n t a      

p e r l ' u s o a l l a q u a l e d o b b i a m o s o l o d a r e l e i s t r u z i o n i p e r l a c r e a z i o n e d e i b e a n s . C o m e i n t u t t i    

i f r a m e w o r k , t a l e c o n g u r a z i o n e a v v i e n e t r a m i t e l e x m l .  

Q u e l l o c h e s e g u e è i l c o d i c e d ' e s e m p i o d e l l e s p r i n g - c o n g . x m l :  

< ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >      

< b e a n s x m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "      

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "      

x s i : s c h e m a L o c a t i o n = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s / s p r i n g - b e a n s - 3 . 0 . x s d " >      

< ! - - D e f i n i z i o n e d e i b e a n s - - >      

< b e a n i d = " p i p p o " c l a s s = " e s e m p i o . B " / >      

< / b e a n s >      

I l t a g u s a t o p e r l a d e n i z i o n e d e i b e a n s è      < b e a n >        . O g n i b e a n s a n d r à d e n i t o d e n t r o u n      

p r o p r i o t a g d i q u e s t o t i p o . T r a i v a r i a t t r i b u t i c h e è p o s s i b i l e s e t t a r e , d u e s o n o o b b l i g a t o r i :   i d    , 

c o n i l q u a l e d e n i a m o i l n o m e c h e d e c i d i a m o d i a s s e g n a r e a l b e a n i n q u e s t i o n e ( i n q u e s t o c a s o      

p i p p o      ) ;  c l a s s      , c o n i l q u a l e s p e c i c h i a m o a l c o n t a i n e r q u a l è , a l l ' i n t e r n o d e l n o s t r o p r o g e t t o , l a      

c l a s s e c h e d o v r à e s s e r e u t i l i z z a t a p e r l ' i m p l e m e n t a z i o n e d i    p i p p o      , c o m p l e t a d i p a c k a g e i n c u i    

t a l e c l a s s e s i t r o v a .  

V e d i a m o a q u e s t o p u n t o c o m e c a m b i a i l c o d i c e a l l ' i n t e r n o d e l l a n o s t r a c l a s s e A .  

/ / c l a s s e A      

p u b l i c c l a s s A {      

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

A p p l i c a t i o n C o n t e x t c o n t e x t =      

n e w C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t ( n e w S t r i n g [ ] { " s p r i n g - c o n f i g . x m l " } ) ;    

B b = ( B ) c o n t e x t . g e t B e a n ( " p i p p o " ) ;    

b . e s e g u i ( ) ;    

}   

}   

A p p l i c a t i o n C o n t e x t    è l ' i n t e r f a c c i a c h e c i p e r m e t t e d i c o m u n i c a r e c o n i l c o n t a i n e r I o C e      

u t i l i z z a r e i s e r v i z i c h e m e t t e a d i s p o s i z i o n e . P e r p o t e r u s u f r u i r e d i t a l i s e r v i z i c r e i a m o l ' o g g e t t o      

c o n t e x t    ( c h e q u i n d i è d i t i p o      A p p l i c a t i o n C o n t e x t    ) , p a s s a n d o g l i i l l e d i c o n g u r a z i o n e a c u i    

d e v e f a r e r i f e r i m e n t o , e i n c u i n e l l o s p e c i c o a b b i a m o d e n i t o i l b e a n      p i p p o      . L ' a r g o m e n t o      

d e l l a f u n z i o n e      C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t ( )    è u n a r r a y d i s t r i n g h e p o i c h è p o s s o n o e s s e r e      

p a s s a t i p i ù l e . x m l .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 12/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         5   

A q u e s t o p u n t o p o s s i a m o c h i e d e r e a l c o n t a i n e r d i r e s t i t u i r c i u n ' i s t a n z a d e l b e a n c h e a b b i -    

a m o c h i a m a t o ' p i p p o ' , t r a m i t e i l m e t o d o      g e t B e a n ( S t r i n g n o m e )    . T a l e m e t o d o è s o v r a c c a r i c o .  

I n q u e s t a s p e c i c a d e n i z i o n e , a c c e t t a c o m e p a r a m e t r o u n a s t r i n g a ( i l n o m e d e l b e a n c h e      

v o g l i a m o ) . R e s t i t u i s c e u n      o b j e c t    , e q u e s t o c i c o s t r i n g e a d u n c a s t .  

S e v o g l i a m o e v i t a r e i l c a s t p o s s i a m o a n c h e s c r i v e r e :  

B b = c o n t e x t . g e t B e a n ( " p i p p o " , B . c l a s s ) ;    

A v e n d o p a s s a t o l a c l a s s e B t r a i p a r a m e t r i , i l c a s t n o n è n e c e s s a r i o .  

1 . 2 C o n g u r a z i o n e d i u n b e a n        

N a t u r a l m e n t e , s e i l r u o l o d e l l ' i n t e r m e d i a r i o f o s s e s o l o q u e l l o d i c r e a r e o g g e t t i , s a r e b b e p i u t -    

t o s t o c o m p l i c a t o c a p i r n e l ' u t i l i t à .  

M o l t o s p e s s o c a p i t a c h e u n b e a n , p r i m a d i e s s e r e u s a t o , d e b b a e s s e r e c o n g u r a t o . P o t r e b b e      

e s s e r e i l c a s o d i u n D A O , c h e p r i m a d i e s s e r e u s a t o d e v o n o e s s e r e s e t t a t i i s u o i p a r a m e t r i p e r    

l a c o n n e s s i o n e a d u n d b . I n g e n e r a l e , o g n i o g g e t t o i l c u i c o m p o r t a m e n t o è d e t e r m i n a t o d a l    

v a l o r e d e i s u o i a t t r i b u t i , d e v e e s s e r e c o n g u r a t o p r i m a d i e s s e r e u s a t o .  

I n u n c a s o c o m e q u e l l o s o p r a d e s c r i t t o , a l l a c r e a z i o n e d i u n b e a n , d o v r e b b e r o s e g u i r e u n      

e l e n c o d i c h i a m a t e a i s u o i m e t o d i    s e t ( )    p e r s e t t a r e t u t t i g l i a t t r i b u t i d e l b e a n , o i n a l t e r n a t i v a ,  

c r e a r e u n c o s t r u t t o r e a d h o c p e r p o t e r l o f a r e .  

I l m o d u l o I o C d i S p r i n g , c o n s e n t e d i s e t t a r e i p a r a m e t r i d i c o n g u r a z i o n e d i r e t t a m e n t e      

d e n t r o i l l e d i c o n g u r a z i o n e .  

S u p p o n i a m o c h e l a c l a s s e B s i a f a t t a c o s i :  

/ / c l a s s e B      

p u b l i c c l a s s B {      

p r i v a t e S t r i n g s t r i n g a ;    

p u b l i c v o i d e s e g u i ( ) {      

S y s t e m . o u t . p r i n t l n ( t h i s . s t r i n g a ) ;    

}   

/ / m e t o d i s e t ( ) e g e t ( ) . . .    

}   

I n q u e s t o m o d o , i l m e t o d o      e s e g u i ( )    s c r i v e s u l l a c o n s o l e l a s t r i n g a c o n c u i i n q u e l m o m e n t o      

è s t a t o s e t t a t o l ' o g g e t t o . I l l e d i c o n g u r a z i o n e d i S p r i n g a q u e s t o p u n t o p o t r e b b e d i v e n t a r e      

q u e s t o :  

< ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >      

< b e a n s x m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "      

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "      

x s i : s c h e m a L o c a t i o n = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s / s p r i n g - b e a n s - 3 . 0 . x s d " >      

< ! - - D e f i n i z i o n e d e i b e a n s - - >      

< b e a n i d = " p i p p o " c l a s s = " e s e m p i o . B " >      

< p r o p e r t y n a m e = " s t r i n g a " v a l u e = " C i a o M o n d o ! " / >      

< / b e a n >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 13/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         6   

< / b e a n s >      

E ' s t a t o a g g i u n t o u n n u o v o n o d o , i n t e r n o a      < b e a n >        c h e è      < p r o p e r t y >        . C o n q u e s t o      

t a g è p o s s i b i l e e l e n c a r e t u t t i g l i a t t r i b u t i c h e s i v o g l i o n o c o n g u r a r e c o n t e s t u a l m e n t e a l l a      

c r e a z i o n e d e l b e a n . O g n i a t t r i b u t o v i e n e i d e n t i c a t o c o n l ' a t t r i b u t o      n a m e      , v a l o r i z z a t o c o n      

i l n o m e c o n c u i è s t a t o c h i a m a t o a l l ' i n t e r n o d e l l a c l a s s e B . I l s u o v a l o r e v i e n e s e t t a t o c o n      

l ' a t t r i b u t o      v a l u e      . 

Q u e s t a d e n i z i o n e è a n c h e d o t a t a d i u n m e c c a n i s m o a u t o m a t i c o d i c o n v e r s i o n e d e i v a l o r i .  

S e p e r e s e m p i o s c r i v e s s i m o :  

< ! - - b e a n c h e r a p p r e s e n t a u n p u n t o n e l p i a n o - - >      

< b e a n i d = " o r i g i n e " c l a s s = " e s e m p i o . P u n t o " >      

< p r o p e r t y n a m e = " x " v a l u e = " 0 . 0 " / >      

< p r o p e r t y n a m e = " y " v a l u e = " 0 . 0 " / >      

< / b e a n >      

i l s i s t e m a , c o n o s c e n d o i l t i p o d i x e y , s a i n a u t o m a t i c o c h e i v a l o r i ' 0 . 0 ' s o n o n u m e r i e      

c o m e t a l i l i c o n v e r t i r à . S e      x    f o s s e d i t i p o      S t r i n g      , t r a t t e r e b b e ' 0 . 0 ' c o m e u n a s t r i n g a .  

L a c l a s s e A n o n s u b i s c e a l c u n a m o d i c a . U n a c h i a m a t a d e l t i p o :  

B b = c o n t e x t . g e t B e a n ( " p i p p o " , B . c l a s s ) ;    

r e s t i t u i r e b b e u n ' i s t a n z a d i B g i à c o n g u r a t a c o s i c o m e s p e c i c a t o n e l l e s p r i n g - c o n g . x m l .  

E ' f a c i l e c a p i r e c o m e q u e s t o m e c c a n i s m o r e n d e r e b b e p i ù s e m p l i c e , p e r f a r e u n e s e m p i o ,  

l ' u s o d i u n D A O . I l l e s p r i n g - c o n g . x m l p o t r e b b e c o n t e n e r e u n f r a m m e n t o d e l t i p o .  

< ! - - d a o - - >      

< b e a n i d = " d a o " c l a s s = " e s e m p i o . C l a s s e D A O " >      

< p r o p e r t y n a m e = " u r l " v a l u e = " j d b c : m y s q l : / / l o c a l h o s t : 3 3 0 6 / m y d b " / >      

< p r o p e r t y n a m e = " d r i v e r " v a l u e = " c o m . m y s q l . j d b c . D r i v e r " / >      

< p r o p e r t y n a m e = " u s e r n a m e " v a l u e = " a d m i n " / >      

< p r o p e r t y n a m e = " p a s s w o r d " v a l u e = " a d m i n " / >      

< / b e a n >      

I n q u e s t o m o d o , c h i e d e r e a l c o n t a i n e r u n ' i s t a n z a d i ' d a o ' r e s t i t u i r e b b e u n a d a o g i à c o n g -    

u r a t o e p r o n t o a l l ' u s o .  

O v v i a m e n t e è p o s s i b i l e d e s c r i v e r e p i ù c o n g u r a z i o n i d i v e r s e p e r l o s t e s s o b e a n . P o t r e i p e r    

e s e m p i o c r e a r e p i ù d i u n a c o n g u r a z i o n e d i v e r s a p e r    C l a s s e D A O        , c h i a m a n d o n e u n a o l ' a l t r a      

i n f u n z i o n e d e l l o s p e c i c o D B d a u t i l i z z a r e .  

N o n è p o s s i b i l e , p e r ò , a v e r e d u e b e a n c o n l o s t e s s o i d .  

A n c h è q u e s t o m e c c a n i s m o p o s s a f u n z i o n a r e , è n e c e s s a r i o c h e s i a n o s t a t i c r e a t i i m e t o d i    

s e t ( )    d i t u t t i g l i a t t r i b u t i c h e S p r i n g d o v r à s e t t a r e .  

I l f a t t o c h e s i a i l c o n t a i n e r a s e t t a r e d i r e t t a m e n t e g l i a t t r i b u t i , p r e n d e i l n o m e d i    D i r e c t    

I n j e c t i o n      ( i n i e z i o n e d i r e t t a ,   D I   ) . 

1 . 3 C o s t r u i r e u n a r e t e d i o g g e t t i    

E s e l ' a t t r i b u t o d i u n b e a n è u n r i f e r i m e n t o a d u n a l t r o o g g e t t o ?      

U n ' a p p l i c a z i o n e , t i p i c a m e n t e , è s t r u t t u r a t a c o m e u n a r e t e d i o g g e t t i , p i ù o m e n o t t a , c h e      

c o l l a b o r a n o t r a l o r o . O g n i o g g e t t o , q u i n d i , s v o l g e i l s u o c o m p i t o u s a n d o n e a l t r i .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 14/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         7   

U n o d e g l i a s p e t t i p i ù u t i l i d e l m o d u l o I o C d i S p r i n g è c h e i l m e c c a n i s m o d i D I f u n z i o n a      

a n c h e n e l c a s o i n c u i l ' a t t r i b u t o d a s e t t a r e è u n r i f e r i m e n t o a d u n a l t r o o g g e t t o ! V e d i a m o u n      

e s e m p i o . . .  

S u p p o n i a m o d i a v e r e l a s e g u e n t e s i t u a z o n e :  

/ / c l a s s e B      

p u b l i c c l a s s B {      

p r i v a t e S t r i n g s t r i n g a ;    

p u b l i c v o i d e s e g u i ( ) {      

S y s t e m . o u t . p r i n t l n ( t h i s . s t r i n g a ) ;    

}   

}   

/ / c l a s s e A      

p u b l i c c l a s s A {      

p r i v a t e B b ;    

p u b l i c v o i d e s e g u i ( ) {      

t h i s . b . e s e g u i ( ) ;    

}   

}   

/ / c l a s s e M a i n      

p u b l i c c l a s s M a i n {      

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

A p p l i c a t i o n C o n t e x t c o n t e x t =      

n e w C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t (      

n e w S t r i n g [ ] { " s p r i n g - c o n f i g . x m l " } ) ;    

A a = c o n t e x t . g e t B e a n ( " p i p p o " , A . c l a s s ) ;    

a . e s e g u i ( ) ;    

}   

}   

I n q u e s t o e s e m p i o , l ' o g g e t t o A , p e r e s e g u i r e i l m e t o d o      e s e g u i ( )    h a b i s o g n o d i u t i l i z z a r e      

l ' o g g e t t o B .  

I l l e d i c o n g u r a z i o n e d i S p r i n g d i v e n t a :  

< ! - - b e a n A - - >      

< b e a n i d = " p i p p o " c l a s s = " e s e m p i o . A " >      

< p r o p e r t y n a m e = " b " r e f = " p l u t o " / >      

< / b e a n >      

< ! - - b e a n B - - >      

< b e a n i d = " p l u t o " c l a s s = " e s e m p i o . B " >      

< p r o p e r t y n a m e = " s t r i n g a " v a l u e = " C i a o M o n d o ! " / >      

< / b e a n >      

Q u i v e d i a m o u n a l t r o u s o d e l t a g      < p r o p e r t y >        . P o i c h è l a v a r i a b i l e      b    è u n r i f e r i m e n t o a d      

u n a l t r o o g g e t t o , a l p o s t o d e l l ' a t t r i b u t o      v a l u e      s i u s a l ' a t t r i b u t o      r e f    . T a l e a t t r i b u t o p e r m e t t e d i    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 15/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         8   

d i r e a l c o n t a i n e r c h e q u e l l a v a r i a b i l e v a f a t t a r i f e r i r e a d u n a l t r o b e a n . I l v a l o r e d e l l ' a t t r i b u t o      

r e f    è l ' i d c h e v i e n e d e n i t o p e r u n b e a n . N e l n o s t r o c a s o s p e c i c o , q u a n d o v e r r à f a t t a l a      

c h i a m a t a      

A a = c o n t e x t . g e t B e a n ( " p i p p o " , A . c l a s s ) ;    

v e r r à c r e a t a u n ' i s t a n z a d i ' p l u t o ' e p o i ' i n i e t t a t a ' n e l l a v a r i a b i l e      b    d e l b e a n ' p i p p o ' .  

E ' f a c i l e i m m a g i n a r e c o m e c o n q u e s t o m e c c a n i s m o s i a p o s s i b i l e t i r a r e s u c o n u n a s e m -    

p l i c e i s t r u z i o n e u n a r e t e d i o g g e t t i c o m p l i c a t a q u a n t o s i v u o l e . I l p r o g r a m m a t o r e d e v e s o l o      

o p p o r t u n a m e n t e c o n g u r a r l a a l l ' i n t e r n o d e l l e s p r i n g - c o n g . x m l .  

1 . 4 L e c o l l e z i o n i    

P u ò c a p i t a r e , n a t u r a l m e n t e , c h e u n a t t r i b u t o d i u n o g g e t t o s i a u n a c o l l e z i o n e ( l i s t , m a p , s e t    

o p r o p e r t i e s ) . I n t a l c a s o l a s i n t a s s i n e l s p r i n g - c o n g . x m l p u ò e s s e r e l a s e g u e n t e :  

< b e a n i d = " o g g e t t o C o m p l i c a t o " c l a s s = " p r o g e t t o . C o m p l e x O b j e c t " >      

< ! - - P e r l e l i s t e - - >      

< p r o p e r t y n a m e = " l i s t a " >      

< l i s t >      

< ! - - I n s e r i s c o l ' e l e m e n t o p e r v a l o r e - - >      

< v a l u e > e l e m e n t o q u a l u n q u e < / v a l u e >      

< ! - - O p p u r e l o i n s e r i s c o p e r r i f e r i m e n t o - - >      

< r e f b e a n = " m i o D a t a S o u r c e " / >      

< / l i s t >      

< / p r o p e r t y >      

< ! - - M a p p a - - >      

< p r o p e r t y n a m e = " m a p p a " >      

< m a p >      

< ! - - E l e m e n t o i n s e r i t o p e r v a l o r e - - >      

< e n t r y k e y = " e l e m e n t o " v a l u e = " u n a s t r i n g a q u a l u n q u e " / >      

< ! - - E l e m e n t o i n s e r i t o p e r r i f e r i m e n t o - - >      

< e n t r y k e y = " r i f e r i m e n t o " v a l u e - r e f = " m i o D a t a S o u r c e " / >      

< / m a p >      

< / p r o p e r t y >      

< ! - - S e t - - >      

< p r o p e r t y n a m e = " s e t " >      

< s e t >      

< v a l u e > u n a s t r i n g a q u a l u n q u e < / v a l u e >      

< r e f b e a n = " m i o D a t a S o u r c e " / >      

< / s e t >      

< / p r o p e r t y >      

< b e a n >      

1 . 4 . 1 I g e n e r i c s    

D a l l a J a v a 5 i n p o i , è p o s s i b i l e u t i l i z z a r e l e c o l l e z i o n i t i p i z z a t e . U t i l i z z a n d o i l m e c c a n i s m o d i    

D I p e r s e t t a r e u n a c o l l e z i o n e a l l ' i n t e r n o d i u n b e a n , p o s s i a m o t r a r r e v a n t a g g i o d a l m e c c a n i s m o      

d i c o n v e r s i o n e d i t i p i d i S p r i n g . A d e s e m p i o :  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 16/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         9   

p u b l i c c l a s s P i p p o {      

p r i v a t e M a p < S t r i n g , F l o a t > c o n t i ;    

p u b l i c v o i d s e t C o n t i ( M a p < S t r i n g , F l o a t > c o n t i ) {      

t h i s . c o n t i = c o n t i ;    

}   

}   

< b e a n s >      

< b e a n i d = " p i p p o " c l a s s = " x . y . P i p p o " >      

< p r o p e r t y n a m e = " c o n t i " >      

< m a p >      

< e n t r y k e y = " u n o " v a l u e = " 9 . 9 9 " / >      

< e n t r y k e y = " d u e " v a l u e = " 2 . 7 5 " / >      

< e n t r y k e y = " s e i " v a l u e = " 3 . 9 9 " / >      

< / m a p >      

< / p r o p e r t y >      

< / b e a n >      

< / b e a n s >      

L e s t r i n g h e ' 9 . 9 9 ' , ' 2 . 7 5 ' e ' 3 . 9 9 ' v e r r a n n o a u t o m a t i c a m e n t e c o n v e r t i t e i n      F l o a t    . 

1 . 5 L a s t r i n g a v u o t a e i l    n u l l    

S p r i n g t r a t t a u n a r g o m e n t o v u o t o c o m e u n a s t r i n g a v u o t a . S c r i v e n d o :  

< b e a n i d = " e s e m p i o " c l a s s = " e s e m p i . P r o v a " >      

< p r o p e r t y n a m e = " e m a i l " v a l u e = " " / >      

< / b e a n >      

l ' a t t r i b u t o      e m a i l    v e r r à s e t t a t o c o m e s e a v e s s i m o l a n c i a t o i l s e g u e n t e c o m a n d o :  

s e t E m a i l ( " " ) ;    

S e s i v u o l e i n v e c e c o n s i d e r a r e i l v a l o r e      n u l l    , s i d e v e s c r i v e r e :  

< b e a n i d = " e s e m p i o " c l a s s = " e s e m p i . P r o v a " >      

< p r o p e r t y n a m e = " e m a i l " > < n u l l / > < / p r o p e r t y >      

< / b e a n >      

1 . 6 I n i z i a l i z z a z i o n e L a z y      

L '  A p p l i c a t i o n C o n t e x t    t i p i c a m e n t e e e t t u a u n a p r e - i s t a n z i a z i o n e d e i b e a n s i n g l e t o n s i n f a s e      

d i i n i z i a l i z z a z i o n e d e l l ' a p p l i c a z i o n e . Q u e s t o c o m p o r t a m e n t o è m o l t o c o m o d o p e r c h è p e r m e -    

t t e d i i n d i v i d u a r e a l c u n i e r r o r i s u b i t o p i u t t o s t o c h e d o p o q u a l c h e o r a o a d d i r i t t u r a d o p o      

q u a l c h e g i o r n o . T u t t a v i a , q u a l o r a n o n s i d e s i d e r i q u e s t o c o m p o r t a m e n t o , è p o s s i b i l e c h i e d e r e      

e s p l i c i t a m e n t e a l c o n t a i n e r u n ' i n i z i a l i z z a z i o n e d i t i p o      l a z y      d i u n o o p i ù b e a n .  

< b e a n i d = " l a z y " c l a s s = " c o m . f o o . E x p e n s i v e T o C r e a t e B e a n " l a z y - i n i t = " t r u e " / >      

< b e a n n a m e = " n o t . l a z y " c l a s s = " c o m . f o o . A n o t h e r B e a n " / >      

N e l c a s o d e l b e a n c h i a m a t o      l a z y      , q u e s t o v e r r à i s t a n z i a t o s o l o q u a n d o v e r r à e s p l i c i t a m e n t e      

i n d i c a t o a l c o n t a i n e r .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 17/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 0   

1 . 7 L o s c o p e      

L o s c o p e d i u n b e a n r a p p r e s e n t a l ' a r c o d i t e m p o i n c u i i l b e a n d e v e e s s e r e u t i l i z z a b i l e e a l d i    

f u o r i d e l q u a l e n o n l o d e v e e s s e r e . S p r i n g s u p p o r t a c i n q u e d i v e r s i s c o p e , t r e d e i q u a l i s o n o      

d i s p o n i b i l i s o l o i n c o n t e s t i W e b . L a t a b e l l a 1 . 1 r i a s s u m e g l i s c o p e d i s p o n i b i l i :  

s c o p e d e s c r i z i o n e      

s i n g l e t o n i l b e a n è l ' u n i c o d e l s u o t i p o a l l ' i n t e r n o d e l c o n t a i n e r    

p r o t o t y p e e s i s t e u n b e a n p e r o g n i i s t a n z a c r e a t a      

r e q u e s t i l b e a n e s i s t e s o l o n e l l ' a m b i t o d i u n a s i n g o l a r i c h i e s t a H T T P      

s e s s i o n i l b e a n e s i s t e n e l l ' a m b i t o d i u n ' i n t e r a H T T P      S e s s i o n      

g l o b a l S e s s i o n i l b e a n e s i s t e n e l l ' a m b i t o d i u n a H T T P      S e s s i o n      g l o b a l e      

T a b e l l a 1 . 1 : s c o p e d e i b e a n      

P e r l a d e n i z i o n e d e l l o s c o p e d i u n b e a n , s i u t i l i z z a l ' a t t r i b u t o      s c o p e      d e l t a g      < b e a n >        : 

< b e a n i d = " p i p p o " c l a s s = " e s e m p i . P i p p o " s c o p e = " p r o t o t y p e " / >      

I v a l o r i a m m e s s i s o n o q u e l l i e s p r e s s i i n t a b e l l a 1 . 1 .  

Q u a n d o l o s c o p e d i u n b e a n v i e n e d e n i t o      s i n g l e t o n      , i l c o n t a i n e r m e m o r i z z a l ' i s t a n z a      

d e l l ' o g g e t t o a l l ' i n t e r n o d i u n a c a c h e . A d o g n i s u c c e s s i v a r i c h i e s t a d i q u e l b e a n , i l c o n t a i n e r    

r e s t i t u i r à s e m p r e l a s t e s s a i s t a n z a . Q u e s t o t i p o d i s c o p e v i e n e a d o t t a t o d a S p r i n g d i d e f a u l t .  

Q u a n d o i n v e c e l o s c o p e v i e n e d e n i t o      p r o t o t y p e      , i l c o n t a i n e r a d o g n i r i c h i e s t a d e l b e a n , n e      

c r e a u n ' i s t a n z a n u o v a , s o v r a s c r i v e n d o q u e l l a v e c c h i a .  

G l i a l t r i t r e s c o p e r i s p o n d o n o a l l e s t e s s e r e g o l e d e l l e w e b a p p l i c a t i o n .  

S p r i n g m e t t e i n o l t r e a d i s p o s i z i o n e u n s i s t e m a p e r c r e a r e s c o p e s p e r s o n a l i z z a t i ( v e d i 3 . 5      

d e l l e r e f e r e n c e ) .  

1 . 8 C i c l o d i v i t a      

S p r i n g c o n s e n t e d i s p e c i c a r e q u a l i a z i o n i d e b b a n o e s s e r e s v o l t e d u r a n t e l ' i n i z i a l i z z a z i o n e d i    

u n b e a n , c o s i c o m e a n c h e l e p r e c e d u r e d a e s e g u i r e p r i m a d e l l a s u a d i s t r u z i o n e .  

P e r q u a n t o r i g u a r d a l ' i n i z i a l i z z a z i o n e , è p o s s i b i l e d e n i r e a l l ' i n t e r n o d e l b e a n i l m e t o d o      

i n i t ( )     i n v o c a n d o l o p o i i n f a s e d i c o n g u r a z i o n e c o n l ' a t t r i b u t o      i n i t - m e t h o d      . A d e s e m p i o :  

p u b l i c c l a s s P i p p o {      

/ / . . .    

p u b l i c v o i d i n i t ( ) {      

/ / I n i z i a l i z z a z i o n e d e l l ' o g g e t t o . . .    

}   

}   

< b e a n i d = " p i p p o " c l a s s = " e s e m p i . P i p p o " i n i t - m e t h o d = " i n i t " / >      

Q u a n d o a l c o n t a i n e r v i e n e c h i e s t a u n ' i s t a n z a d i    p i p p o      , s u b i t o d o p o l a s u a c r e a z i o n e v e r r à      

i n v o c a t o i l m e t o d o      i n i t ( )    . 

L o s t e s s o d i s c o r s o v a l e a n c h e p e r l a f a s e d i d i s t r u z i o n e d i u n b e a n . I n q u e s t o c a s o l ' a t t r i b u t o      

d a u s a r e è      d e s t r o y - m e t h o d      . A d e s e m p i o :  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 18/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 1   

p u b l i c c l a s s P i p p o {      

/ / . . .    

p u b l i c v o i d c l e a n u p ( ) {      

/ / D i s t r u z i o n e d e l l ' o g g e t t o . . .    

}   

}   

< b e a n i d = " p i p p o " c l a s s = " e s e m p i . P i p p o " d e s t r o y - m e t h o d = " c l e a n u p " / >      

I n q u e s t o m o d o , p r i m a d e l l a d i s t r u z i o n e d e l b e a n      p i p p o      v e r r a n n o e s e g u i t e t u t t e l e o p -    

e r a z i o n i a l l ' i n t e r n o d e l m e t o d o      c l e a n u p ( )    ( a d e s e m p i o l a c h i u s u r a d e l l e c o n n e s s i o n i d i u n      

d a o ) .  

1 . 9 E s t e n s i o n e d e l c o n t a i n e r      

V e d i a m o o r a a l c u n e f u n z i o n a l i t à c h e c i p e r m e t t o n o d i e s t e n d e r e l e f u n z i o n a l i t à d e l c o n t a i n e r .  

1 . 9 . 1 B e a n P o s t P r o c e s s o r      

L '  I o C     p e r m e t t e d i p o t e r e s t e n d e r e a l c u n e f u n z i o n a l i t à s u l c o n t r o l l o d e l c i c l o d i v i t a d e i b e a n ,  

f a c e n d o u s o d i a p p o s i t e i n t e r f a c c e . U n a d i q u e s t e è l a      B e a n P o s t P r o c e s s o r      . T a l e i n t e r f a c c i a è      

m o s t r a t a d i s e g u i t o :  

p u b l i c i n t e r f a c e B e a n P o s t P r o c e s s o r {      

O b j e c t p o s t P r o c e s s B e f o r e I n i t i a l i z a t i o n ( O b j e c t b e a n , S t r i n g n a m e )    

t h r o w s B e a n s E x c e p t i o n ;    

O b j c e t p o s t P r o c e s s A f t e r I n i t i a l i z a t i o n ( O b j e c t b e a n , S t r i n g n a m e )    

t h r o w s B e a n s E x c e p t i o n ;    

}   

E ' s u c i e n t e s c r i v e r e u n a c l a s s e c h e i m p l e m e n t i q u e s t a i n t e r f a c c i a e d i c h i a r a r l a c o m e      

b e a n a l l ' i n t e r n o d e l l e d i c o n g u r a z i o n e d i s p r i n g . A q u e s t o p u n t o , p r i m a d e l l a f a s e d i    

i n i z i a l i z z a z i o n e d i o g n i b e a n v e r r à r i c h i a m a t o i l m e t o d o      p o s t P r o c e s s B e f o r e I n i t i a l i z a t i o n ( . . . )     e   

d o p o l ' i n i z i a l i z z a z i o n e i l m e t o d o      p o s t P r o c e s s A f t e r I n i t i a l i z a t i o n ( . . . )    . 

L ' e s e m p i o m o l t o s e m p l i c e c h e s e g u e m o s t r a u n      B e a n P o s t P r o c e s s o r      c h e c h i a m a i l m e t o d o      

t o S t r i n g ( )    o g n i v o l t a c h e v i e n e c r e a t o u n n u o v o b e a n .  

p u b l i c c l a s s M i o B e a n P o s t P r o c e s s o r i m p l e m e n t s B e a n P o s t P r o c e s s o r {      

/ / r i t o r n o i l b e a n a p p e n a i s t a n z i a t o c o s ì c o m ' è      

p u b l i c O b j e c t p o s t P r o c e s s B e f o r e I n i t i a l i z a t i o n ( O b j e c t b e a n , S t r i n g b e a n N a m e )    

t h r o w s B e a n s E x c e p t i o n {      

r e t u r n b e a n ;    

}   

p u b l i c O b j e c t p o s t P r o c e s s A f t e r I n i t i a l i z a t i o n ( O b j e c t b e a n , S t r i n g b e a n N a m e )    

t h r o w s B e a n s E x c e p t i o n {      

S y s t e m . o u t . p r i n t l n (      

" B e a n ' " + b e a n N a m e + " ' c r e a t o : " + b e a n . t o S t r i n g ( )    

) ;  

r e t u r n b e a n ;    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 19/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 2   

}   

}   

A q u e s t o p u n t o è s u c i e n t e d i c h i a r a r l o a l l ' i n t e r n o d e l s p r i n g - c o n g . x m l :  

< b e a n c l a s s = " e s e m p i . M i o B e a n P o s t P r o c e s s o r " / >      

D a n o t a r e c h e q u e s t o b e a n n o n h a l ' a t t r i b u t o      i d    . 

I m m a g i n a n d o u n a s i t u a z i o n e d e l t i p o      

/ / c l a s s e P u n t o      

p u b l i c c l a s s P u n t o {      

p r i v a t e i n t x ;    

p r i v a t e i n t y ;    

@ O v e r r i d e      

p u b l i c S t r i n g t o S t r i n g ( ) {      

r e t u r n " x = " + t h i s . g e t X ( ) + " y = " + t h i s . g e t Y ( ) ;    

}   

. . .  

}   

/ / c o n f i g u r a z i o n e p e r S p r i n g      

< b e a n i d = " p u n t o " c l a s s = " e s e m p i . P u n t o " >      

< p r o p e r t y n a m e = " x " v a l u e = " 1 " / >      

< p r o p e r t y n a m e = " y " v a l u e = " 3 " / >      

< / b e a n >      

i l m e t o d o      m a i n          s e g u e n t e      

p u b l i c s t a t i c v o i d m a i n ( f i n a l S t r i n g [ ] a r g s ) t h r o w s E x c e p t i o n {      

A p p l i c a t i o n C o n t e x t c o n t e x t =      

n e w C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t (      

n e w S t r i n g [ ] { " s p r i n g - c o n f i g . x m l " } ) ;    

P u n t o p = c o n t e x t . g e t B e a n ( " p u n t o " ) ;    

}   

p r o d u r r e b b e u n o u t p u t d e l t i p o      

B e a n ' p u n t o ' c r e a t o : x = 1 y = 3      

1 . 9 . 2 B e a n F a c t o r y P o s t P r o c e s s o r      

E s i s t e a n c h e i l c o n c e t t o d i    B e a n F a c t o r y P o s t P r o c e s s o r      c h e a t t r a v e r s o i l m e t o d o      p o s t P r o c e s s -    

B e a n F a c t o r y ( . . . )    p e r m e t t e d i a g g i u n g e r e d e l c o m p o r t a m e n t o d o p o c h e i l c o n t a i n e r h a c a r i c a t o      

l e d e n i z i o n i d e i b e a n s , m a p r i m a c h e g l i s t e s s i s i a n o i s t a n z i a t i . N o n v a q u i n d i a i n s e r i r s i n e l    

c i c l o d i v i t a d e i b e a n s , m a i n q u e l l o d e l l o s t e s s o c o n t a i n e r . L ' i n t e r f a c c i a è l a s e g u e n t e :  

p u b l i c i n t e r f a c e B e a n F a c t o r y P o s t P r o c e s s o r {      

p u b l i c v o i d p o s t P r o c e s s B e a n F a c t o r y (      

C o n f i g u r a b l e L i s t a b l e B e a n F a c t o r y b e a n F a c t o r y )    

t h r o w s B e a n s E x c e p t i o n ;    

}   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 20/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 3   

A n c h e i n q u e s t o c a s o è s u c i e n t e c r e a r e u n b e a n c h e i m p l e m e n t i q u e s t a i n t e r f a c c i a e      

d e n i r n e l a c o n g u r a z i o n e a l l ' i n t e r n o d e l l o s p r i n g - c o n g . x m l .  

1 . 9 . 3 B e a n F a c t o r y      

E ' p o s s i b i l e i m p l e m e n t a r e l ' i n t e r f a c c i a      o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . F a c t o r y B e a n      p e r t u t -    

t i q u e g l i o g g e t t i c h e s o n o e s s i s t e s s i d e l l e f a c t o r y . T a l e i n t e r f a c c i a è d a c o n s i d e r a r e c o m e      

u n ' o c c a s i o n e p e r a g g i u n g e r e f u n z i o n a l i t à l o g i c h e d i i s t a n z i a z i o n e a l c o n t a i n e r I o C .  

Q u a l o r a s i a b b i a d e l c o d i c e m o l t o c o m p l e s s o p e r l ' i n i z i a l i z z a z i o n e c h e r i m a n e m e g l i o e s -    

p r i m e r e d i r e t t a m e n t e i n j a v a i n v e c e c h e c o n m o l t i s s i m o c o d i c e X M L , è p o s s i b i l e c r e a r e u n a      

p r o p r i a F a c t o r y B e a n , s c r i v e r e l ' i n i z i a l i z z a z i o n e a l l ' i n t e r n o d i q u e s t a c l a s s e e i n n e i n t e g r a r e      

t a l e c l a s s e a l l ' i n t e r n o d e l c o n t a i n e r .  

Q u e s t a i n t e r f a c c i a p r o v v e d e a i s e g u e n t i t r e m e t o d i :  

       O b j e c t g e t O b j e c t ( ) : r i t o r n o u n ' i s t a n z a d e l l ' o g g e t t o c h e q u e s t a f a c t o r y c r e a ;  

       b o o l e a n i s S i n g l e t o n ( ) : r i t o r n a      t r u e      s e q u e s t a F a c t o r y B e a n r i t o r n a u n s i n g l e t o n ,    f a l s e      

a l t r i m e n t i ;  

       C l a s s g e t O b j e c t T y p e ( ) : r i t o r n a i l t i p o r i t o r n a t o d a g e t O b j e c t ( ) o      n u l l    s e i l t i p o n o n è      

n o t o a p r i o r i ;  

A p p l i c a t i o n C o n t e x t    e s t e n d e q u e s t a i n t e r f a c c i a .  

1 . 1 0 E r e d i t a r i e t à      

L a d e n i z i o n e d i u n b e a n p u ò c o m p r e n d e r e l a c o n g u r a z i o n e d i m o l t e i n f o r m a z i o n i . L a      

d e n i z i o n e d i u n b e a n g l i o e r e d i t a t u t t e q u e s t e i n f o r m a z i o n i . I n o l t r e p u ò a n c h e s o v r a s c r i v e r e      

a l c u n i v a l o r i o a g g i u n g e r n e d i n u o v i , i n b a s e a l l e n e c e s s i t à .  

Q u e s t o t i p o d i c o n g u r a z i o n e è p o s s i b i l e t r a m i t e l ' a t t r i b u t o      p a r e n t    d e l t a g      < b e a n >        , c o m e      

m o s t r a t o n e l l ' e s e m p i o s e g u e n t e :  

< b e a n i d = " i n h e r i t e d T e s t B e a n " a b s t r a c t = " t r u e " c l a s s = " e s e m p i . T e s t B e a n " >      

< p r o p e r t y n a m e = " n a m e " v a l u e = " p a r e n t " / >      

< p r o p e r t y n a m e = " a g e " v a l u e = " 1 " / >      

< / b e a n >      

< b e a n i d = " i n h e r i t s W i t h D i f f e r e n t C l a s s " c l a s s = " e s e m p i . D e r i v e d T e s t B e a n "      

p a r e n t = " i n h e r i t e d T e s t B e a n " i n i t - m e t h o d = " i n i t i a l i z e " >      

< p r o p e r t y n a m e = " n a m e " v a l u e = " o v e r r i d e " / >      

< ! - - I l v a l o r e 1 s u l l a p r o p r i e t à a g e v i e n e e r e d i t a t o d a l p a d r e - - >      

< ! - - l ' a t t r i b u t o n a m e i n v e c e v i e n e s o v r a s c r i t t o - - >      

< / b e a n >      

L a d e n i z i o n e d e l b e a n g l i o u s a l a c l a s s e d a l l a d e n i z i o n e d e l p a d r e , s e n o n n e è s t a t a      

s p e c i c a t a n e s s u n a , m a p u ò a n c h e s o v r a s c r i v e r l a . I n q u e s t ' u l t i m o c a s o , l a c l a s s e d e l g l i o      

d e v ' e s s e r e c o m p a t i b i l e c o n q u e l l a d e l p a d r e e d e v e a c c e t t a r e i v a l o r i d e l l e p r o p r i e t à d e l g e n i t o r e .  

L a d e n i z i o n e d i u n b e a n g l i o e r e d i t a i v a l o r i d e g l i a r g o m e n t i d e l c o s t r u t t o r e , i v a l o r i    

d e l l e p r o p r i e t à e i m e t o d i d a l p a d r e , c o n i n p i ù l a p o s s i b i l i t à d i a g g i u n g e r e n u o v i v a l o r i . O g n i    

m e t o d o d i i n i z i a l i z z a z i o n e , d i d i s t r u z i o n e e / o s e t t i n g d e i m e t o d i f a c t o r y s t a t i c i c h e s i s p e c i c a      

e e t t u e r à u n o v e r r i d e d e i c o r r i s p o n d e n t i d e n i t i n e l g e n i t o r e . C i ò c h e r i m a n e v i e n e s e m p r e      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 21/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 4   

p r e s o d a l l a d e n i z i o n e d e l g l i o :   d e p e n d s o n      ,  a u t o w i r e m o d e      ,  d e p e n d e n c y c h e c k      ,  s i n g l e t o n      , 

s c o p e      e    l a z y - i n i t    . 

L ' e s e m p i o p r e c e d e n t e m a r c a e s p l i c i t a m e n t e l a d e n i z i o n e d e l b e a n g e n i t o r e c o m e a s t r a t t o ,  

u s a n d o l ' a t t r i b u t o      a b s t r a c t    . S e l a d e n i z i o n e d e l p a d r e n o n s p e c i c a n e s s u n a c l a s s e , t a l e      

d e n i z i o n e d e v ' e s s e r e m a r c a t a n e c e s s a r i a m e n t e c o m e a s t r a t t a , c o m e s e g u e :  

< b e a n i d = " i n h e r i t e d T e s t B e a n W i t h o u t C l a s s " a b s t r a c t = " t r u e " >      

< p r o p e r t y n a m e = " n a m e " v a l u e = " p a r e n t " / >      

< p r o p e r t y n a m e = " a g e " v a l u e = " 1 " / >      

< / b e a n >      

< b e a n i d = " i n h e r i t s W i t h C l a s s " c l a s s = " e s e m p i . D e r i v e d T e s t B e a n "      

p a r e n t = " i n h e r i t e d T e s t B e a n W i t h o u t C l a s s " i n i t - m e t h o d = " i n i t i a l i z e " >      

< p r o p e r t y n a m e = " n a m e " v a l u e = " o v e r r i d e " / >      

< ! - - I l v a l o r e 1 s u l l a p r o p r i e t à a g e v i e n e e r e d i t a t o d a l p a d r e - - >      

< ! - - l ' a t t r i b u t o n a m e i n v e c e v i e n e s o v r a s c r i t t o - - >      

< / b e a n >      

I l b e a n g e n i t o r e n o n p u ò e s s e r e i s t a n z i a t o d a s o l o , p e r c h è è i n c o m p l e t o , e s s e n d o s t a t o      

e s p l i c i t a m e n t e m a r c a t o c o m e a s t r a t t o . Q u a n d o u n a d e n i z i o n e è a s t r a t t a c o m e q u e s t a , v i e n e      

u t i l i z z a t a e s c l u s i v a m e n t e c o m e t e m p l a t e c h e s e r v e c o m e g e n i t o r e p e r l a d e n i z i o n e d i a l t r i    

b e a n . S e s i p r o v a a r i c h i e d e r e a l c o n t a i n e r u n ' i s t a n z a d i t a l e b e a n , c o n i l m e t o d o      g e t B e a n ( )    , 

v i e n e r i t o r n a t o u n e r r o r e . A l l o s t e s s o m o d o , i l m e t o d o      p r e I n s t a n t i a t e S i n g l e t o n s ( )    d e l c o n t a i n e r    

i g n o r a l e d e n i z i o n i d e i b e a n s e t t a t i c o m e a s t r a t t i .  

1 . 1 1 U s a r e i l e . p r o p e r t i e s      

A b b i a m o v i s t o c o m e s i a p o s s i b i l e c o s t r u i r e i l l e d i c o n g u r a z i o n e d i S p r i n g i n m o d o t a l e c h e      

c o n t e s t u a l m e n t e a l l a d e n i z i o n e d i u n b e a n s i p o s s a n o a n c h e d e n i r e i v a l o r i d e i s u o i a t t r i b u t i .  

T u t t a v i a , s c r i v e r e e s p l i c i t a m e n t e i v a l o r i a l l ' i n t e r n o d e l l e . x m l p u ò r i s u l t a r e p o c o c o m o d o .  

R i s u l t a s i c u r a m e n t e p i ù p r a t i c o r a c c o g l i e r e i v a l o r i i n u n l e d i p r o p e r t i e s .  

U n l e d i p r o p e r t i e s è u n s e m p l i c e l e d i t e s t o , c o n e s t e n s i o n e . p r o p e r t i e s , e c h e è s t r u t -    

t u r a t o c o m e u n a m a p p a :  

c h i a v e = v a l o r e      

Q u e l l o c h e s e g u e n e è u n e s e m p i o :  

u r l = j d b c : m y s q l : / / l o c a l h o s t : 3 3 0 6 / m y d b      

d r i v e r = c o m . m y s q l . j d b c . D r i v e r      

u s e r n a m e = a d m i n      

p a s s w o r d = a d m i n      

x = 1   

y = 3   

T a l i l e s o n o m o l t o u s a t i , p e r e s e m p i o , p e r p a s s a r e i d a t i d i c o n g u r a z i o n e d i u n d b ,  

o p p u r e p e r g e s t i r e l a l o c a l i z z a z i o n e d i u n s i t o ( u n l e d i p r o p e r t i e s p e r o g n i l i n g u a , l e c h i a v i    

s o n o s e m p r e l e s t e s s e , m a c a m b i a n o i v a l o r i ) , e c c .  

P e r c a t t u r a r e t a l i v a l o r i a l l ' i n t e r n o d e l l e s p r i n g - c o n g . x m l s i u s a l a s e g u e n t e s i n t a s s i :  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 22/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 5   

< ! - - D e f i n i z i o n e f i l e p r o p e r t i e s - - >      

< b e a n      

c l a s s = " o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . c o n f i g . P r o p e r t y P l a c e h o l d e r C o n f i g u r e r " >      

< p r o p e r t y n a m e = " l o c a t i o n s " v a l u e = " c l a s s p a t h : / p r o p r i e t a . p r o p e r t i e s " / >      

< / b e a n >      

< ! - - o p p u r e c o n l a s e g u e n t e e s p r e s s i o n e - - >      

< c o n t e x t : p r o p e r t y - p l a c e h o l d e r l o c a t i o n = " c l a s s p a t h : / p r o p r i e t a . p r o p e r t i e s " / >      

< ! - - D e f i n i z i o n e d e i b e a n s - - >      

< b e a n i d = " d a o " c l a s s = " e s e m p i o s p r i n g . M i o D a o " >      

< p r o p e r t y n a m e = " u r l " v a l u e = " $ { u r l } " / >      

< p r o p e r t y n a m e = " d r i v e r " v a l u e = " $ { d r i v e r } " / >      

< p r o p e r t y n a m e = " u s e r n a m e " v a l u e = " $ { u s e r n a m e } " / >      

< p r o p e r t y n a m e = " p a s s w o r d " v a l u e = " $ { p a s s w o r d } " / >      

< / b e a n >      

< b e a n i d = " p u n t o " c l a s s = " e s e m p i o s p r i n g . P u n t o " >      

< p r o p e r t y n a m e = " x " v a l u e = " $ { x } " / >      

< p r o p e r t y n a m e = " y " v a l u e = " $ { y } " / >      

< / b e a n >      

1 . 1 2 U s o d e l l e a n n o t a t i o n        

A p a r t i r e d a l l a v e r s i o n e 1 . 5 d i J a v a , s o n o s u p p o r t a t e u c i a l m e n t e l e a n n o t a t i o n . S p r i n g      

p e r m e t t e d i r e a l i z z a r e l a p r o p r i a c o n g u r a z i o n e a n c h e t r a m i t e q u e s t o s t r u m e n t o .  

1 . 1 2 . 1 @ R e q u i r e d      

S i a p p l i c a a i m e t o d i s e t t e r , c o m e n e l s e g u e n t e e s e m p i o :  

p u b l i c c l a s s S i m p l e M o v i e L i s t e r {      

p r i v a t e M o v i e F i n d e r m o v i e F i n d e r ;    

@ R e q u i r e d      

p u b l i c v o i d s e t M o v i e F i n d e r ( M o v i e F i n d e r m o v i e F i n d e r ) {      

t h i s . m o v i e F i n d e r = m o v i e F i n d e r ;    

}   

/ / . . .    

}   

Q u e s t a a n n o t a t i o n s e m p l i c e m e n t e i n d i c a c h e l ' a t t r i b u t o a s s o c i a t o a l m e t o d o      s e t ( )    d e v e e s -    

s e r e n e c e s s a r i a m e n t e p o p o l a t o a t e m p o d i c o n g u r a z i o n e , c o n u n v a l o r e d e n i t o e s p l i c i t a m e n t e .  

I n c a s o c o n t r a r i o , i l c o n t a i n e r s o l l e v a u n ' e c c e z i o n e .  

1 . 1 2 . 2 @ R e s o u r c e      

@ R e s o u r c e p r e n d e i l n o m e d i u n a t t r i b u t o e d i d a f a u l t S p r i n g i n t e r p r e t a q u e s t o v a l o r e c o m e      

i l n o m e d i u n b e a n d a i n i e t t a r e .  

p u b l i c c l a s s S i m p l e M o v i e L i s t e r {      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 23/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 6   

p r i v a t e M o v i e F i n d e r m o v i e F i n d e r ;    

@ R e s o u r c e ( n a m e = " m y M o v i e F i n d e r " )    

p u b l i c v o i d s e t M o v i e F i n d e r ( M o v i e F i n d e r m o v i e F i n d e r ) {      

t h i s . m o v i e F i n d e r = m o v i e F i n d e r ;    

}   

}   

S e n o n v i e n e s p e c i c a t o n e s s u n n o m e , q u e s t o v i e n e d e r i v a t o d a l n o m e d e l l ' a t t r i b u t o o d e l    

m e t o d o      s e t ( )    a s s o c i a t o i n b a s e a d o v ' è s t a t o a p p l i c a t o .  

N e l l ' e s e m p i o c h e s e g u e v e r r à r i c e r c a t o i l b e a n c h i a m a t o ' m o v i e F i n d e r ' .  

p u b l i c c l a s s S i m p l e M o v i e L i s t e r {      

p r i v a t e M o v i e F i n d e r m o v i e F i n d e r ;    

@ R e s o u r c e      

p u b l i c v o i d s e t M o v i e F i n d e r ( M o v i e F i n d e r m o v i e F i n d e r ) {      

t h i s . m o v i e F i n d e r = m o v i e F i n d e r ;    

}   

}   

1 . 1 2 . 3 @ P o s t C o n s t r u c t e @ P r e D e s t r o y      

Q u e s t e p o s s o n o e s s e r e u t i l i z z a t e p e r m a r c a r e i m e t o d i d i i n i z i a l i z z a z i o n e e d i d i s t r u z i o n e d i    

u n b e a n , c o m e n e l l ' e s e m p i o c h e s e g u e :  

p u b l i c c l a s s C a c h i n g M o v i e L i s t e r {      

@ P o s t C o n s t r u c t      

p u b l i c v o i d p o p u l a t e M o v i e C a c h e ( ) {      

/ / p o p u l a t e s t h e m o v i e c a c h e u p o n i n i t i a l i z a t i o n . . .    

}   

@ P r e D e s t r o y      

p u b l i c v o i d c l e a r M o v i e C a c h e ( ) {      

/ / c l e a r s t h e m o v i e c a c h e u p o n d e s t r u c t i o n . . .    

}   

}   

I n q u e s t o m o d o n o n c ' è b i s o g n o d i u s a r e g l i a t t r i b u t i    i n i t - m e t h o d      e    d e s t r o y - m e t h o d      v i s t i    

n e l p a r a g r a f o 1 . 8 .  

1 . 1 3 R i l e v a z i o n e a u t o m a t i c a d e i c o m p o n e n t i    

S p r i n g i n t r o d u c e , g i à a p a r t i r e d a l l a v e r s i o n e 2 . 0 , i n c o n c e t t o d i s t e r e o t i p o c o n l ' a n n o t a z i o n e      

@ R e p o s i t o r y      u s a t a p e r c a r a t t e r i z z a r e c o m p o n e n d i d i a c c e s s o a i d a t i ( d a o ) . C o n S p r i n g      

2 . 5 v e n g o n o a g g i u n t e d u e n u o v e a n n o t a z i o n i ,   @ S e r v i c e      e    @ C o n t r o l l e r      , p e r c o m p l e t a r e l a      

c l a s s i c a a r c h i t e t t u r a a t r e l i v e l l i ( a c c e s s o a i d a t i , s e r v i z i d i b u s i n e s s , c o n t r o l l e r d e l l ' i n t e r f a c c i a ) .  

I n o l t r e i n t r o d u c e a n c h e i l g e n e r i c o      @ C o m p o n e n t    c h e g l i a l t r i s t e r e o t i p i e s t e n d o n o .  

Q u e s t e a n n o t a z i o n i p o s s o n o e s s e r e u s a t e i n c o m b i n a z i o n e c o n u n ' a l t r a f u n z i o n a l i t à d i    

S p r i n g : l a r i l e v a z i o n e a u t o m a t i c a d i c o m p o n e n t i a p a r t i r e d a l c l a s s p a t h .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 24/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 7   

T a l e f u n z i o n a l i t à p u ò r i s u l t a r e u t i l e i n t u t t i q u e i c a s i i n c u i s i v u o l e c h e i l c o n t a i n e r    

d i s t i n g u a i b e a n i n f u n z i o n e d e l r u o l o c h e s v o l g o n o a l l ' i n t e r n o d e l c o n t a i n e r , p e r e s e m p i o p e r    

u n a g e s t i o n e d i v e r s i c a t a d e i l o g t r a i v a r i s t r a t i d e l l ' a p p l i c a z i o n e , o p p u r e p e r g e s t i r e m e g l i o      

i l p r o b l e m a d e l l '  a u t o w i r i n g      . 

P e r f a r e i n m o d o c h e S p r i n g e s e g u a u n a s c a n s i o n e d e l c l a s s p a t h a l l o s c o p o d i c a t a l o g a r e i    

b e a n c h e a b b i a m o m a r c h i a t o , l ' i s t r u z i o n e d a i n s e r i r e n e l l e d i c o n g u r a z i o n e è l a s e g u e n t e :  

< c o n t e x t : c o m p o n e n t - s c a n b a s e - p a c k a g e = " o r g . e x a m p l e " / >      

d o v e l ' a t t r i b u t o      b a s e - p a c k a g e      s p e c i c a i l p a c k a g e d a c u i i n i z i a r e l a r i c e r c a . Q u e s t a s c a n -    

s i o n e i n f a t t i n o n d e v e c o i n v o l g e r e n e c e s s a r i a m e n t e t u t t a l ' a p p l i c a z i o n e , m a a n c h e s o l o u n a      

p a r t e .  

1 . 1 3 . 1 U s o d e i l t r i p e r u n o s c a n n i n g c u s t o m i z z a t o      

D i d e f a u l t , l e c l a s s i a n n o t a t e c o m e      @ C o m p o n e n t    ,  @ R e p o s i t o r y      ,  @ S e r v i c e      ,  @ C o n t r o l l e r      

o c o n d e l l e a n n o t a z i o n i p e r s o n a l i z z a t e s o n o i s o l i c o m p o n e n t i r i l e v a t i . E ' p o s s i b i l e m o d i c a r e      

e d e s t e n d e r e q u e s t o c o m p o r t a m e n t o s e m p l i c e m e n t e a p p l i c a n d o d e i l t r i c u s t o m i z z a t i . T a l i    

l t r i p o s s o n o e s s e r e i n c l u s i v i ( p r e n d i t u t t i i c o m p o n e n t i c h e . . . ) o e s c l u s i v i ( p r e n d i t u t t i i    

c o m p o n e n t i t r a n n e . . . ) e d e v o n o e s s e r e d i c h i a r a t i c o m e n o d i d e l l ' e l e m e n t o      c o m p o n e n t - s c a n      . 

O g n i l t r o r i c h i e d e i l t i p o e u n ' e s p r e s s i o n e .  

L a t a b e l l a 1 . 2 r i a s s u m e l e o p z i o n i d e i l t r i .  

T i p o d i l t r o E s p r e s s i o n e d ' e s e m p i o D e s c r i z i o n e      

a n n o t a t i o n o r g . e x a m p l e . S o m e A n n o t a t i o n U n a n n o t a z i o n e d e v ' e s s e r e p r e s e n t e a l    

l i v e l l o d i t i p o n e l c o m p o n e n t e t a r g e t    

a s s i g n a b l e o r g . e x a m p l e . S o m e C l a s s U n c l a s s e ( o i n t e r f a c c i a ) c h e i l c o m -    

p o n e n t e t a r g e t p u ò e s t e n d e r e / i m p l e -    

m e n t a r e      

a s p e c t j o r g . e x a m p l e . . * S e r v i c e + U n e s p r e s s i o n e d i t i p o A s p e c t J c h e d e v e      

m a t c h a r e c o n i l c o m p o n e n t e t a r g e t    

r e g e x o r g / . e x a m p l e / . D e f a u l t . * U n ' e s p r e s s i o n e r e g o l a r e c h e d e v e      

m a t c h a r e c o n i l n o m e d e l l a c l a s s e d e l    

c o m p o n e n t e t a r g e t    

c u s t o m o r g . e x a m p l e . M y C u s t o m T y p e F i l t e r U n ' i m p l e m e n t a z i o n e c u s -    

t o m i z z a t a d e l l ' i n t e r f a c c i a      

o r g . s p r i n g f r a m e w o r k . c o r e . t y p e . T y p e F i l t e r      

T a b e l l a 1 . 2 : O p z i o n i d e i l t r i    

L ' e s e m p i o c h e s e g u e m o s t r a l a c o n g u r a z i o n e X M L i g n o r a n d o t u t t i i c o m p o n e n t i @ R e p o s -    

i t o r y t r a n n e q u e l l i c h e r i s p e t t a n o l ' e s p r e s s i o n e r e g o l a r e      . * S t u b . * R e p o s i t o r y      , o v v e r o i l c u i n o m e      

t e r m i n a c o n R e p o s i t o r y e i l n o m e d e l p a c k a g e i n c u i s o n o c o n t e n u t i t e r m i n a c o n S t u b .  

< b e a n s >      

< c o n t e x t : c o m p o n e n t - s c a n b a s e - p a c k a g e = " o r g . e x a m p l e " >      

< c o n t e x t : i n c l u d e - f i l t e r t y p e = " r e g e x "      

e x p r e s s i o n = " . * S t u b . * R e p o s i t o r y " / >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 25/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 8   

< c o n t e x t : e x c l u d e - f i l t e r t y p e = " a n n o t a t i o n "      

e x p r e s s i o n = " o r g . s p r i n g f r a m e w o r k . s t e r e o t y p e . R e p o s i t o r y " / >      

< / c o n t e x t : c o m p o n e n t - s c a n >      

< / b e a n s >      

1 . 1 4 I n t e r n a z i o n a l i z z a z i o n e c o n        M e s s a g e S o u r c e      

L ' i n t e r f a c c i a      A p p l i c a t i o n C o n t e x t    e s t e n d e u n i n t e r f a c c i a c h i a m a t a      M e s s a g e S o u r c e      e q u i n d i    

p r o v v e d e a n c h e a l l a f u n z i o n a l i t à d i i n t e r n a z i o n a l i z z a z i o n e ( i 1 8 n ) .  

I m e t o d i d e n i t i i n q u e s t a i n t e r f a c c i a i n c l u d o n o :  

       S t r i n g g e t M e s s a g e ( S t r i n g c o d e , O b j e c t [ ] a r g s , S t r i n g d e f a u l t , L o c a l e l o c )    : I l m e t o d o b a s e      

u t i l i z z a t o p e r r e c u p e r a r e u n m e s s a g g i o d a l    M e s s a g e S o u r c e      . S e n o n v i e n e t r o v a t o a l c u n      

m e s s a g g i o , v i e n e u s a t o q u e l l o d i d e f a u l t .  

       S t r i n g g e t M e s s a g e ( S t r i n g c o d e , O b j e c t [ ] a r g s , L o c a l e l o c )    : F o n d a m e n t a l m e n t e l a s t e s s a      

c o s a d e l m e t o d o p r e c e d e n t e , m a c o n u n a d i e r e n z a : n o n è s p e c i c a t o a l c u n m e s s a g g i o d i    

d e f a u l t ; s e i l m e s s a g g i o n o n v i e n e t r o v a t o , v i e n e s o l l e v a t a u n a      N o S u c h M e s s a g e E x c e p t i o n      . 

       S t r i n g g e t M e s s a g e ( M e s s a g e S o u r c e R e s o l v a b l e r e s o l v a b l e , L o c a l e l o c a l e )    : T u t t e l e p r o p r i -    

e t à u t i l i z z a t e n e i m e t o d i p r e c e d e n t i v e n g o n o w r a p p a t e i n u n a c l a s s e c h i a m a t a      M e s s a g e -    

S o u r c e R e s o l v a b l e      . 

Q u a n d o v i e n e c a r i c a t o u n      A p p l i c a t i o n C o n t e x t    , v i e n e a u t o m a t i c a m e n t e c e r c a t o u n b e a n      

M e s s a g e S o u r c e      d e n i t o n e l c o n t e s t o . I l b e a n d e v e a v e r e i l n o m e      m e s s a g e S o u r c e      . S e t a l e b e a n      

v i e n e t r o v a t o , t u t t e l e c h i a m a t e d e i m e t o d i s o p r a e l e n c a t i s o n o d e l e g a t i a l m e s s a g e S o u r c e . S e      

i n v e c e n o n v i e n e t r o v a t o , l '  A p p l i c a t i o n C o n t e x t    c e r c a u n g e n i t o r e c h e c o n t e n g a u n b e a n c o n      

l o s t e s s o n o m e . S e l o t r o v a l o u s a c o m e u n      M e s s a g e S o u r c e      , a l t r i m e n t i v i e n e i s t a n z i a t o u n      

D e l e g a t i n g M e s s a g e S o u r c e      v u o t o , i n g r a d o d i a c c e t t a r e c h i a m a t e a i m e t o d i d e n i t i s o p r a .  

L ' u s o d e l    M e s s a g e S o u r c e      è e v i d e n z i a t o d a l s e g u e n t e e s e m p i o :  

       m e s s a g g i . p r o p e r t i e s    

b e n v e n u t o = C i a o M o n d o ! ! !    

       s p r i n g - c o n g . x m l    

< b e a n s >      

< b e a n i d = " m e s s a g e S o u r c e "      

c l a s s = " o r g . s p r i n g f r a m e w o r k . c o n t e x t . s u p p o r t . R e s o u r c e B u n d l e M e s s a g e S o u r c e " >      

< p r o p e r t y n a m e = " b a s e n a m e s " >      

< l i s t >      

< ! - - Q u i p o s s o d e f i n i r e p i ù f i l e d i p r o p e r t i e s . P e r o r a - - >      

< ! - - i n s e r i s c o l ' u n i c o c h e h o c h e s i c h i a m a ' m e s s a g g i ' . - - >      

< v a l u e > m e s s a g g i < / v a l u e >      

< / l i s t >      

< / p r o p e r t y >      

< / b e a n >      

< / b e a n s >      

      M a i n . j a v a      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 26/86

 

C A P I T O L O 1 . I L C O N T E N I T O R E I O C         1 9   

p u b l i c c l a s s M a i n {      

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

M e s s a g e S o u r c e r e s o u r c e s = n e w C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t ( " s p r i n g - c o n f i g . x m l " ) ;    

S t r i n g m e s s a g e = r e s o u r c e s . g e t M e s s a g e ( " b e n v e n u t o " , n u l l , " D e f a u l t " , n u l l ) ;    

S y s t e m . o u t . p r i n t l n ( m e s s a g e ) ;    

}   

}   

E s e g u e n d o l a c l a s s e M a i n , l ' o u t p u t s a r à :  

C i a o M o n d o ! ! !    

S e l a v o c e      b e n v e n u t o      n o n f o s s e s t a t a t r o v a t a a l l ' i n t e r n o d e l m e s s a g g i . p r o p e r t i e s , l ' o u t p u t    

s a r e b b e s t a t o      

D e f a u l t      

Q u e s t o m e c c a n i s m o p e r m e t t e d i e l i m i n a r e q u a l u n q u e s t r i n g a e s p l i c i t a m e n t e d i c h i a r a t a      

a l l ' i n t e r n o d e l c o d i c e , s i s t e m a n d o l e t u t t e i n l e s a p p o s i t i . T a l e u t i l i t à r i s u l t a e v i d e n t e p r o p r i o      

i n f a s e d i l o c a l i z z a z i o n e .  

S u p p o n e n d o p e r e s e m p i o d i v o l e r t r a d u r r e l a n o s t r a a p p l i c a z i o n e i n i n g l e s e ( e n - G B ) ,  

d o v r e m o c r e a r e u n l e c h i a m a t o m e s s a g g i _ e n _ G B . p r o p e r t i e s .  

T i p i c a m e n t e l a l o c a l i z z a z i o n e è g e s t i t a d a l l ' a m b i e n t e s u c u i g i r a l ' a p p l i c a z i o n e .  

S u p p o n e n d o p e r e s e m p i o d i a v e r e i s e g u e n t i l e s :  

       m e s s a g g i . p r o p e r t i e s    

b e n v e n u t o = C i a o M o n d o ! ! !    

      m e s s a g g i _ e n _ G B . p r o p e r t i e s    

b e n v e n u t o = H e l l o W o r l d ! ! !    

       M a i n . j a v a      

p u b l i c c l a s s M a i n {      

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

M e s s a g e S o u r c e r e s o u r c e s = n e w C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t ( " s p r i n g - c o n f i g . x m l " ) ;    

/ / c a r i c o i l f i l e p r e d e f i n i t o      

S t r i n g m e s s a g e = r e s o u r c e s . g e t M e s s a g e ( " b e n v e n u t o " , n u l l , " D e f a u l t " , n u l l ) ;    

S y s t e m . o u t . p r i n t l n ( m e s s a g e ) ;    

/ / c a r i c o i l f i l e p e r l a l i n g u a i n g l e s e      

m e s s a g e = r e s o u r c e s . g e t M e s s a g e ( " b e n v e n u t o " , n u l l , " D e f a u l t " , L o c a l e . U K ) ;    

S y s t e m . o u t . p r i n t l n ( m e s s a g e ) ;    

}   

}   

L ' o u t p u t i n q u e s t o c a s o s a r à :  

C i a o M o n d o ! ! !    

H e l l o W o r l d ! ! !    

L a d i e r e n z a l a f a l ' u l t i m o p a r a m e t r o d e l l a f u n z i o n e      g e t M e s s a g e ( . . . )    . N e l p r i m o c a s o , n o n      

e s s e n d o s p e c i c a t o n e s s u n v a l o r e , v i e n e c e r c a t o i n a u t o m a t i c o i l l e m e s s a g g i ( s e n z a s u s s i ) .  

N e l s e c o n d o c a s o v i e n e s p e c i c a t a l a l o c a l i z z a z i o n e i n g l e s e ( L o c a l e . U K ) , e q u i n d i v i e n e c e r c a t o      

l o s t e s s o l e m a c o n i l s u s s o p e r l a l i n g u e i n g l e s e ( _ e n _ G B ) .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 27/86

 

C a p i t o l o 2      

V a l i d a z i o n e      

2 . 1 I n t r o d u z i o n e      

L a v a l i d a z i o n e , o v v e r o i l c o n t r o l l o d e l l a v a l i d i t à d e i v a l o r i c o n c u i v i e n e s e t t a t o u n b e a n o i n      

g e n e r a l e v e n g o n o s e t t a t i d e i p a r a m e t r i , è u n a s p e t t o m o l t o i m p o r t a n t e i n o g n i a p p l i c a z i o n e .  

Q u e s t a p r o b l e m a t i c a d i v e n t a p i ù c r i t i c a q u a n d o i v a l o r i i m m e s s i p r o v e n g o n o d i r e t t a m e n t e      

d a l l ' u t e n t e . E ' n e c e s s a r i o q u i n d i a v e r e u n m e c c a n i s m o c h e c o n s e n t a d i c o n t r o l l a r e q u e s t o t i p o      

d i o p e r a z i o n i .  

C i s o n o p r o e c o n t r o n e l c o n s i d e r a r e l a v a l i d a z i o n e c o m e p a r t e d e l l a l o g i c a d i b u s i n e s s    

e S p r i n g o r e u n a s o l u z i o n e p e r l a v a l i d a z i o n e c h e n o n e s c l u d e n e s s u n a d e l l e d u e c o s e . I n      

p a r t i c o l a r e l a v a l i d a z i o n e      

       n o n d o v r e b b e e s s e r e l e g a t a a l l a y e r w e b ;  

       d o v r e b b e e s s e r e s e m p l i c e g e s t i r n e l a l o c a l i z z a z i o n e ;  

      d o v r e b b e e s s e r e p o s s i b i l e a g g i u n g e r e q u a l u n q u e v a l i d a t o r e d i s p o n i b i l e ;  

P e r a s s o l v e r e a q u e s t e f u n z i o n a l i t à , S p r i n g p r o p o n e l ' i n t e r f a c c i a      V a l i d a t o r      . 

2 . 2 L ' i n t e r f a c c i a      V a l i d a t o r      

S p r i n g u t i l i z z a l ' i n t e r f a c c i a      V a l i d a t o r      p e r c o n s e n t i r e l ' i m p l e m e n t a z i o n e d i m e c c a n i s m i d i v a l -    

i d a z i o n e . O g n i v a l i d a t o r e c h e s i v u o l e c o s t r u i r e d e v e i m p l e m e n t a r e t a l e i n t e r f a c c i a . Q u e s t i    

s o n o i m e t o d i e s p o s t i :  

      p u b l i c b o o l e a n s u p p o r t s ( C l a s s c l a z z ) ;    d e n i s c e s u q u a l i c l a s s i p u ò a g i r e i l v a l i d a t o r e .  

O m e g l i o , d a t a u n a c l a s s e p a s s a t a c o m e p a r a m e t r o r e s t i t u i s c e      t r u e      s e i l v a l i d a t o r e i n      

q u e s t i o n e è s t a t o s c r i t t o p e r p o t e r v a l i d a r e q u e l l a c l a s s e .  

       p u b l i c v o i d v a l i d a t e ( O b j e c t o b j , E r r o r s e ) ;    è i l m e t o d o c h e e e t t u a l a v a l i d a z i o n e s u l -    

l ' o g g e t t o      o b j   . Q u e s t o m e t o d o f a a n c h e u s o d e l l ' i n t e r f a c c i a      E r r o r s      . 

T u t t i g l i e r r o r i r i l e v a t i d u r a n t e l ' e s e c u z i o n e d e l m e t o d o      v a l i d a t e ( . . . )     v e r r a n n o r e g i s t r a t i    

a l l ' i n t e r n o d i u n a p p o s i t o o g g e t t o d i t i p o      E r r o r s      . 

V e d i a m o i l f u n z i o n a m e n t o d i c i ò d i c u i s i è p a r l a t o n o r a c o n u n e s e m p i o .  

I m m a g i n i a m o d i a v e r e u n o g g e t t o      I n d i r i z z o      c h e r a c c h i u d e t u t t e l e i n f o r m a z i o n i p e r i d e n -    

t i c a r e u n i v o c a m e n t e u n i n d i r i z z o n e l m o n d o :  

2 0   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 28/86

 

C A P I T O L O 2 . V A L I D A Z I O N E         2 1   

c l a s s I n d i r i z z o {      

/ / a t t r i b u t i      

p r i v a t e S t r i n g p r e f i s s o V i a ; / / " v i a " , " v i a l e " , " p i a z z a " , e c c .    

p r i v a t e S t r i n g n o m e V i a ;    

p r i v a t e S t r i n g n u m e r o C i v i c o ;    

p r i v a t e S t r i n g c a p ;    

p r i v a t e S t r i n g c i t t a ;    

p r i v a t e S t r i n g p r o v i n c i a ;    

p r i v a t e S t r i n g n a z i o n e ;    

/ / m e t o d i s e t ( ) e g e t ( )    

. . .  

}   

P e r v a l i d a r e q u e s t o b e a n , a b b i a m o b i s o g n o d i u n v a l i d a t o r e a d h o c c h e , c o m e d e s c r i t t o      

p o c o f a , d e v e i m p l e m e n t a r e l ' i n t e r f a c c i a      V a l i d a t o r      : 

p u b l i c c l a s s I n d i r i z z o V a l i d a t o r i m p l e m e n t s V a l i d a t o r {      

/ / C o n q u e s t o m e t o d o c o s i d e f i n i t o , i n d i c h i a m o c h e      

/ / q u e s t a c l a s s e v a l i d a S O L O g l i o g g e t t i I n d i r i z z o      

p u b l i c b o o l e a n s u p p o r t s ( C l a s s c l a z z ) {      

r e t u r n I n d i r i z z o . c l a s s . e q u a l s ( c l a z z ) ;    

}   

/ / M e t o d o c h e r e a l i z z a l a v a l i d a z i o n e      

p u b l i c v o i d v a l i d a t e ( O b j e c t o b j , E r r o r s e ) {      

V a l i d a t i o n U t i l s . r e j e c t I f E m p t y ( e ,    

" p r e f i s s o V i a " ,    

" r e q u i r e d " ,    

" p r e f i s s o V i a è o b b l i g a t o r i o " ) ;    

V a l i d a t i o n U t i l s . r e j e c t I f E m p t y ( e ,    

" n a z i o n e " ,    

" r e q u i r e d " ,    

" n a z i o n e è o b b l i g a t o r i o " ) ;    

V a l i d a t i o n U t i l s . r e j e c t I f E m p t y ( e ,    

" c a p " ,    

" r e q u i r e d " ,    

" c a p è o b b l i g a t o r i o " ) ;    

}   

}   

A l l ' i n t e r n o d e l m e t o d o      v a l i d a t e ( . . . )     v e n g o n o u t i l i z z a t i i m e t o d i s t a t i c i d e l l a c l a s s e      V a l i d a -    

t i o n U t i l s      . I l m e t o d o      r e j e c t I f E m p t y ( . . . )    , c o m e d i c e i l n o m e s t e s s o , r i u t a ( o , i n a l t r e p a r o l e ,  

i n v a l i d a l a v e r i c a ) i l v a l o r e a s s e g n a t o a l l ' a t t r i b u t o      p r e s s o V i a      d i   o b j   n e l c a s o i n c u i t a l e      

a t t r i b u t o s i a l a s c i a t o v u o t o ( o v v e r o c o n v a l o r e      n u l l    ) . I l p r i m o p a r a m e t r o è u n r i f e r i m e n -    

t o a l l ' o g g e t t o d i t i p o      E r r o r s      c h e r a c c o g l i e r à t u t t e l e i n f o r m a z i o n i c i r c a g l i e r r o r i r i l e v a t i ; i l    

s e c o n d o p a r a m e t r o s i r i f e r i s c e a l l ' a t t r i b u t o d i    o b j   s u c u i v i e n e e e t t u a t a l a v e r i c a ; i l t e r z o      

p a r a m e t r o è u n c o d i c e c h e r a p p r e s e n t a i l t i p o d i e r r o r e . T a l e c o d i c e è a r b i t r a r i a m e n t e s c e l t o      

d a l l o s v i l u p p a t o r e ( i n q u e s t o c a s o è s t a t o d e n i t o p e r s e m p l i c i t à a l l ' i n t e r n o d e l l a f u n z i o n e , m a      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 29/86

 

C A P I T O L O 2 . V A L I D A Z I O N E         2 2   

s a r e b b e p i ù c o r r e t t o d e n i r l o i n u n a p p o s i t o l e d i c o s t a n t i ) . L ' u l t i m o p a r a m e t r o , c h e n o n è      

o b b l i g a t o r i o , è i l m e s s a g g i o d ' e r r o r e d i d e f a u l t .  

S e c o n d o l a l o g i c a u t i l i z z a t a n e l l ' e s e m p i o , u n i n d i r i z z o n o n è c o n s i d e r a t o v a l i d o s e i l p r e s s o      

d e l l a v i a , l a n a z i o n e e i l c a p n o n s o n o s t a t i d e n i t i .  

P e r t e s t a r e i l n o s t r o v a l i d a t o r e , è s u c i e n t e e s e g u i r e i l s e g u e n t e m e t o d o m a i n :  

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

/ / c r e o u n i n d i r i z z o      

I n d i r i z z o i = n e w I n d i r i z z o ( ) ;    

i . s e t N o m e V i a ( " F . O z a n a m " ) ;    

i . s e t N u m e r o C i v i c o ( " 4 4 " ) ;    

i . s e t C a p ( " 1 2 3 4 5 6 7 8 9 " ) ;    

/ / c r e o i l v a l i d a t o r e      

I n d i r i z z o V a l i d a t o r i v = n e w I n d i r i z z o V a l i d a t o r ( ) ;    

E r r o r s e r r I n d = n e w B i n d E x c e p t i o n ( i , i . g e t C l a s s ( ) . g e t N a m e ( ) ) ;    

/ / e f f e t t u o e g e s t i s c o l a v a l i d a z i o n e      

i v . v a l i d a t e ( i , e r r I n d ) ;    

/ / c o n t r o l l o s e c i s o n o s t a t i e r r o r i      

i f ( e r r I n d . h a s F i e l d E r r o r s ( ) ) {      

/ / m i f a c c i o r e s t i t u i r e u n a l i s t a d i e r r o r i r i l e v a t i s u i c a m p i      

L i s t < F i e l d E r r o r > l i s t a C a m p i = e r r I n d . g e t F i e l d E r r o r s ( ) ;    

f o r ( F i e l d E r r o r f e : l i s t a C a m p i ) {      

S y s t e m . o u t . p r i n t l n ( f e . g e t D e f a u l t M e s s a g e ( ) ) ;    

}   

}   

}   

V e d i a m o d i c o m m e n t a r e i l c o d i c e a p p e n a p r e s e n t a t o . T a n t o p e r c o m i n c i a r e v i e n e c r e a t o      

u n    I n d i r i z z o      d ' e s e m p i o , l a s c i a n d o a      n u l l    d u e d e i t r e c a m p i r i c h i e s t i c o m e o b b l i g a t o r i . V i e n e      

p o i c r e a t o i l v a l i d a t o r e . A b b i a m o p o i b i s o g n o d i u n o g g e t t o d i t i p o      E r r o r s      . N a t u r a l m e n t e ,  

t r a t t a n d o s i d i u n ' i n t e r f a c c i a , n i e n t e c i i m p e d i s c e d i c r e a r n e u n o n o s t r o , m a S p r i n g n e m e t t e      

a d i s p o s i z i o n e a l c u n i g i à p r o n t i . N e l n o s t r o c a s o a b b i a m o u s a t o u n      B i n d E x c e p t i o n      . N o n      

c ' è u n m o t i v o p a r t i c o l a r e p e r a v e r s c e l t o q u e s t o , s e n o n c h e i m p l e m e n t a      E r r o r s      p e r u n u s o      

a b b a s t a n z a s t a n d a r d . D a n o t a r e c h e q u e s t a c l a s s e e s t e n d e      E x c e p t i o n      . I l c o s t r u t t o r e d i q u e s t o      

o g g e t t o p r e n d e c o m e p a r a m e t r i l ' o g g e t t o s u c u i s i f a l a v a l i d a z i o n e e i l n o m e d i t a l e o g g e t t o .  

A q u e s t o p u n t o p o s s i a m o c h i e d e r e a l v a l i d a t o r e d i e e t t u a r e l e v e r i c h e .  

T e r m i n a t e q u e s t e o p e r a z i o n i , s i a m o o v v i a m e n t e i n t e r e s s a t i a c o n o s c e r e l ' e s i t o d e l l a v a l i -    

d a z i o n e . I n t e r r o g h i a m o q u i n d i l ' o g g e t t o      E r r o r s      . C o n i l m e t o d o      h a s F i e l d E r r o r s ( )    v e r i c h i a m o      

( c i r e s t i t u i s c e u n b o o l e a n ) s e s o n o s t a t i r i l e v a t i e r r o r i s u i c o n t r o l l i d e i c a m p i . I n c a s o a e r -    

m a t i v o , c o n i l m e t o d o      g e t F i e l d E r r o r s ( )    c i f a c c i a m o r e s t i t u i r e u n a l i s t a d i    F i e l d E r r o r      . O g n u n o      

d i q u e s t i o g g e t t i c o n t i e n e t u t t i i d e t t a g l i s u g l i e r r o r i r i l e v a t i s u i c a m p i . N e l n o s t r o c a s o s i a m o      

i n t e r e s s a t i a l m e s s a g g i o d i d e f a u l t p e r f a r c e l o s t a m p a r e s u l l a c o n s o l e .  

L ' o u t p u t d i q u e s t o m e t o d o p r o d u r r à i l s e g u e n t e r i s u l t a t o :  

p r e f i s s o V i a è o b b l i g a t o r i o      

n a z i o n e è o b b l i g a t o r i o      

V e d i a m o o r a q u a l c h e o s s e r v a z i o n e d i a p p r o f o n d i m e n t o .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 30/86

 

C A P I T O L O 2 . V A L I D A Z I O N E         2 3   

2 . 2 . 1 G e s t i o n e d i c o n t r o l l i p i ù c o m p l e s s i    

N e l v a l i d a t o r e s o n o s t a t i e e t t u a t i d e i c o n t r o l l i e s t r e m a m e n t e s e m p l i c i , m a i n e e t t i d i l i m i t a t a      

u t i l i t à . S u l c a p p e r e s e m p i o s a r e b b e o p p o r t u n o n o n s o l o i l c o n t r o l l o s e è      n u l l    o n o , m a a n c h e      

u n a v e r i c a s e i l v a l o r e i m m e s s o , n e l c a s o s i a d i v e r s o d a l v a l o r e n u l l o , s i a e e t t i v a m e n t e      

p l a u s i b i l e ( u n c a p è f o r m a t o S E M P R E d a c i n q u e c i f r e ) . I l q u e s t o c a s o i n f a t t i è n e c e s s a r i o      

a c c e d e r e d i r e t t a m e n t e a l c a m p o , e e t t u a r e u n c o n t r o l l o a m a n o ( u t i l i z z a n d o p e r e s e m p i o l e      

e s p r e s s i o n i r e g o l a r i , c o n t e n u t e n e l p a c k a g e       j a v a . u t i l . r e g e x      ) e d e v e n t u a l m e n t e r i u t a r e l ' e r r o r e .  

P e r r i u t a r e l ' e r r o r e s i u t i l i z z a u n m e t o d o d i    E r r o r s      :  r e j e c t V a l u e ( . . . )    . Q u e s t o m e t o d o p u ò      

r i c e v e r e v a r i p a r a m e t r i , t r a c u i l ' a t t r i b u t o d e l l ' o g g e t t o c h e n o n h a p a s s a t o l a v a l i d a z i o n e , i l    

c o d i c e d ' e r r o r e e i l m e s s a g g i o d i d e f a u l t . I l c o n t r o l l o s u l c a p q u i n d i p o t r e b b e e s s e r e f a t t o i n      

q u e s t o m o d o :  

p u b l i c v o i d v a l i d a t e ( O b j e c t o b j , E r r o r s e ) {      

. . .  

I n d i r i z z o i = ( I n d i r i z z o ) o b j ;    

i f ( ! P a t t e r n . m a t c h e s ( " [ 0 - 9 ] [ 0 - 9 ] [ 0 - 9 ] [ 0 - 9 ] [ 0 - 9 ] " , i . g e t C a p ( ) ) ) {      

e . r e j e c t ( " c a p " , " n o t V a l i d " , " C a p n o n v a l i d o " ) ;    

}   

}   

I l c o m m e n t o a q u e s t o c o d i c e è m o l t o s e m p l i c e . V i e n e c a s t a t o      o b j   a    I n d i r i z z o      , p e r c h è c i    

s e r v e a c c e d e r e d i r e t t a m e n t e a d u n o d e i s u o i a t t r i b u t i . S e i l v a l o r e d e l c a p n o n m a t c h a c o n      

l ' e s p r e s s i o n e r e g o l a r e e s p r e s s a d a l p r i m o a r g o m e n t o d e l l a f u n z i o n e      m a t c h e s ( . . . )    , l a v a l i d a z i o n e      

s u l c a m p o      c a p    v i e n e r i t e n u t a f a l l i t a e i l v a l o r e v i e n e r i u t a t o .   e    r e g i s t r a l ' e r r o r e , g l i a s s e g n a      

i l c o d i c e      n o t V a l i d      e i l m e s s a g g i o d i d e f a u l t C a p n o n v a l i d o .  

2 . 2 . 2 G e s t i o n e d e i m e s s a g g i d ' e r r o r e t r a m i t e      m e s s a g e S o u r c e      

L a g e s t i o n e d e i m e s s a g g i d ' e r r o r e d a p r e s e n t a r e a l l ' u t e n t e p u ò e s s e r e g e s t i t a i n m a n i e r a p i ù      

e l e g a n t e ( e s o p r a t t u t t o l o c a l i z z a t a ) s f r u t t a n d o i    m e s s a g e S o u r c e      ( v i s t i n e l p a r a g r a f o 1 . 1 4 ) .  

P o s s i a m o i n f a t t i c o n s i d e r a r e i l s e g u e n t e l e d i p r o p e r t i e s :  

       v a l i d a z i o n e . p r o p e r t i e s    

r e q u i r e d = L ' a t t r i b u t o { 0 } è o b b l i g a t o r i o .    

n o t V a l i d = L ' a t t r i b u t o { 0 } h a u n v a l o r e n o n v a l i d o .    

I l v a l o r e 0 a l l ' i n t e r n o d e l l e p a r e n t e s i g r a e s e r v e n e l c a s o i n c u i s i v o g l i a p a s s a r e a l g e -    

s t o r e d e l    m e s s a g e S o u r c e      u n p a r a m e t r o ( s t r i n g a ) c h e s a r à v i s u a l i z z a t o a l p o s t o d i { 0 } . S e l a      

s t r i n g a n e l l e d i p r o p e r t i e s c o n t i e n e p i ù p a r a m e t r i , o g n i p a r a m e t r o v a i n d i c a t o c o n u n n u m e r o      

p r o g r e s s i v o : { 0 } , { 1 } , { 2 } , e c c .  

N e l m e t o d o m a i n , q u a n d o a n d i a m o a s c o r r e r e t u t t i g l i e r r o r i , i l c i c l o f o r p u ò e s s e r e r i s c r i t t o      

n e l m o d o s e g u e n t e :  

f o r ( F i e l d E r r o r f e : l i s t a C a m p i ) {      

S t r i n g [ ] p a r a m = { f e . g e t F i e l d ( ) } ;    

S y s t e m . o u t . p r i n t l n ( r e s o u r c e s . g e t M e s s a g e ( f e . g e t C o d e ( ) ,    

p a r a m ,    

f e . g e t D e f a u l t M e s s a g e ( ) ,    

n u l l ) ) ;    

}   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 31/86

 

C A P I T O L O 2 . V A L I D A Z I O N E         2 4   

L a g e s t i o n e d e i p a r a m e t r i d e l l e d i p r o p e r t i e s è a d a t a a l s e c o n d o p a r a m e t r o d e l l a f u n -    

z i o n e      g e t M e s s a g e ( . . . )    . Q u e s t o i n f a t t i , s e n o n è      n u l l    , d e v e n e c e s s a r i a m e n t e e s s e r e u n a r r a y d i    

S t r i n g . N e l n o s t r o c a s o v i e n e p a s s a t o l ' a r r a y { p r e s s o V i a } n e l l a p r i m a i t e r a z i o n e , { n a z i o n e }      

n e l l a s e c o n d a e { c a p } n e l l a t e r z a .  

I l r i s u l t a t o s a r à i l s e g u e n t e :  

L ' a t t r i b u t o p r e f i s s o V i a è o b b l i g a t o r i o .    

L ' a t t r i b u t o n a z i o n e è o b b l i g a t o r i o .    

L ' a t t r i b u t o c a p h a u n v a l o r e n o n v a l i d o .    

A n c o r a u n a v o l t a , s i a m o r i u s c i t i a c e n t r a l i z z a r e l a g e s t i o n e d e i m e s s a g g i a l l ' i n t e r n o d i l e      

d i p r o p e r t i e s a p p o s i t a m e n t e d e d i c a t i .  

2 . 3 V a l i d a z i o n e d i u n a r e t e d i b e a n        

A b b i a m o v i s t o c o m e s i a p o s s i b i l e v a l i d a r e u n b e a n t r a m i t e u n v a l i d a t o r e c o s t r u i t o a d h o c .  

C o n s i d e r i a m o o r a d i v o l e r v a l i d a r e i l s e g u e n t e b e a n :  

       P e r s o n a . j a v a      

p u b l i c c l a s s P e r s o n a {      

p r i v a t e S t r i n g n o m e ;    

p r i v a t e S t r i n g c o g n o m e ;    

p r i v a t e I n t e g e r e t a ;    

p r i v a t e I n d i r i z z o i n d i r i z z o ;    

/ / m e t o d i s e t e g e t . . .    

}   

I n q u e s t a p a r t i c o l a r e s i t u a z i o n e c i t r o v i a m o d i f r o n t e a d u n b e a n c h e h a t r a i s u o i a t t r i b u t i    

u n r i f e r i m e n t o a d u n a l t r o b e a n , d i c u i p e r a l t r o a b b i a m o g i à u n v a l i d a t o r e f u n z i o n a n t e . E '  

o v v i a m e n t e d i n o s t r o p a r t i c o l a r e i n t e r e s s e r i c i c l a r e      I n d i r i z z o V a l i d a t o r      e q u e s t o è p o s s i b i l e f a r l o      

a l l ' i n t e r n o d e l v a l i d a t o r e d e l b e a n      P e r s o n a      . 

V e d i a m o i l c o d i c e d i    P e r s o n a V a l i d a t o r      : 

p u b l i c c l a s s P e r s o n a V a l i d a t o r i m p l e m e n t s V a l i d a t o r {      

p u b l i c b o o l e a n s u p p o r t s ( C l a s s c l a z z ) {      

r e t u r n P e r s o n a . c l a s s . e q u a l s ( c l a z z ) ;    

}   

p u b l i c v o i d v a l i d a t e ( O b j e c t o b j , E r r o r s e ) {      

/ / c o n t r o l l o c h e i c a m p i n o m e e c o g n o m e s i a n o c o m p i l a t i      

V a l i d a t i o n U t i l s . r e j e c t I f E m p t y ( e , " n o m e " , " r e q u i r e d " ) ;    

V a l i d a t i o n U t i l s . r e j e c t I f E m p t y ( e , " c o g n o m e " , " r e q u i r e d " ) ;    

P e r s o n a p = ( P e r s o n a ) o b j ;    

/ / e f f e t t u o u n c o n t r o l l o s u l l ' e t à , n e l c a s o s i a d i v e r s a d a n u l l      

i f ( p . g e t E t a ( ) ! = n u l l ) {      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 32/86

 

C A P I T O L O 2 . V A L I D A Z I O N E         2 5   

i f ( p . g e t E t a ( ) < 0 ) {      

e . r e j e c t V a l u e ( " e t a " , " v a l o r e N e g a t i v o " ) ;    

} e l s e i f ( p . g e t E t a ( ) > 1 1 0 ) {      

e . r e j e c t V a l u e ( " e t a " , " t r o p p o V e c c h i o " ) ;    

}   

}   

/ / v a l i d o l ' i n d i r i z z o      

e . p u s h N e s t e d P a t h ( " i n d i r i z z o " ) ;    

V a l i d a t i o n U t i l s . i n v o k e V a l i d a t o r ( n e w I n d i r i z z o V a l i d a t o r ( ) , p . g e t I n d i r i z z o ( ) , e ) ;    

e . p o p N e s t e d P a t h ( ) ;    

}   

}   

Q u e s t o v a l i d a t o r e c i p e r m e t t e d i f a r e d u e o s s e r v a z i o n i .  

I n t a n t o è p o s s i b i l e v e d e r e c o m e v i e n e g e s t i t o i l c a s o i n c u i u n v a l o r e d e b b a e s s e r e r i u t a t o      

p e r s i t u a z i o n i p a r t i c o l a r i a l l ' i n f u o r i d e l s o l i t o      n u l l    , c o m e i n v e c e a v v i e n e c o n g l i a t t r i b u t i    n o m e      

e    c o g n o m e      . A n z i i n q u e s t o c a s o i l v a l o r e      n u l l    è a m m e s s o , m a n o n s o n o a m m e s s i v a l o r i a l l ' i n f u o r i    

d e l r a n g e [ 0 . . 1 1 0 ] .  

L e u l t i m e t r e i s t r u z i o n i s o n o u n e s e m p i o d i c o m e s i a p o s s i b i l e v a l i d a r e u n b e a n i n t e r n o a d      

u n a l t r o b e a n . I m m a g i n i a m o l a g e r a r c h i a t r a g l i o g g e t t i c o n u n o s c h e m a c o m e i n g u r a 2 . 1 :  

Persona

+nome: String

+cognome: String

+eta: Integer

+indirizzo: Indirizzo

Indirizzo

attributi 

omessi...

F i g u r a 2 . 1 : P e r s o n a - > I n d i r i z z o      

L a f u n z i o n e      p u s h N e s t e d P a t h ( S t r i n g n o m e A t t r i b u t o )    d e l l ' o g g e t t o      E r r o r s      c o n s e n t e d i a v a n -    

z a r e d i u n o s t e p n e l l a g e r a r c h i a , i n b a s e a l n o m e d e l l ' a t t r i b u t o c h e g l i v i e n e p a s s a t o . D a l    

m o m e n t o d e l l ' i n v o c a z i o n e d i q u e s t a f u n z i o n e , l ' o g g e t t o      e    c o m i n c i a a d o c c u p a r s i d i    I n d i r i z z o      

e n o n p i ù d i    P e r s o n a      . A q u e s t o p u n t o , c o n l ' i s t r u z i o n e      i n v o k e V a l i d a t o r ( . . . )     d i   V a l i d a t i o n U -    

t i l s      p o s s o a t t i v a r e l a v a l i d a z i o n e s u l l ' i n d i r i z z o . V e n g o n o p a s s a t i c o m e p a r a m e t r i u n ' i s t a n z a      

d i   I n d i r i z z o V a l i d a t o r      , l ' i s t a n z a d a v a l i d a r e e l ' o g g e t t o      E r r o r s      c h e d o v r à g e s t i r e l e e v e n t u a l i    

s i t u a z i o n i d ' e r r o r e .  

C o n l a f u n z i o n e      p o p N e s t e d P a t h ( )    , r i t o r n i a m o i n d i e t r o n e l l a g e r a r c h i a , t o r n a n d o s u l l ' o g g e t -    

t o    P e r s o n a      . 

P e r f a r c o m p r e n d e r e a n c o r a m e g l i o i l m e c c a n i s m o , s u p p o n i a m o d i a v e r e l a g e r a r c h i a d i    

o g g e t t i i n g u r a 2 . 2 .  

S e v o l e s s i m o v a l i d a r e A c o m p l e t a m e n t e ,   A V a l i d a t o r      p o t r e b b e a v e r e i l c o d i c e s e g u e n t e :  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 33/86

 

C A P I T O L O 2 . V A L I D A Z I O N E         2 6   

A

+b: B

+c: C

B

+d: D

C

D

+pippo: String

F i g u r a 2 . 2 : G e r a r c h i a d i o g g e t t i    

p u b l i c v o i d v a l i d a t e ( O b j e c t o b j , E r r o r s e ) {      

/ / v a l i d a z i o n e d e i c a m p i s e m p l i c i d i A . . .    

A a = ( A ) o b j ;    

/ / v a l i d a z i o n e d i b      

e . p u s h N e s t e d P a t h ( " b " ) ;    

V a l i d a t i o n U t i l s . i n v o k e V a l i d a t o r ( n e w B V a l i d a t o r ( ) , a . g e t B ( ) , e ) ;    

e . p o p N e s t e d P a t h ( ) ;    

/ / v a l i d a z i o n e d i c      

e . p u s h N e s t e d P a t h ( " c " ) ;    

V a l i d a t i o n U t i l s . i n v o k e V a l i d a t o r ( n e w C V a l i d a t o r ( ) , a . g e t C ( ) , e ) ;    

e . p o p N e s t e d P a t h ( ) ;    

}   

Q u e s t o c o d i c e p a r t e d a l p r e s u p p o s t o c h e c h i h a s c r i t t o B V a l i d a t o r s i s i a o c c u p a t o d i    

r i l a n c i a r e a l s u o i n t e r n o i l v a l i d a t o r e s u      D     , c h e è i n e e t t i l o s c e n a r i o p i ù a u s p i c a b i l e .  

Q u a l o r a c o s ì n o n f o s s e , i l c o d i c e a p p e n a v i s t o a n d r e b b e r i s c r i t t o n e l s e g u e n t e m o d o :  

p u b l i c v o i d v a l i d a t e ( O b j e c t o b j , E r r o r s e ) {      

/ / v a l i d a z i o n e d e i c a m p i s e m p l i c i d i A . . .    

A a = ( A ) o b j ;    

/ / v a l i d a z i o n e d i b      

e . p u s h N e s t e d P a t h ( " b " ) ;    

V a l i d a t i o n U t i l s . i n v o k e V a l i d a t o r ( n e w B V a l i d a t o r ( ) , a . g e t B ( ) , e ) ;    

/ / v a l i d a z i o n e d i d      

e . p u s h N e s t e d P a t h ( " d " ) ;    

V a l i d a t i o n U t i l s . i n v o k e V a l i d a t o r ( n e w D V a l i d a t o r ( ) , a . g e t B ( ) . g e t D ( ) , e ) ;    

e . p o p N e s t e d P a t h ( ) ;    

/ / " r i t o r n o " s u b      

e . p o p N e s t e d P a t h ( ) ;    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 34/86

 

C A P I T O L O 2 . V A L I D A Z I O N E         2 7   

/ / v a l i d a z i o n e d i c      

e . p u s h N e s t e d P a t h ( " c " ) ;    

V a l i d a t i o n U t i l s . i n v o k e V a l i d a t o r ( n e w C V a l i d a t o r ( ) , a . g e t C ( ) , e ) ;    

e . p o p N e s t e d P a t h ( ) ;    

}   

L a c h i a m a t a      e . p u s h N e s t e d P a t h ( d )    m i p e r m e t t e d i s c e n d e r e d i u n u l t e r i o r e l i v e l l o n e l l a      

g e r a r c h i a e d i p o s i z i o n a r m i s u      d    . 

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 35/86

 

C a p i t o l o 3      

S p r i n g E x p r e s s i o n L a n g u a g e ( S p E L )    

3 . 1 I n t r o d u z i o n e      

S p r i n g E x p r e s s i o n L a n g u a g e ( o S p E L ) è u n p o t e n t e l i n g u a g g i o p e r l e e s p r e s s i o n i c h e s u p p o r t a      

l a p o s s i b i l i t à d i i n t e r r o g a r e e m a n i p o l a r e r e t i d i o g g e t t i a r u n t i m e . L a s i n t a s s i d e l l i n g u a g g i o è      

s i m i l e a l l o U n i e d E L , m a o r e a l c u n e f u n z i o n a l i t à i n p i ù , i n v o c a z i o n e d i m e t o d i e f u n z i o n a l i t à      

s u l l e s t r i n g h e .  

T a l e l i n g u a g g i o è s t a t o c r e a t o p e r f o r n i r e a l l a c o m u n i t à d i S p r i n g u n s i n g o l o l i n g u a g g i o      

p e r l e e s p r e s s i o n i c h e p u ò e s s e r e u s a t o f r a t u t t i i p r o d o t t i S p r i n g .  

N o n e s s e n d o d i r e t t a m e n t e l e g a t o a S p r i n g , è u n l i n g u a g g i o c h e p u ò e s s e r e u s a t o i n m a n i e r a      

i n d i p e n d e n t e .  

3 . 2 P a n o r a m i c a s u l l e c a r a t t e r i s t i c h e      

S p E L s u p p o r t a l e s e g u e n t i f u n z i o n a l i t à :  

       e s p r e s s i o n i l e t t e r a l i    

      o p e r a t o r i b o o l e a n i e r e l a z i o n a l i    

       e s p r e s s i o n i r e g o l a r i    

      e s p r e s s i o n i p e r l e c l a s s i    

       a c c e s s o a g l i a t t r i b u t i , a r r a y , l i s t e e m a p p e      

       i n v o c a z i o n e d i m e t o d i    

      a s s e g n a z i o n i    

       c h i a m a t e d e i c o s t r u t t o r i    

      o p e r a t o r i t e r n a r i    

       v a r i a b i l i    

       f u n z i o n i d e n i t e d a l l ' u t e n t e      

       p r o i e z i o n e d e l l e c o l l e z i o n i    

       s e l e z i o n e d e l l e c o l l e z i o n i    

      e s p r e s s i o n i p e r i t e m p l a t e      

2 8   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 36/86

 

C A P I T O L O 3 . S P R I N G E X P R E S S I O N L A N G U A G E ( S P E L )     2 9   

3 . 3 V a l u t a z i o n e d e l l e e s p r e s s i o n i u s a n d o l ' i n t e r f a c c i a      E x p r e s -    

s i o n        d i S p r i n g      

I l c o d i c e c h e s e g u e i n t r o d u c e l e A P I d i S p E L p e r v a l u t a r e l a s e m p l i c e s t r i n g a C i a o M o n d o .  

E x p r e s s i o n P a r s e r p a r s e r = n e w S p e l E x p r e s s i o n P a r s e r ( ) ;    

E x p r e s s i o n e x p = p a r s e r . p a r s e E x p r e s s i o n ( " ' C i a o M o n d o ' " ) ;    

S t r i n g m e s s a g e = ( S t r i n g ) e x p . g e t V a l u e ( ) ;    

S y s t e m . o u t . p r i n t l n ( " V i s u a l i z z a z i o n e s t r i n g a : " + m e s s a g e ) ;    

L ' o u t p u t p r o d o t t o è :  

V i s u a l i z z a z i o n e s t r i n g a : C i a o M o n d o      

L ' i n t e r f a c c i a      E x p r e s s i o n P a r s e r      è r e s p o n s a b i l e d e l p a r s i n g d i u n a s t r i n g a e s p r e s s i o n e . I n      

q u e s t o e s e m p i o l a s t r i n g a e s p r e s s i o n e è u n a s t r i n g a l e t t e r a l e d e l i m i t a t a d a a p i c i . L ' i n t e r f a c c i a      

E x p r e s s i o n      è r e s p o n s a b i l e d e l l a v a l u t a z i o n e d e l l a s t r i n g a e s p r e s s i o n e . C i s o n o d u e e c c e z i o n i c h e      

p o s s o n o e s s e r e s o l l e v a t e ,   P a r s e E x c e p t i o n      e d    E v a l u a t i o n E x c e p t i o n      , c h i a m a n d o r i s p e t t i v a m e n t e      

p a r s e r . p a r s e E x p r e s s i o n ( )    e    e x p . g e t V a l u e ( )    . 

S p E L s u p p o r t a l a c h i a m a t a d i m e t o d i , l ' a c c e s s o a g l i a t t r i b u t i e l a c h i a m a t a d e i c o s t r u t t o r i .  

I l s e g u e n t e e s e m p i o m o s t r a l a c h i a m a t a d e l m e t o d o      c o n c a t ( )    d e l l e s t r i n g h e :  

E x p r e s s i o n P a r s e r p a r s e r = n e w S p e l E x p r e s s i o n P a r s e r ( ) ;    

E x p r e s s i o n e x p = p a r s e r . p a r s e E x p r e s s i o n ( " ' C i a o M o n d o ' . c o n c a t ( ' ! ' ) " ) ;    

S t r i n g m e s s a g e = ( S t r i n g ) e x p . g e t V a l u e ( ) ;    

S y s t e m . o u t . p r i n t l n ( " E s e m p i o c o n c a t e n a z i o n e : " + m e s s a g e ) ;    

L ' o u t p u t p r o d o t t o è :  

E s e m p i o c o n c a t e n a z i o n e : C i a o M o n d o !    

N e l l ' e s e m p i o c h e s e g u e s i m o s t r a c o m e s i a p o s s i b i l e l ' a c c e s s o a d u n a t t r i b u t o d i u n b e a n ,  

i n q u e s t o c a s o è l ' a t t r i b u t o      b y t e s      d i u n a s t r i n g a :  

E x p r e s s i o n P a r s e r p a r s e r = n e w S p e l E x p r e s s i o n P a r s e r ( ) ;    

E x p r e s s i o n e x p = p a r s e r . p a r s e E x p r e s s i o n ( " ' C i a o M o n d o ' . b y t e s " ) ;    

b y t e [ ] b y t e s = ( b y t e [ ] ) e x p . g e t V a l u e ( ) ;    

S y s t e m . o u t . p r i n t ( " A c c e s s o a l c a m p o b y t e s : " ) ;    

f o r ( i n t i = 0 ; i < b y t e s . l e n g t h ; i + + )    

S y s t e m . o u t . p r i n t ( b y t e s [ i ] + " " ) ;    

S y s t e m . o u t . p r i n t l n ( ) ;    

L ' o u t p u t p r o d o t t o è :  

A c c e s s o a l c a m p o b y t e s : 6 7 1 0 5 9 7 1 1 1 3 2 7 7 1 1 1 1 1 0 1 0 0 1 1 1      

N a t u r a l m e n t e è p o s s i b i l e a c c e d e r e a d a t t r i b u t i a n n i d a t i u t i l i z z a n d o l ' o p e r a t o r e p u n t o ( . ) :  

E x p r e s s i o n P a r s e r p a r s e r = n e w S p e l E x p r e s s i o n P a r s e r ( ) ;    

E x p r e s s i o n e x p = p a r s e r . p a r s e E x p r e s s i o n ( " ' C i a o M o n d o ' . b y t e s . l e n g t h " ) ;    

i n t l e n g t h = ( I n t e g e r ) e x p . g e t V a l u e ( ) ;    

S y s t e m . o u t . p r i n t l n ( " L u n g h e z z a d e l c a m p o b y t e s : " + l e n g t h ) ;    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 37/86

 

C A P I T O L O 3 . S P R I N G E X P R E S S I O N L A N G U A G E ( S P E L )     3 0   

L ' o u t p u t p r o d o t t o è :  

L u n g h e z z a d e l c a m p o b y t e s : 1 0      

C o n i l p r o s s i m o e s e m p i o s i m o s t r a c o m e s i a p o s s i b i l e i n v o c a r e u n c o s t r u t t o r e :  

E x p r e s s i o n P a r s e r p a r s e r = n e w S p e l E x p r e s s i o n P a r s e r ( ) ;    

E x p r e s s i o n e x p = p a r s e r . p a r s e E x p r e s s i o n ( " n e w S t r i n g ( ' C i a o M o n d o ' ) . t o U p p e r C a s e ( ) " ) ;    

S t r i n g m e s s a g e = e x p . g e t V a l u e ( S t r i n g . c l a s s ) ;    

S y s t e m . o u t . p r i n t l n ( " C r e a t a l a s t r i n g a : " + m e s s a g e ) ;    

L ' o u t p u t p r o d o t t o è :  

C r e a t a l a s t r i n g a : C I A O M O N D O      

N o t a r e l ' u s o d e l m e t o d o p u b b l i c o g e n e r i c o      < T > T g e t V a l u e ( C l a s s < T > d e s i r e d R e s u l t T y p e )    . 

U s a n d o q u e s t o m e t o d o s i r i m u o v e l a n e c e s s i t à d i c a s t a r e i l v a l o r e d e l l ' e s p r e s s i o n e a l t i p o d e l    

r i s u l t a t o d e s i d e r a t o . V i e n e s o l l e v a t a u n a      E v a l u a t i o n E x c e p t i o n      s e i l v a l o r e n o n p u ò e s s e r e      

c a s t a t o a l t i p o T .  

L ' u s o p i ù c o m u n e d i S p E L è q u e l l o d i p r o v v e d e r e a v a l u t a r e u n ' e s p r e s s i o n e s u u n a s p e c i c a      

i s t a n z a d i u n o g g e t t o . N e l l ' e s e m p i o c h e s e g u e r e c u p e r i a m o i l v a l o r e d e l l a p r o p r i e t à      n o m e      d a   

u n ' i s t a n z a d e l l a c l a s s e      P e r s o n a      . V e d i a m o u n e s e m p i o :  

P e r s o n a p = n e w P e r s o n a ( ) ;    

p . s e t N o m e ( " S i m o n e " ) ;    

p . s e t C o g n o m e ( " T r a v e r s i " ) ;    

E x p r e s s i o n P a r s e r p a r s e r = n e w S p e l E x p r e s s i o n P a r s e r ( ) ;    

E x p r e s s i o n e x p = p a r s e r . p a r s e E x p r e s s i o n ( " n o m e " ) ;    

E v a l u a t i o n C o n t e x t c o n t e x t = n e w S t a n d a r d E v a l u a t i o n C o n t e x t ( ) ;    

c o n t e x t . s e t R o o t O b j e c t ( p ) ;    

S t r i n g n a m e = ( S t r i n g ) e x p . g e t V a l u e ( c o n t e x t ) ;    

S y s t e m . o u t . p r i n t l n ( " I l n o m e d e l b e a n p è : " + n a m e ) ;    

L ' o u t p u t è :  

I l n o m e d e l b e a n p è : S i m o n e      

N e l l ' u l t i m a i s t r u z i o n e , i l v a l o r e d e l l a v a r i a b i l e S t r i n g      n o m e      v i e n e s e t t a t a a S i m o n e . L a      

c l a s s e      S t a n d a r d E v a l u a t i o n C o n t e x t    c o n s e n t e d i s p e c i c a r e d i q u a l e o g g e t t o d e v e e s s e r e v a l -    

u t a t o l ' a t t r i b u t o      n o m e      . P e r s p e c i c a r g l i e l o s i u s a t a l a f u n z i o n e      s e t R o o t O b j e c t ( )    . E ' p o s s i -    

b i l e r i u s a r e l a s t e s s a e s p r e s s i o n e p i ù v o l t e s e t t a n d o d i v o l t a i n v o l t a u n n u o v o r o o t O b j e c t    

n e l l '  E v a l u a t i o n C o n t e x t    . L e e s p r e s s i o n i s o n o v a l u t a t e u t i l i z z a n d o l e r e e c t i o n .  

C o m e e s e m p i o i n t r o d u t t i v o n a l e , v e d i a m o l ' u s o d i u n o p e r a t o r e b o o l e a n o u s a n d o l ' o g g e t t o      

P e r s o n a      u s a t o n e l l ' e s e m p i o p r e c e d e n t e .  

P e r s o n a p = n e w P e r s o n a ( ) ;    

p . s e t N o m e ( " S i m o n e " ) ;    

E x p r e s s i o n P a r s e r p a r s e r = n e w S p e l E x p r e s s i o n P a r s e r ( ) ;    

E x p r e s s i o n e x p = p a r s e r . p a r s e E x p r e s s i o n ( " n o m e = = ' S i m o n e ' " ) ;    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 38/86

 

C A P I T O L O 3 . S P R I N G E X P R E S S I O N L A N G U A G E ( S P E L )     3 1   

E v a l u a t i o n C o n t e x t c o n t e x t = n e w S t a n d a r d E v a l u a t i o n C o n t e x t ( ) ;    

c o n t e x t . s e t R o o t O b j e c t ( p ) ;    

b o o l e a n r i s u l t a t o = e x p . g e t V a l u e ( c o n t e x t , B o o l e a n . c l a s s ) ;    

S y s t e m . o u t . p r i n t l n ( " V a l u t a z i o n e d e l l ' e s p r e s s i o n e b o o l e a n a : " + r i s u l t a t o ) ;    

L ' o u t p u t è :  

V a l u t a z i o n e d e l l ' e s p r e s s i o n e b o o l e a n a : t r u e      

3 . 3 . 1 L ' i n t e r f a c c i a      E v a l u a t i o n C o n t e x t      

L ' i n t e r f a c c i a      E v a l u a t i o n C o n t e x t    è u s a t a p e r v a l u t a r e e s p r e s s i o n i p e r r i s o l v e r e p r o p r i e t à , m e t o -    

d i , c a m p i e d a i u t a r e a d e e t t u a r e c o n v e r s i o n e d i t i p i . L ' i m p l e m e n t a z i o n e      S t a n d a r d E v a l u a -    

t i o n C o n t e x t    u s a l e r e e c t i o n p e r m a n i p o l a r e g l i o g g e t t i , n a s c o n d e n d o i m e t o d i , i c a m p i e i    

c o s t r u t t o r i d e l l e i s t a n z e d e l p a c k a g e       j a v a . l a n g . r e e c t     p e r i n c r e m e n t a r e l e p r e s t a z i o n i .  

L ' o g g e t t o      S t a n d a r t E v a l u a t i o n C o n t e x t    è d o v e s i s p e c i c a l ' o g g e t t o r a d i c e d a v a l u t a r e a t -    

t r a v e r s o i l m e t o d o      s e t R o o t O b j e c t    o p a s s a n d o l ' o g g e t t o r o o t a l c o s t r u t t o r e . E ' p o s s i b i l e i n o l t r e      

s p e c i c a r e v a r i a b i l i e f u n z i o n i c h e p o s s o n o e s s e r e u s a t e n e l l e e s p r e s s i o n i u s a n d o i m e t o d i    

s e t V a r i a b l e      e    r e g i s t e r F u n c t i o n      . 

3 . 4 S u p p o r t o d e l l e e s p r e s s i o n i a l l a d e n i z i o n e d e i b e a n        

S p E L p u ò e s s e r e u s a t o c o n l ' X M L o c o n l e a n n o t a z i o n i p e r l a d e n i z i o n e d e i b e a n . I n e n t r a m b i    

i c a s i l a s i n t a s s i p e r d e n i r e l e e s p r e s s i o n i è # { < s t r i n g a e s p r e s s i o n e > } .  

C o n g u r a z i o n e b a s a t a s u X M L        I l v a l o r e d i u n a t t r i b u t o o d e l l ' a r g o m e n t o d i u n c o n t r u t -    

t o r e p u ò e s s e r e d e n i t o c o m e d i s e g u i t o :  

< b e a n i d = " n u m e r o " c l a s s = " e s e m p i . N u m e r o " >      

< p r o p e r t y n a m e = " r a n d o m N u m b e r " v a l u e = " # { T ( j a v a . l a n g . M a t h ) . r a n d o m ( ) * 1 0 0 . 0 } " / >      

< ! - - a l t r e p r o p r i e t à - - >      

< / b e a n >      

L a v a r i a b i l e      s y s t e m P r o p e r t i e s      è p r e d e n i t a , q u i n d i è p o s s i b i l e u s a r l a n e l l e e s p r e s s i o n i c o m e      

m o s t r a t o i n s e g u i t o . N o t a c h e n o n s i d e v e f a r p r e c e d e r e l a v a r i a b i l e p r e d e n i t a d a l s i m b o l o #        

i n q u e s t o c o s t e s t o .  

< b e a n i d = " t a x C a l c u l a t o r " c l a s s = " e s e m p i . T a x C a l c u l a t o r " >      

< p r o p e r t y n a m e = " d e f a u l t L o c a l e " v a l u e = " # { s y s t e m P r o p e r t i e s [ ' u s e r . r e g i o n ' ] } " / >      

< ! - - a l t r e p r o p r i e t à - - >      

< / b e a n >      

E ' p o s s i b i l e r i f e r i r s i a d u n a t t r i b u t o d i u n a l t r o b e a n , p e r e s e m p i o :  

< b e a n i d = " n u m e r o " c l a s s = " e s e m p i . N u m e r o " >      

< p r o p e r t y n a m e = " r a n d o m N u m b e r " v a l u e = " # { T ( j a v a . l a n g . M a t h ) . r a n d o m ( ) * 1 0 0 . 0 } " / >      

< ! - - a l t r e p r o p r i e t à - - >      

< / b e a n >      

< b e a n i d = " s h a p e G u e s s " c l a s s = " e s e m p i . S h a p e G u e s s " >      

< p r o p e r t y n a m e = " i n i t i a l S h a p e S e e d " v a l u e = " # { n u m e r o . r a n d o m N u m b e r } " / >      

< ! - - a l t r e p r o p r i e t à - - >      

< / b e a n >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 39/86

 

C A P I T O L O 3 . S P R I N G E X P R E S S I O N L A N G U A G E ( S P E L )     3 2   

C o n g u r a z i o n e b a s a t a s u l l e a n n o t a z i o n i     L ' a n n o t a z i o n e      @ V a l u e      p u ò e s s e r e p o s i z i o n a t a      

s u i c a m p i , s u i m e t o d i e s u i p a r a m e t r i d e i m e t o d i / c o s t r u t t o r i , p e r s p e c i c a r e u n v a l o r e d i    

d e f a u l t . A d e s e m p i o :  

p u b l i c s t a t i c c l a s s F i e l d V a l u e T e s t B e a n {      

@ V a l u e ( " # { s y s t e m P r o p e r t i e s [ ' u s e r . r e g i o n ' ] } " )    

p r i v a t e S t r i n g d e f a u l t L o c a l e ;    

p u b l i c v o i d s e t D e f a u l t L o c a l e ( S t r i n g d e f a u l t L o c a l e ) {      

t h i s . d e f a u l t L o c a l e = d e f a u l t L o c a l e ;    

}   

p u b l i c S t r i n g g e t D e f a u l t L o c a l e ( ) {      

r e t u r n t h i s . d e f a u l t L o c a l e ;    

}   

}   

Q u e l l o c h e s e g u e è u n u s o e q u i v a l e n t e , i n c u i l ' a n n o t a z i o n e v i e n e a p p l i c a t a a l m e t o d o s e t t e r    

d e l l o s t e s s o a t t r i b u t o .  

p u b l i c s t a t i c c l a s s P r o p e r t y V a l u e T e s t B e a n {      

p r i v a t e S t r i n g d e f a u l t L o c a l e ;    

@ V a l u e ( " # { s y s t e m P r o p e r t i e s [ ' u s e r . r e g i o n ' ] } " )    

p u b l i c v o i d s e t D e f a u l t L o c a l e ( S t r i n g d e f a u l t L o c a l e ) {      

t h i s . d e f a u l t L o c a l e = d e f a u l t L o c a l e ;    

}   

p u b l i c S t r i n g g e t D e f a u l t L o c a l e ( ) {      

r e t u r n t h i s . d e f a u l t L o c a l e ;    

}   

}   

3 . 5 R e f e r e n c e d e l l i n g u a g g i o      

P e r u n a d e s c r i z i o n e e s a u s t i v a d e l l e p o s s i b i l i t à s i n t a t t i c h e d i S p E L c o n s u l t a r e l a s e z i o n e 6 . 5      

d e l l e r e f e r e n c e u c i a l i d i S p r i n g .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 40/86

 

C a p i t o l o 4      

S p r i n g A O P        

4 . 1 I n t r o d u z i o n e      

L a p r o g r a m m a z i o n e o r i e n t a t a a g l i a s p e t t i ( A O P ) s i p u ò p e n s a r e c o m p l e m e n t a r e a l l a p r o -    

g r a m m a z i o n e o r i e n t a t a a g l i o g g e t t i ( O O P ) , f o r n e n d o u n ' a l t r o m o d o d i p e n s a r e l a s t r u t t u r a d i    

u n ' a p p l i c a z i o n e . S e l ' e l e m e n t o s u c u i s i b a s a l a O O P è l a c l a s s e , l ' e l e m e n t o s u c u i s i b a s a l a      

A O P è l ' a s p e t t o . G l i a s p e t t i c o n s e n t o n o d i g e s t i r e r e s p o n s a b i l i t à c h e t a g l i a n o t r a s v e r s a l m e n t e      

l ' a p p l i c a z i o n e , c o i n v o l g e n d o p i ù o g g e t t i t r a l o r o . T r a i v a r i e s e m p i p o s s i a m o c i t a r e i l l o g g i n g ,  

l a g e s t i o n e d e i p r i v i l e g i d i u n u t e n t e , l a g e s t i o n e d e l l e t r a n s a z i o n i .  

U n o d e i c o m p o n e n t i c h i a v e d i S p r i n g è i l f r a m e w o r k A O P . D a l m o m e n t o c h e i l c o n t a i n e r    

I o C n o n d i p e n d e d a q u e l l o A O P , n o n è n e c e s s a r i o u s a r e q u e s t ' u l t i m o s e n o n s i v u o l e f a r l o .  

A O P è u s a t o n e l f r a m e w o r k S p r i n g p e r :  

       p r o v v e d e r e a l l a d i c h i a r a z i o n e d i s e r v i z i e n t e r p r i s e , s p e c i a l m e n t e i n s o s t i t u z i o n e d e g l i    

E J B . I l p i ù i m p o r t a n t e è q u e l l o c h e r i g u a r d a l a g e s t i o n e d e l l e t r a n s a z i o n i .  

       c o n s e n t i r e a g l i s v i l u p p a t o r i d i i m p l e m e n t a r e a s p e t t i p r o p r i .  

4 . 1 . 1 C o n c e t t i d e l l ' A O P        

C o m i n c i a m o c o n i l d e n i r e a l c u n i c o n c e t t i f o n d a m e n t a l i e u n p o ' d i t e r m i n o l o g i a . Q u e s t i    

t e r m i n i n o n s o n o s p e c i c i d i S p r i n g .  

       A s p e c t    : u n a m o d u l a r i z z a z i o n e d i u n c o n c e t t o c h e a t t r a v e r s a p i ù c l a s s i . I n S p r i n g A O P g l i    

a s p e t t i s o n o i m p l e m e n t a t i u s a n d o l e c l a s s i t r a d i z i o n a l i o c o n c l a s s i t r a d i z i o n a l i a n n o t a t e      

c o n l ' a n n o t a z i o n e      @ A s p e c t    . 

       J o i n P o i n t    : u n p u n t o ( u n m o m e n t o ) d u r a n t e l ' e s e c u z i o n e d i u n p r o g r a m m a , c o m e      

p o t r e b b e e s s e r e l ' e s e c u z i o n e d i u n m e t o d o o l a g e s t i o n e d i u n e c c e z i o n e , l ' a c c e s s o a d      

u n a v a r i a b i l e , e c c . I n S p r i n g A O P u n j o i n p o i n t r a p p r e s e n t a s e m p r e l ' e s e c u z i o n e d i u n      

m e t o d o .  

      A d v i c e      : a z i o n e p r e s a d a u n a s p e c t i n u n p a r t i c o l a r e j o i n p o i n t . C i s o n o d i e r e n t i t i p i    

d i a d v i c e , c o m e a r o u n d , b e f o r e e a f t e r . M o l t i f r a m e w o r k A O P , i n c l u s o S p r i n g ,  

m o d e l l a n o u n a d v i c e c o m e u n i n t e r c e t t a t o r e , m a n t e n e n d o u n a c a t e n a d i i n t e r c e t t a t o r i    

a t t o r n o a d u n j o i n p o i n t .  

      P o i n t c u t    : u n p r e d i c a t o c h e m a t c h a c o n i j o i n p o i n t . U n a d v i c e è a s s o c i a t o c o n u n ' e s p r e s -    

s i o n e d i u n p o i n t c u t e v i e n e e s e g u i t o o g n i v o l t a c h e i l j o i n p o i n t e i l p o i n t c u t m a t c h a n o      

3 3   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 41/86

 

C A P I T O L O 4 . S P R I N G A O P         3 4   

( p e r e s e m p i o l ' e s e c u z i o n e d i u n m e t o d o c o n u n d e t e r m i n a t o n o m e ) . I l c o n c e t t o d i j o i n      

p o i n t s c o m e m a t c h a t i d a u n ' e s p r e s s i o n e d i u n p o i n t c u t è u n c o n c e t t o c e n t r a l e n e l l ' A O P ,  

e S p r i n g u s a d i d e f a u l t l e e s p r e s s i o n i d e i p o i n t c u t d e l l i n g u a g g i o A s p e c t J .  

      I n t r o d u c t i o n      : p o s s i b i l i t à d i d i c h i a r a r e m e t o d i o a t t r i b u t i a g g i u n t i v i a l l ' i n t e r n o d i u n      

o g g e t t o , a l t e r a n d o n e l a s t r u t t u r a . S p r i n g A O P p e r m e t t e d i i n t r o d u r r e n u o v e i n t e r f a c c e      

( e l a l o r o c o r r i s p o n d e n t e i m p l e m e n t a z i o n e ) a d o g n i o g g e t t o s o g g e t t o a d a d v i c e . N e l l a      

c o m u n i t à d i A s p e c t J , q u e s t a f u n z i o n a l i t à è c h i a m a t a      i n t e r - t y p e d e c l a r a t i o n      . 

       T a r g e t O b j e c t    : O g g e t t o c h e è s o g g e t t o a d a d v i c e d a u n o o p i ù a s p e t t i . E ' c h i a m a t o a n c h e      

a d v i c e d o b j e c t    . D a l m o m e n t o c h e S p r i n g A O P è s t a t o i m p l e m e n t a t o u s a n d o p r o x i e s    

r u n t i m e , q u e s t i o g g e t t i s a r a n n o s e m p r e      p r o x i e d o b j e c t    . 

      A O P P r o x y      : u n o g g e t t o c r e a t o d a l f r a m e w o r k A O P p e r i m p l e m e n t a r e i c o n t r a t t i d i u n      

a s p e t t o ( m e t o d i , e c c . ) . N e l f r a m e w o r k S p r i n g , u n p r o x y A O P s a r à u n p r o x y d i n a m i c o      

J D K o u n p r o x y C G L I B .  

      W e a v i n g      : l e g a r e g l i a s p e t t i c o n g l i a l t r i t i p i o d o g g e t t i d e l l ' a p p l i c a z i o n e p e r c r e a r e      

a d v i s e d o b j e c t . Q u e s t o p u ò e s s e r e f a t t o a t e m p o d i c o m p i l a z i o n e ( u s a n d o i l c o m p i l a t o r e      

A s p e c t J , p e r e s e m p i o ) , a t e m p o d i c a r i c a m e n t o o a r u n t i m e . S p r i n g A O P , c o m e a n c h e      

i l f r a m e w o r k J a v a A O P , e e t t u a n o q u e s t o l e g a m e a r u n t i m e .  

T i p i d i a d v i c e :  

       b e f o r e      : a d v i c e c h e v i e n e e s e g u i t o p r i m a d i u n j o i n p o i n t , m a c h e n o n p u ò a l t e r a r e i l u s s o      

d i e s e c u z i o n e c h e p r e c e d e i l j o i n p o i n t ( a m e n o c h e n o n s i a s o l l e v a t a u n ' e c c e z i o n e ) .  

      a f t e r r e t u r n i n g      : a d v i c e c h e v i e n e e s e g u i t o d o p o c h e u n j o i n p o i n t t e r m i n i n o r m a l m e n t e :  

p e r e s e m p i o , s e u n m e t o d o r i t o r n a s e n z a s o l l e v a r e e c c e z i o n i .  

       A f t e r t h r o w i n g      : a d v i c e c h e v i e n e e s e g u i t o s e u n m e t o d o t e r m i n a s o l l e v a n d o u n ' e c c e z i o n e .  

      A f t e r ( n a l l y )    : a d v i c e c h e v i e n e e s e g u i t o i n d i p e n d e n t e m e n t e d a c o m e u n j o i n p o i n t    

t e r m i n a .  

       A r o u n d      : a d v i c e c h e v i e n e e s e g u i t o q u a n d o v i e n e i n t e r c e t t a t a l a c h i a m a t a a d u n m e t o d o      

d e l l ' o g g e t t o t a r g e t . Q u e s t o è i l p i ù p o t e n t e t i p o d i a d v i c e .  

S i r a c c o m a n d a s e m p r e l ' u t i l i z z o d e l t i p o d i a d v i c e m e n o p o t e n t e c h e i m p l e m e n t a i l c o m -    

p o r t a m e n t o r i c h i e s t o . P e r e s e m p i o , s e s i h a l a n e c e s s i t à s o l o d i e s e g u i r e u n u p d a t e d e l l a c a c h e      

c o n i l v a l o r e d i r i t o r n o d i u n m e t o d o , è m e g l i o i m p l e m e n t a r e u n a f t e r r e t u r n i n g a d v i c e c h e      

u n a r o u n d a d v i c e , a n c h e s e u n a r o u n d a d v i c e p u ò f a r e l a s t e s s a c o s a . U s a n d o g l i a d v i c e p i ù      

s p e c i c i s i r e n d e i l m o d e l l o d i p r o g r a m m a z i o n e p i ù s e m p l i c e e m e n o s o g g e t t o a d e r r o r i .  

4 . 1 . 2 C a p a c i t à e o b i e t t i v i d i S p r i n g A O P        

S p r i n g A O P è i m p l e m e n t a t o i n J a v a e q u i n d i n o n c ' è b i s o g n o d i a l c u n p r o c e s s o d i c o m p i l a z i o n e .  

E ' p o s s i b i l e u t i l i z z a r l o a l l ' i n t e r n o d i c o n t a i n e r p e r J a v a E E e a p p l i c a t i o n s e r v e r .  

S p r i n g A O P a t t u a l m e n t e s u p p o r t a s o l o j o i n p o i n t s u l l ' e s e c u z i o n e d i m e t o d i , o v v e r o g l i    

e v e n t i i n t e r c e t t a t i s o n o s o l o q u e l i c h e c o i n c i d o n o c o n l a c h i a m a t a d i m e t o d i . L ' i n t e r c e t t a z i o n e      

d e l l ' a c c e s s o a i c a m p i n o n è s t a t a i m p l e m e n t a t a , n o n o s t a n t e i l s u p p o r t o p e r t a l e f u n z i o n a l i t à      

p o t r e b b e e s s e r e a g g i u n t o s e n z a d a n n i p e r i l c o r e d e l l e A P I d i S p r i n g A O P . S e s i h a n e c e s s i t à      

d i q u e s t e f u n z i o n a l i t à , v a l u t a r e l a p o s s i b i l i t à d i u s a r e u n l i n g u a g g i o c o m e A s p e c t J .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 42/86

 

C A P I T O L O 4 . S P R I N G A O P         3 5   

L ' a p p r o c c i o d i S p r i n g A O P a l l a p r o g r a m m a z i o n e o r i e n t a t a a g l i a s p e t t i è d i v e r s a r i s p e t -    

t o a g l i a l t r i f r a m e w o r k A O P . L ' o b i e t t i v o n o n è f o r n i r e u n ' i m p l e m e n t a z i o n e c o m p l e t a d e l -    

l ' A O P ; p i u t t o s t o s i t r a t t a d i p r o v v e d e r e a d u n a p r o f o n d a i n t e g r a z i o n e t r a l ' i m p l e m e n t a z i o n e      

d i A O P e S p r i n g I o C p e r f o r n i r e l ' a i u t o n e c e s s a r i o a r i s o l v e r e i p r o b l e m i t i p i c i d e l l e a p p l i c a z i o n i    

e n t e r p r i s e .  

I n f a t t i , p e r e s e m p i o , l e f u n z i o n a l i t à d i S p r i n g A O P s o n o t i p i c a m e n t e u s a t e i n s i e m e c o n      

q u e l l e d e l c o n t a i n e r I o C . G l i a s p e t t i s o n o c o n g u r a t i u t i l i z z a n d o l a n o r m a l e s i n t a s s i p e r l a      

d e n i z i o n e d e i b e a n : q u e s t a è u n a d i e r e n z a f o n d a m e n t a l e c o n l e a l t r e i m p l e m e n t a z i o n i A O P .  

C i s o n o a l c u n e c o s e c h e n o n s i p o s s o n o f a r e f a c i l m e n t e o e c i e n t e m e n t e c o n S p r i n g A O P ,  

c o m e o g g e t t i a d v i s e m o l t o d e t t a g l i a t i : A s p e c t J è l a m i g l i o r e s c e l t a i n q u e s t i c a s i . C o m u n q u e ,  

S p r i n g A O P c o n s e n t e d i u t i l i z z a r e s o l u z i o n i e c c e l l e n t i p e r m o l t i p r o b l e m i n e l l e a p p l i c a z i o n i    

J a v a E E .  

S p r i n g A O P n o n p o t r à m a i c o m p e t e r e c o n A s p e c t J p e r u n a c o m p l e t a i m p l e m e n t a z i o n e      

d e l l ' A O P . S i a i f r a m e r w o k b a s a t i s u p r o x y , c o m e S p r i n g A O P , s i a q u e l l i b a s a t i s u c o m p i l a z i o n e ,  

c o m e A s p e c t J , s o n o u g u a l m e n t e u t i l i e v a n n o c o n s i d e r a t i c o m p l e m e n t a r i , p i u t t o s t o c h e i n      

c o m p e t i z i o n e .  

4 . 1 . 3 A O P P r o x i e s    

S p r i n g A O P d i d e f a u l t u t i l i z z a i p r o x y d i n a m i c i s t a n d a r d d i J 2 S E p e r r e a l i z z a r e i p r o x y A O P .  

Q u e s t o p e r m e t t e l ' u s o d e i p r o x y s u l l e i n t e r f a c c e .  

V e n g o n o i n o l t r e u t i l i z z a t i i p r o x y C G L I B . Q u e s t o è n e c e s s a r i o p e r e e t t u a r e p r o x y s u l l e      

c l a s s i i n v e c e c h e s u l l e i n t e r f a c c i e . C G L I B è u s a t o d i d e f a u l t s u t u t t i g l i o g g e t t i d i b u s i n e s s c h e      

n o n i m p l e m e n t a n o i n t e r f a c c e . E ' b u o n a n o r m a p r o g r a m m a r e p e n s a n d o p r i m a d i t u t t o a l l e      

i n t e r f a c c e , p i u t t o s t o c h e a l l e c l a s s i .  

C a p i r e c h e S p r i n g A O P è b a s a t o s u p r o x y è i m p o r t a n t e .  

4 . 2 A O P c o n @ A s p e c t J      

@ A s p e c t J      s i r i f e r i s c e a d u n o s t i l e p e r l a d i c h i a r a z i o n e d e g l i a s p e t t i u t i l i z z a n d o l e a n n o t a z i o n i    

s u l l e n o r m a l i c l a s s i J a v a . L o s t i l e      @ A s p e c t J      è s t a t o i n t r o d o t t o d a l p r o g e t t o A s p e c t J c o m e      

p a r t e d e l l a r e l e a s e 5 . S p r i n g 2 . 0 i n t e r p r e t a l e s t e s s e a n n o t a z i o n i c o m e A s p e c t J 5 , u s a n d o u n a      

l i b r e r i a a s u p p o r t o d i A s p e c t J p e r i l p a r s i n g e i l m a t c h i n g d e i p o i n t c u t .  

N o n c ' è a l c u n a d i p e n d e n z a d a l c o m p i l a t o r e d i A s p e c t J .  

4 . 2 . 1 A b i l i t a r e i l s u p p o r t o a @ A s p e c t J      

P e r u t i l i z z a r e g l i a s p e t t i @ A s p e c t J , è n e c e s s a r i o a b i l i t a r e i n S p r i n g i l s u p p o r t o p e r l a l o r o      

c o n g u r a z i o n e , c o s i c o m e i l s u p p o r t o a l l ' a u t o p r o x y i n g . P e r    a u t o p r o x y i n g      s i i n t e n d e i l f a t t o      

c h e S p r i n g d e t e r m i n a s e u n b e a n è u n t a r g e t p e r u n o o p i ù a s p e t t i , p o i c h è d e v e e s s e r e a u -    

t o m a t i c a m e n t e g e n e r a t o u n p r o x y p e r q u e l b e a n , c h e i n t e r c e t t e r à l e i n v o c a z i o n i d e i m e t o d i ,  

a s s i c u r a n d o s i c h e g l i a d v i c e o p p o r t u n i v e n g a n o e s e g u i t i .  

I l s u p p o r t o @ A s p e c t J v i e n e a t t i v a t o i n c l u d e n d o i l s e g u e n t e e l e m e n t o n e l l e d i c o n g u -    

r a z i o n e :  

< a o p : a s p e c t j - a u t o p r o x y / >      

Q u e s t o p a r t e d a l p r e s u p p o s t o c h e s i s t i a n o u t i l i z z a n d o i s u p p o r t i p e r l a c o n g u r a z i o n e      

b a s a t a s u X M L , d e s c r i t t i i n m a n i e r a p i ù a p p r o f o n d i t a n e l l ' a p p e n d i c e      ? ?    . 

A l t e r n a t i v a m e n t e è p o s s i b i l e u t i l i z z a r e l a s e g u e n t e d e n i z i o n e :  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 43/86

 

C A P I T O L O 4 . S P R I N G A O P         3 6   

< b e a n c l a s s = " o r g . s p r i n g f r a m e w o r k . a o p . a s p e c t j .    

a n n o t a t i o n . A n n o t a t i o n A w a r e A s p e c t J A u t o P r o x y C r e a t o r " / >      

V a s e g n a l a t o i n o l t r e c h e è n e c e s s a r i o i n c l u d e r e a l c u n e l i b r e r i e A s p e c t J n e l c l a s s p a t h d e l -    

l ' a p p l i c a z i o n e :   a s p e c t j w e a v e r . j a r      e    a s p e c t j r t . j a r      . Q u e s t e l i b r e r i e s o n o d i s p o n i b i l i n e l l a c a r t e l l a      

l i b    n e l l a d i r e c t o r y p r i n c i p a l e d ' i n s t a l l a z i o n e d i A s p e c t J .  

4 . 2 . 2 D i c h i a r a r e u n a s p e t t o      

C o n i l s u p p o r t o @ A s p e c t J a b i l i t a t o , o g n i b e a n d e n i t o a l l ' i n t e r n o d e l c o n t e s t o d e l l ' a p p l i -    

c a z i o n e c o n u n a c l a s s e c h e è u n a s p e t t o ( o v v e r o h a l ' a n n o t a z i o n e      @ A s p e c t    ) s a r à a u t o m a t i -    

c a m e n t e r i l e v a t a d a S p r i n g e u s a t a p e r c o n g u r a r e S p r i n g A O P . L ' e s e m p i o c h e s e g u e m o s t r a      

l a d e n i z i o n e ( m i n i m a l e ) p e r u n a s p e t t o :  

< b e a n i d = " l o g g e r " c l a s s = " e s e m p i o s p r i n g . L o g g e r W i t h A n n o t a t i o n " / >      

C o m e s i v e d e , è d i c h i a r a t o c o m e q u a l u n q u e a l t r o b e a n .  

L a c l a s s e c o r r i s p o n d e n t e è d e n i t a c o m e s e g u e :  

@ A s p e c t      

p u b l i c c l a s s L o g g e r W i t h A n n o t a t i o n {      

/ / . . .    

}   

U n a s p e t t o p u ò a v e r e m e t o d i e a t t r i b u t i c o m e q u a l s i a s i a l t r a c l a s s e . P o t r e b b e c o n t e n e r e      

i n o l t r e p o i n t c u t , a d v i c e e i n t r o d u c t i o n . I n S p r i n g A O P n o n è p o s s i b i l e c h e u n a s p e t t o f a c c i a      

d a t a r g e t p e r u n a d v i c e d a u n a l t r o a s p e t t o . U n a c l a s s e a n n o t a t a c o n      @ A s p e c t    è e s c l u s a d a l    

m e c c a n i s m o d i a u t o p r o x y .  

4 . 2 . 3 D i c h i a r a r e u n p o i n t c u t    

R i c o r d i a m o c h e i p o i n t c u t s d e t e r m i n a n o i j o i n p o j n t s d i i n t e r e s s e e q u i n d i c i c o n s e n t o n o d i    

c o n t r o l l a r e q u a n d o u n a d v i c e d e v e e s s e r e e s e g u i t o .  

S p r i n g A O P s u p p o r t a s o l o l ' i n t e r c e t t a z i o n e d e i j o i n p o i n t s c h e c o i n c i d o n o c o n l ' e s e c u z i o n e      

d e i m e t o d i d e i b e a n s ( e s o l o d i q u e l l i g e s t i t i d a l c o n t e n i t o r e S p r i n g ) . L a d i c h i a r a z i o n e d i    

u n p o i n t c u t è c o m p o s t a d a d u e p a r t i : u n a r m a c o m p r e n d e n t e i l n o m e e a l c u n i p a r a m e t r i , e      

u n ' e s p r e s s i o n e c h e d e t e r m i n a e s a t t a m e n t e a q u a l e e s e c u z i o n e d i q u a l i m e t o d i s i a m o i n t e r e s s a t i .  

L a r m a d i u n p o i n t c u t p r e v e d e l a n o r m a l e d e n i z i o n e d i u n m e t o d o e l ' e s p r e s s i o n e d e l    

p o i n t c u t è i n d i c a t a u s a n d o l ' a n n o t a z i o n e      @ P o i n t c u t    ( t a l e m e t o d o d e v e a v e r e i l t i p o d i r i t o r n o      

v o i d      ) . 

S u p p o n i a m o d i a v e r e i l s e g u e n t e D a o ( i l q u a l e , p o i c h è s e r v e s o l o a t i t o l o d ' e s e m p i o , e e t t u a      

d e l l e n t e q u e r y ) c o n r e l a t i v a i n t e r f a c c i a I D a o :  

/ / i n t e r f a c c i a      

p u b l i c i n t e r f a c e I D a o {      

p u b l i c v o i d s a l v a ( ) ;    

p u b l i c v o i d r e c u p e r a ( ) ;    

}   

/ / c l a s s e d a o      

p u b l i c c l a s s D a o i m p l e m e n t s I D a o {      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 44/86

 

C A P I T O L O 4 . S P R I N G A O P         3 7   

p u b l i c v o i d s a l v a ( ) {      

S y s t e m . o u t . p r i n t l n ( " S a l v o u n d a t o s u l d b " ) ;    

}   

p u b l i c v o i d r e c u p e r a ( ) {      

S y s t e m . o u t . p r i n t l n ( " H o r e c u p e r a t o u n d a t o d a l d b " ) ;    

}   

}   

S u p p o n i a m o d i e s s e r e i n t e r e s s a t i a l l ' i n t e r c e t t a z i o n e d e l l ' e s e c u z i o n e d i u n q u a l u n q u e m e t o -    

d o d i q u e s t a c l a s s e , p e r c h è v o g l i a m o l o g g a r l i , p r i m a e d o p o l a l o r o e s e c u z i o n e .  

A l l ' i n t e r n o d e l l ' a s p e t t o d e n i t o p o c o s o p r a , d e n i a m o q u i n d i u n p o i n t c u t s u l l a b a s e d e l l ' e -    

s i g e n z a a p p e n a e s p r e s s a . I n q u e s t o e s e m p i o , s a r à i n o l t r e c h i a r i t a l a d i e r e n z a t r a l ' e s p r e s s i o n e      

d e l p o i n t c u t e l a s u a r m a .  

@ A s p e c t      

p u b l i c c l a s s L o g g e r W i t h A n n o t a t i o n {      

/ / d e f i n i z i o n e d e i p o i n t c u t      

@ P o i n t c u t ( " e x e c u t i o n ( * e s e m p i o s p r i n g . D a o . * ( . . ) ) " ) / / e s p r e s s i o n e      

p u b l i c v o i d i n D a o ( ) { } / / f i r m a      

}   

A b b i a m o d e n i t o u n p o i n t c u t c h i a m a t o      i n D a o ( )    . N o t a r e c h e l a r m a è i d e n t i c a a q u e l l a      

d i u n q u a l u n q u e m e t o d o v u o t o e c h e i l t i p o d i r i t o r n o è      v o i d      . 

L ' a n n o t a z i o n e      @ P o i n t c u t    c o n t i e n e t r a p a r e n t e s i u n a s t r i n g a e s p r e s s i o n e c h e d e s c r i v e i    

 j o i n p o i n t s d i i n t e r e s s e . L ' e s p r e s s i o n e q u i d e n i t a s i a g g a n c i a a t u t t e l e e s e c u z i o n i d i t u t t i i    

m e t o d i d e l l a c l a s s e      e s e m p i o s p r i n g . D a o      . S e a v e s s i m o v o l u t o a g g a n c i a r l o s o l o a l m e t o d o      s a l v a ( )    

a v r e m m o s c r i t t o l ' e s p r e s s i o n e i n q u e s t o m o d o :  

" e x e c u t i o n ( * e s e m p i o s p r i n g . D a o . s a l v a ( ) ) "      

I l p o i n t c u t d e s c r i t t o n e l l ' e s e m p i o è s t a t o d e n i t o u s a n d o l e e s p r e s s i o n i r e g o l a r i d i A s p e c t J      

5 . P e r u n ' a p p r o f o n d i m e n t o s u l l i n g u a g g i o d i d e n i z i o n e d e i p o i n t c u t i n A s p e c t J f a r e r i f e r i -    

m e n t o a l t e s t o A s p e c t J P r o g r a m m i n g G u i d e [ T e a 0 3 ] ( e p e r l ' e s t e n s i o n e a J a v a 5 , A s p e c t J      

5 D e v e l o p e r s N o t e b o o k ) o a d u n o d e i l i b r i s u A s p e c t J c o m e E c l i p s e A s p e c t J d i C o l y e r e t .  

a l . o p p u r e A s p e c t J i n A c t i o n d i R a m n i v a s L a d d a d .  

4 . 2 . 3 . 1 I n d i c a t o r i s u p p o r t a t i p e r i P o i n t c u t    

S p r i n g A O P s u p p o r t a i s e g u e n t i i n d i c a t o r i A s p e c t J p e r i p o i n t c u t ( P o i n t c u t D e s i g n a t o r s , o      

P C D ) p e r l a d e n i z i o n e d e l l e e s p r e s s i o n i d e i p o i n t c u t :  

       e x e c u t i o n      : p e r i n t e r c e t t a r e l ' e s e c u z i o n e d i u n m e t o d o ; è i l p r i n c i p a l e i n d i c a t o r e c h e s i    

u t i l i z z a i n S p r i n g A O P .  

       w i t h i n      : i n d i c a l ' i n s i e m e d e i j o i n p o i n t c o r r i s p o n d e n t i a l l ' e s e c u z i o n e d i m e t o d i c h e s i a n o      

p a r t e d i u n t i p o s p e c i c a t o .  

       t h i s      : i n d i c a l ' i n s i e m e d e i j o i n p o i n t c o r r i s p o n d e n t i a l l ' e s e c u z i o n e d i u n m e t o d o d i u n a      

p a r t i c o l a r e i s t a n z a d i u n c e r t o t i p o s p e c i c a t o .  

       t a r g e t    : i n d i c a l ' i n s i e m e d e i j o i n p o i n t n e i q u a l i l ' o g g e t t o t a r g e t è u n ' i s t a n z a d i u n c e r t o      

t i p o s p e c i c a t o .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 45/86

 

C A P I T O L O 4 . S P R I N G A O P         3 8   

      a r g s      : i n d i c a l ' i n s i e m e d e i j o i n p o i n t n e i q u a l i g l i a r g o m e n t i s o n o i s t a n z e d i u n c e r t o t i p o      

s p e c i c a t o .  

       @ t a r g e t    : i n d i c a l ' i n s i e m e d e i j o i n p o i n t n e i q u a l i l a c l a s s e c h e s t a e s e g u e n d o o p e r a z i o n i    

h a u n ' a n n o t a z i o n e d i u n c e r t o t i p o s p e c i c a t o .  

       @ a r g s      : i n d i c a l ' i n s i e m e d e i j o i n p o i n t n e i q u a l i i l t i p o a r u n t i m e p a s s a t o c o m e a r g o m e n t o      

a t t u a l e h a u n ' a n n o t a z i o n e d i u n c e r t o t i p o s p e c i c a t o .  

      @ w i t h i n      : i n d i c a l ' i n s i e m e d e i j o i n p o i n t n e i q u a l i i t i p i h a n n o u n ' a n n o t a z i o n e s p e c i c a t a .  

       @ a n n o t a t i o n      : i n d i c a l ' i n s i e m e d e i j o i n p o i n t n e i q u a l i i l s o g g e t t o d e l j o i n p o i n t h a      

u n ' a n n o t a z i o n e s p e c i c a t a .  

L a d i e r e n z a t r a      t h i s      e    t a r g e t    , c h e a p p a r e n t e m e n t e s e m b r a n o s i m i l i , s i c o m p r e n d e s o l o      

r i c o r d a n d o c h e S p r i n g A O P è b a s a t o s u p r o x y . S i d i e r e n z i a i n f a t t i t r a l ' o g g e t t o p r o x y s t e s s o      

( i d e n t i c a t o d a      t h i s      ) e l ' o g g e t t o t a r g e t c h e s i t r o v a d i e t r o i l p r o x y ( i d e n t i c a t o d a      t a r g e t    ) . 

A c a u s a d i q u e s t a n a t u r a , i n o l t r e , i m e t o d i r m a t i c o m e      p r o t e c t e d      n o n v e n g o n o i n -    

t e r c e t t a t i , n è p e r i p r o x y J D K n è p e r q u e l l i C G L I B . L a c o n s e g u e n z a è c h e      è p o s s i b i l e      

i n t e r c e t t a r e s o l o m e t o d i p u b b l i c i    . 

I l s e t c o m p l e t o d i i n d i c a t o r i d i A s p e c t J n e c o m p r e n d e a l c u n i c h e n o n s o n o s u p p o r t a t i    

d a S p r i n g A O P : c a l l , g e t , s e t , p r e i n i t i a l i z a t i o n , s t a t i c i n i t i a l i z a t i o n , i n i t i a l i z a t i o n , h a n d l e r ,  

a d v i c e e x e c u t i o n , w i t h i n c o d e , c o w , c o w b e l o w , i f , @ t h i s e @ w i t h i n c o d e . U t i l i z z a r e q u e s t i    

c a u s a i l s o l l e v a m e n t o d i u n a      I l l e g a l A r g u m e n t E x c e p t i o n      e c c e z i o n e .  

P r o b a b i l m e n t e i l s e t c o r r e n t e m e n t e s u p p o r t a t o d a S p r i n g A O P s a r à a m p l i a t o n e l l e v e r s i o n i    

s u c c e s s i v e .  

S p r i n g A O P i n o l t r e s u p p o r t a u n a l t r o P C D c h i a m a t o      b e a n      . Q u e s t o p e r m e t t e i l m a t c h i n g      

c o n i j o i n p o i n t c h e r i g u a r d a n o u n p a r t i c o l a r e b e a n , p a s s a n d o g l i i l n o m e c h e e s s o h a a l l ' i n t e r n o      

d e l c o n t a i n e r . Q u e s t o i n d i c a t o r e h a l a s e g u e n t e f o r m a :  

b e a n ( i d O r N a m e o f B e a n )    

Q u e s t o i n d i c a t o r e è s p e c i c o d i S p r i n g A O P e q u i n d i n o n e s i s t e i n A s p e c t J .  

4 . 2 . 3 . 2 C o m b i n a r e l e e s p r e s s i o n i d e i p o i n t c u t    

L e e s p r e s s i o n i d e i p o i n t c u t p o s s o n o e s s e r e c o m b i n a t e u s a n d o g l i o p e r a t o r i ' & & ' , ' | | ' e ' ! ' . E '  

i n o l t r e p o s s i b i l e r i f e r i r s i a l l ' e s p r e s s i o n e d i u n p o i n t c u t a t t r a v e r s o i l s u o n o m e . L ' e s e m p i o c h e      

s e g u e m o s t r a t r e p o i n t c u t :  

/ / i n t e r c e t t a l ' e s e c u z i o n e d i o g n i m e t o d o p u b b l i c o      

@ P o i n t c u t ( " e x e c u t i o n ( p u b l i c * * ( . . ) ) " )    

p r i v a t e v o i d a n y P u b l i c O p e r a t i o n ( ) { }      

/ / i n t e r c e t t a l ' e s e c u z i o n e d i t u t t i i m e t o d i n e l p a c k a g e t r a d i n g      

@ P o i n t c u t ( " w i t h i n ( c o m . x y z . s o m e a p p . t r a d i n g . . * ) " )    

p r i v a t e v o i d i n T r a d i n g ( ) { }      

/ / i n t e r c e t t a l ' e s e c u z i o n e d i t u t t i i m e t o d i p u b b l i c i n e l p a c k a g e t r a d i n g      

@ P o i n t c u t ( " a n y P u b l i c O p e r a t i o n ( ) & & i n T r a d i n g ( ) " )    

p r i v a t e v o i d t r a d i n g O p e r a t i o n ( ) { }      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 46/86

 

C A P I T O L O 4 . S P R I N G A O P         3 9   

E ' u n a b u o n a a b i t u d i n e c o s t r u i r e e s p r e s s i o n i c o m p l e s s e i n q u e s t o m o d o . Q u a n d o c i s i    

r i f e r i s c e a i p o i n t c u t t r a m i t e i l l o r o n o m e , v e n g o n o a p p l i c a t e l e r e g o l e d i v i s i b i l i t à d i J a v a ( p u o i    

v e d e r e p o i n t c u t    p r i v a t e      n e l l o s t e s s o t i p o ,   p r o t e c t e d      n e l l o s t e s s o p a c k a g e e      p u b l i c      o v u n q u e ) .  

L a v i s i b i l i t à n o n i n c i d e s u l l ' a p p l i c a z i o n e d e i p o i n t c u t .  

4 . 2 . 3 . 3 C o n d i v i d e r e l e d e n i z i o n i d e i p o i n t c u t i n c o m u n e      

M o l t o s p e s s o n e l l e a p p l i c a z i o n i e n t e r p r i s e u n p o i n t c u t n o n è l e g a t o a d u n s i n g o l o a s p e t t o ,  

m a p u ò e s s e r e c o n d i v i s o t r a v a r i a s p e t t i d i v e r s i . P u ò e s s e r e u t i l e q u i n d i d e n i r l i a l l ' i n t e r n o      

d i u n ' u n i c a c l a s s e . S a r à p o s s i b i l e p o i p o t e r s i r i f e r i r e a d e s s i i n q u a l u n q u e m o m e n t o e d a      

q u a l u n q u e p u n t o d e l l ' a p p l i c a z i o n e . P e r e s e m p i o :  

@ A s p e c t      

p u b l i c c l a s s S y s t e m A r c h i t e c t u r e {      

/ * *   

* I n t e r c e t t a z i o n e d i q u a l u n q u e m e t o d o n e l l o s t r a t o w e b      

* /   

@ P o i n t c u t ( " w i t h i n ( c o m . x y z . s o m e a p p . w e b . . * ) " )    

p u b l i c v o i d i n W e b L a y e r ( ) { }      

/ * *   

* I n t e r c e t t a z i o n e d i q u a l u n q u e m e t o d o n e l l o s t r a t o d e i s e r v i z i      

* /   

@ P o i n t c u t ( " w i t h i n ( c o m . x y z . s o m e a p p . s e r v i c e . . * ) " )    

p u b l i c v o i d i n S e r v i c e L a y e r ( ) { }      

/ * *   

* I n t e r c e t t a z i o n e d i q u a l u n q u e m e t o d o n e l l o s t r a t o d a o      

* /   

@ P o i n t c u t ( " w i t h i n ( c o m . x y z . s o m e a p p . d a o . . * ) " )    

p u b l i c v o i d i n D a t a A c c e s s L a y e r ( ) { }      

/ * *   

* U n s e r v i z i o b u s i n e s s è l ' e s e c u z i o n e d i o g n i m e t o d o d e f i n i t o n e l l ' i n t e r f a c c i a      

* s e r v i c e . Q u e s t a d e f i n i z i o n e p a r t e d a l p r e s u p p o s t o c h e l e i n t e r f a c c e s o n o      

* p r e s e n t i a l l ' i n t e r n o d e l p a c k a g e " s e r v i c e " e l e i m p l e m e n t a z i o n i s o n o n e i      

* s o t t o - p a c k a g e .    

*   

* S e s i r a g g r u p p a n o l e i n t e r f a c c e d e i s e r v i z i p e r a r e e f u n z i o n a l i ( p e r e s e m p i o ,    

* n e l p a c k a g e c o m . x y z . s o m e a p p . a b c . s e r v i c e e c o m . x y z . d e f . s e r v i c e ) a l l o r a p o t r e b b e      

* e s s e r e u s a t a l ' e s p r e s s i o n e " e x e c u t i o n ( * c o m . x y z . s o m e a p p . . s e r v i c e . * . * ( . . ) ) " .    

*   

* A l t e r n a t i v a m e n t e , s i p u ò s c r i v e r e l ' e s p r e s s i o n e u s a n d o i l P C D ' b e a n ' , c o m e      

* " b e a n ( * S e r v i c e ) " ( q u e s t o p a r t e d a l p r e s u p p o s t o c h e s i a s t a t o u s a t o u n c r i t e r i o      

* c o e r e n t e n e l l ' a s s e g n a z i o n e d e i n o m i d e i b e a n ) .    

* /   

@ P o i n t c u t ( " e x e c u t i o n ( * c o m . x y z . s o m e a p p . s e r v i c e . * . * ( . . ) ) " )    

p u b l i c v o i d b u s i n e s s S e r v i c e ( ) { }      

/ * *   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 47/86

 

C A P I T O L O 4 . S P R I N G A O P         4 0   

* U n ' o p e r a z i o n e d i d a t a a c c e s s c o r r i s p o n d e a l l ' e s e c u z i o n e d i o g n i m e t o d o d e f i n i t o      

* n e l l ' i n t e r f a c c i a d a o . Q u e s t o p a r t e d a l p r e s u p p o s t o c h e l e i n t e r f a c c e s o n o s t a t e      

* d e f i n i t e a l l ' i n t e r n o d e l p a c k a g e " d a o " e l e l o r o i m p l e m e n t a z i o n i i n s o t t o - p a c k a g e .    

* /   

@ P o i n t c u t ( " e x e c u t i o n ( * c o m . x y z . s o m e a p p . d a o . * . * ( . . ) ) " )    

p u b l i c v o i d d a t a A c c e s s O p e r a t i o n ( ) { }      

}   

4 . 2 . 3 . 4 A l c u n i e s e m p i    

G l i u t e n t i d i S p r i n g A O P u t i l i z z a n o m o l t o s p e s s o l ' i n d i c a t o r e      e x e c u t i o n      . T a l e i n d i c a t o r e h a l a      

s e g u e n t e f o r m a :  

e x e c u t i o n ( m o d i f i e r s - p a t t e r n ?      

r e t - t y p e - p a t t e r n d e c l a r i n g - t y p e - p a t t e r n ?      

n a m e - p a t t e r n ( p a r a m - p a t t e r n ) t h r o w s - p a t t e r n ? )    

T u t t e l e p a r t i t r a n n e i l t i p o d i r i t o r n o ( r e - t y p e - p a t t e r n ) s o n o o p z i o n a l i .  

I l t i p o d i r i t o r n o d e t e r m i n a q u a l e d e v ' e s s e r e i l t i p o d i r i t o r n o d e i m e t o d i c h e s i i n t e n d e      

i n t e r c e t t a r e . M o l t o s p e s s o s i u s a l ' a s t e r i s c o ( * ) p e r i n d i c a r e c h e v a b e n e q u a l u n q u e t i p o d i    

r i t o r n o . Q u a n d o n e v i e n e s p e c i c a t o u n o , i l p o i n t c u t m a t c h e r à s o l o c o n t u t t i i m e t o d i c h e ,  

o l t r e a r i s p e t t a r e i l r e s t o d e l l ' e s p r e s s i o n e , r i t o r n a n o i l t i p o i n d i c a t o .  

I l   n a m e - p a t t e r n      m a t c h a c o n i l n o m e d e l m e t o d o . E ' p o s s i b i l e u s a r e l ' a s t e r i s c o i n q u a l u n q u e      

p a r t e d e l n o m e . A d e s e m p i o :  

" e x e c u t i o n ( * e s e m p i o s p r i n g . P i p p o . a b * ( . . ) ) "      

/ / m e t o d i d e l l a c l a s s e P i p p o      

p u b l i c v o i d a b a ( ) ;    

p u b l i c v o i d a b b ( ) ;    

p u b l i c v o i d a c a ( ) ;    

I m e t o d i    a b a ( )    e    a b b ( )    v e r r a n n o i n t e r c e t t a t i . I l m e t o d o      a c a ( )    n o n v e r r à i n t e r c e t t a t o .  

I l   p a r a m - p a t t e r n      è u n p o ' p i ù c o m p l i c a t o : ( ) m a t c h a u n m e t o d o c h e n o n p r e n d e p a r a m e t r i ,  

m e n t r e ( . . ) m a t c h a c o n q u a l u n q u e n u m e r o d i p a r a m e t r i ( z e r o o p i ù ) . I l p a t t e r n ( * ) m a t c h a      

c o n i m e t o d i c h e p r e n d o n o u n s o l o p a r a m e t r o ( d i q u a l u n q u e t i p o ) , ( * , S t r i n g ) m a t c h a c o n      

i m e t o d i c h e p r e n d o n o d u e p a r a m e t r i , d i c u i i l s e c o n d o n e c e s s a r i a m e n t e d i t i p o S t r i n g . P e r    

m a g g i o r i i n f o r m a z i o n i c o n s u l t a r e l a s e z i o n e      L a n g u a g e S e m a n t i c s      d i A s p e c t J P r o g r a m m i n g      

G u i d e [ T e a 0 3 ] .  

Q u e l l i c h e s e g u o n o s o n o a l c u n i e s e m p i :  

      e s e c u z i o n e d i q u a l u n q u e m e t o d o p u b b l i c o      

e x e c u t i o n ( p u b l i c * * ( . . ) )    

       e s e c u z i o n e d i o g n i m e t o d o c o n i l n o m e c h e i n i z i a p e r ' s e t '  

e x e c u t i o n ( * s e t * ( . . ) )    

       e s e c u z i o n e d i o g n i m e t o d o d e n i t o n e l l ' i n t e r f a c c i a A c c o u n t S e r v i c e      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 48/86

 

C A P I T O L O 4 . S P R I N G A O P         4 1   

e x e c u t i o n ( * c o m . x y z . s e r v i c e . A c c o u n t S e r v i c e . * ( . . ) )    

       e s e c u z i o n e d i o g n i m e t o d o d e n i t o n e l p a c k a g e s e r v i c e      

e x e c u t i o n ( * c o m . x y z . s e r v i c e . * . * ( . . ) )    

      e s e c u z i o n e d i o g n i m e t o d o d e n i t o n e l p a c k a g e s e r v i c e o i n u n q u a l u n q u e s o t t o p a c k a g e      

e x e c u t i o n ( * c o m . x y z . s e r v i c e . . * . * ( . . ) )    

      o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) n e l p a c k a g e s e r v i c e      

w i t h i n ( c o m . x y z . s e r v i c e . * )    

       o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) n e l p a c k a g e s e r v i c e      

o i n u n q u a l u n q u e s o t t o - p a c k a g e      

w i t h i n ( c o m . x y z . s e r v i c e . . * )    

       o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) d o v e i l p r o x y i m -    

p l e m e n t a l ' i n t e r f a c c i a A c c o u n t S e r v i c e .   t h i s      è u s a t o a n c h e n e l l a f o r m a c o n g i u n t a c h e s i    

v e d r à i n 4 . 2 . 4 . 6 .  

t h i s ( c o m . x y z . s e r v i c e . A c c o u n t S e r v i c e )    

       o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) d o v e l ' o g g e t t o t a r g e t    

i m p l e m e n t a l ' i n t e r f a c c i a A c c o u n t S e r v i c e .   t a r g e t    è u s a t o a n c h e n e l l a f o r m a c o n g i u n t a c h e      

s i v e d r à i n 4 . 2 . 4 . 6 .  

t a r g e t ( c o m . x y z . s e r v i c e . A c c o u n t S e r v i c e )    

       o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) c h e p r e n d e u n s i n g o l o      

p a r a m e t r o e d o v e l ' a r g o m e n t o p a s s a t o a r u n t i m e è S e r i a l i z a b l e .   a r g s      è u s a t o a n c h e n e l l a      

f o r m a c o n g i u n t a c h e s i v e d r à i n 4 . 2 . 4 . 6 . D a n o t a r e c h e l a s e g u e n t e s c r i t t u r a è d i v e r s a d a      

e x e c u t i o n ( * * ( j a v a . i o . S e r i a l i z a b l e ) )    : l a v e r s i o n e c o n      a r g s      m a t c h a s e i l p a r a m e t r o p a s s a t o      

è    S e r i a l i z a b l e      a r u n t i m e , m e n t r e      e x e c u t i o n      p r e v e d e u n p a r a m e t r o d i t i p o      S e r i a l i z a b l e      g i à   

n e l l a r m a d e l m e t o d o .  

a r g s ( j a v a . i o . S e r i a l i z a b l e )    

       o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) d o v e l ' o g g e t t o t a r g e t    

h a l ' a n n o t a z i o n e      @ T r a n s a c t i o n a l    . @ t a r g e t è u s a t o a n c h e n e l l a f o r m a c o n g i u n t a c h e s i    

v e d r à i n 4 . 2 . 4 . 6 .  

@ t a r g e t ( o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . a n n o t a t i o n . T r a n s a c t i o n a l )    

      o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) d o v e i l t i p o d i c h i a r a t o      

d e l l ' o g g e t t o t a r g e t h a l ' a n n o t a z i o n e      @ T r a n s a c t i o n a l    . @ w i t h i n è u s a t o a n c h e n e l l a      

f o r m a c o n g i u n t a c h e s i v e d r à i n 4 . 2 . 4 . 6 .  

@ w i t h i n ( o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . a n n o t a t i o n . T r a n s a c t i o n a l )    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 49/86

 

C A P I T O L O 4 . S P R I N G A O P         4 2   

      o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) d o v e i l m e t o d o i n      

e s e c u z i o n e h a l ' a n n o t a z i o n e      @ T r a n s a c t i o n a l    . @ a n n o t a t i o n è u s a t o a n c h e n e l l a f o r m a      

c o n g i u n t a c h e s i v e d r à i n 4 . 2 . 4 . 6 .  

@ a n n o t a t i o n ( o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . a n n o t a t i o n . T r a n s a c t i o n a l )    

       o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) c h e p r e n d e u n s i n g o l o      

p a r a m e t r o e d o v e i l t i p o d i a r g o m e n t o p a s s a t o a r u n t i m e h a l ' a n n o t a z i o n e      @ C l a s s i e d      . 

@ a r g s è u s a t o a n c h e n e l l a f o r m a c o n g i u n t a c h e s i v e d r à i n 4 . 2 . 4 . 6 .  

@ a r g s ( c o m . x y z . s e c u r i t y . C l a s s i f i e d )    

       o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) s u l b e a n d i S p r i n g      

c h i a m a t o ' t r a d e S e r v i c e '  

b e a n ( t r a d e S e r v i c e )    

       o g n i j o i n p o i n t ( n e l c a s o d i S p r i n g A O P s o l o e s e c u z i o n e d i m e t o d i ) s u i b e a n d i S p r i n g      

c h e h a n n o i l n o m e c h e m a t c h a c o n l ' e s p r e s s i o n e ' * S e r v i c e '  

b e a n ( * S e r v i c e )    

4 . 2 . 4 D i c h i a r a r e u n a d v i c e      

U n a d v i c e v i e n e a s s o c i a t o c o n l ' e s p r e s s i o n e d i u n p o i n t c u t , e p a r t e p r i m a , d o p o o d u r a n t e      

l ' e s e c u z i o n e d e l m e t o d o m a t c h a t o d a l p o i n t c u t .  

4 . 2 . 4 . 1 B e f o r e      

U n a d v i c e v i e n e d i c h i a r a t o c o m e      b e f o r e      i n u n a s p e t t o t r a m i t e l ' a n n o t a z i o n e      @ B e f o r e      : 

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A s p e c t ;    

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . B e f o r e ;    

@ A s p e c t      

p u b l i c c l a s s B e f o r e E x a m p l e {      

@ B e f o r e ( " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . d a t a A c c e s s O p e r a t i o n ( ) " )    

p u b l i c v o i d d o A c c e s s C h e c k ( ) {      

/ / . . .    

}   

}   

I n q u e s t o e s e m p i o a b b i a m o p a s s a t o a l l ' a n n o t a z i o n e i l n o m e d e l p o i n t c u t a c u i f a r e r i f e r i -    

m e n t o . P o s s i a m o p e r ò p a s s a r g l i d i r e t t a m e n t e l ' e s p r e s s i o n e d e l p o i n t c u t :  

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A s p e c t ;    

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . B e f o r e ;    

@ A s p e c t      

p u b l i c c l a s s B e f o r e E x a m p l e {      

@ B e f o r e ( " e x e c u t i o n ( * c o m . x y z . m y a p p . d a o . * . * ( . . ) ) " )    

p u b l i c v o i d d o A c c e s s C h e c k ( ) {      

/ / . . .    

}   

}   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 50/86

 

C A P I T O L O 4 . S P R I N G A O P         4 3   

4 . 2 . 4 . 2 A f t e r r e t u r n i n g      

U n a d v i c e d i q u e s t o t i p o p a r t e q u a n d o i l m e t o d o i n t e r c e t t a t o r e t u r n u n v a l o r e ( t e r m i n a s e n z a      

e r r o r i ) . V i e n e d i c h i a r a t o u t i l i z z a n d o l ' a n n o t a z i o n e      @ A f t e r R e t u r n i n g      : 

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A s p e c t ;    

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A f t e r R e t u r n i n g ;    

@ A s p e c t      

p u b l i c c l a s s A f t e r R e t u r n i n g E x a m p l e {      

@ A f t e r R e t u r n i n g ( " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . d a t a A c c e s s O p e r a t i o n ( ) " )    

p u b l i c v o i d d o A c c e s s C h e c k ( ) {      

/ / . . .    

}   

}   

O v v i a m e n t e è p o s s i b i l e a v e r e p i ù a d v i c e d i c h i a r a t i a l l ' i n t e r n o d e l l o s t e s s o a s p e t t o . I n q u e s t i    

e s e m p i n e v i e n e m o s t r a t o s o l o u n o p e r v o l t a p e r f o c a l i z z a r s i s u q u e l l o d i c u i s i s t a d i s c u t e n d o .    

Q u a l c h e v o l t a p u ò e s s e r e n e c e s s a r i o , n e l c o r p o d e l l ' a d v i c e , a c c e d e r e a l v a l o r e a t t u a l e r i t o r -    

n a t o d a l m e t o d o i n t e r c e t t a t o . E ' p o s s i b i l e u t i l i z z a r e u n a f o r m a c h e c o n s e n t a d i u t i l i z z a r e t a l e      

v a l o r e :  

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A s p e c t ;    

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A f t e r R e t u r n i n g ;    

@ A s p e c t      

p u b l i c c l a s s A f t e r R e t u r n i n g E x a m p l e {      

@ A f t e r R e t u r n i n g (      

p o i n t c u t = " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . d a t a A c c e s s O p e r a t i o n ( ) " ,    

r e t u r n i n g = " r e t V a l " )    

p u b l i c v o i d d o A c c e s s C h e c k ( O b j e c t r e t V a l ) {      

/ / . . .    

}   

}   

I l n o m e u s a t o n e l l ' a t t r i b u t o d i r i t o r n o d e v e c o r r i s p o n d e r e a l n o m e d e l p a r a m e t r o n e l m e t o -    

d o d e l l ' a d v i c e . Q u a n d o i l m e t o d o i n e s e c u z i o n e r i t o r n a u n v a l o r e , t a l e v a l o r e s a r à p a s s a t o a l    

m e t o d o d e l l ' a d v i c e a t t r a v e r s o i l c o r r i s p o n d e n t e a r g o m e n t o . L a c l a u s o l a      r e t u r n i n g      r e s t r i n g e i l    

m a t c h i n g s o l o a q u e i m e t o d i c h e r i t o r n a n o u n v a l o r e d i u n t i p o s p e c i c a t o ( i n q u e s t o c a s o      

O b j e c t    ) . 

4 . 2 . 4 . 3 A f t e r t h r o w i n g      

Q u e s t o t i p o d i a d v i c e p a r t e q u a n d o m a t c h a c o n u n m e t o d o c h e t e r m i n a s o l l e v a n d o u n ' e c -    

c e z i o n e . E ' d i c h i a r a t o u t i l i z z a n d o l ' a n n o t a z i o n e      @ A f t e r T h r o w i n g      : 

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A s p e c t ;    

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A f t e r T h r o w i n g ;    

@ A s p e c t      

p u b l i c c l a s s A f t e r T h r o w i n g E x a m p l e {      

@ A f t e r T h r o w i n g ( " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . d a t a A c c e s s O p e r a t i o n ( ) " )    

p u b l i c v o i d d o R e c o v e r y A c t i o n s ( ) {      

/ / . . .    

}   

}   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 51/86

 

C A P I T O L O 4 . S P R I N G A O P         4 4   

S p e s s o s i v u o l e c h e l ' a d v i c e v e n g a e s e g u i t o s o l o s e è s t a t a s o l l e v a t a u n ' e c c e z i o n e d i u n c e r t o      

t i p o , e i n o l t r e s i v u o l e a c c e d e r e a l l ' e c c e z i o n e a l l ' i n t e r n o d e l l ' a d v i c e :  

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A s p e c t ;    

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A f t e r T h r o w i n g ;    

@ A s p e c t      

p u b l i c c l a s s A f t e r T h r o w i n g E x a m p l e {      

@ A f t e r T h r o w i n g (      

p o i n t c u t = " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . d a t a A c c e s s O p e r a t i o n ( ) " ,    

t h r o w i n g = " e x " )    

p u b l i c v o i d d o R e c o v e r y A c t i o n s ( D a t a A c c e s s E x c e p t i o n e x ) {      

/ / . . .    

}   

}   

I l n o m e u s a t o n e l l ' a t t r i b u t o d i r i t o r n o d e v e c o r r i s p o n d e r e a l n o m e d e l p a r a m e t r o n e l m e t o -    

d o d e l l ' a d v i c e . Q u a n d o i l m e t o d o i n e s e c u z i o n e r i t o r n a u n ' e c c e z i o n e , e s s a s a r à p a s s a t a a l    

m e t o d o d e l l ' a d v i c e a t t r a v e r s o i l c o r r i s p o n d e n t e a r g o m e n t o . L a c l a u s o l a      t h r o w i n g      r e s t r i n g e i l    

m a t c h i n g s o l o a q u e i m e t o d i c h e r i t o r n a n o u n ' e c c e z i o n e d i u n t i p o s p e c i c a t o ( i n q u e s t o c a s o      

D a t a A c c e s s E x c e p t i o n      ) . 

4 . 2 . 4 . 4 A f t e r ( n a l l y )    

Q u e s t o a d v i c e p a r t e q u a n d o u n m e t o d o t e r m i n a , i n q u a l u n q u e m o d o . V i e n e d i c h i a r a t o c o n      

l ' a n n o t a z i o n e      @ A f t e r      . T a l e a d v i c e d e v ' e s s e r e p r e p a r a t o a g e s t i r e s i a l a s i t u a z i o n e d i r i t o r n o      

n o r m a l e , s i a l e e v e n t u a l i c o n d i z i o n i d i e c c e z i o n e . T i p i c a m e n t e v i e n e u t i l i z z a t o p e r i l r i l a s c i o      

d e l l e r i s o r s e , e c c .  

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A s p e c t ;    

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A f t e r ;    

@ A s p e c t      

p u b l i c c l a s s A f t e r F i n a l l y E x a m p l e {      

@ A f t e r ( " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . d a t a A c c e s s O p e r a t i o n ( ) " )    

p u b l i c v o i d d o R e l e a s e L o c k ( ) {      

/ / . . .    

}   

}   

4 . 2 . 4 . 5 A r o u n d      

L ' u l t i m o t i p o d i a d v i c e è l '  a r o u n d      . Q u e s t o a d v i c e p a r t e i n t o r n o a l m e t o d o i n t e r c e t t a t o . H a      

l ' o p p o r t u n i t à , i n f a t t i , d i l a v o r a r e s i a p r i m a s i a d o p o l ' e s e c u z i o n e d e l m e t o d o , e d i d e t e r m i n a r e      

q u a n d o , c o m e e s e i l m e t o d o a t t u a l m e n t e i n e s e c u z i o n e e e t t u a c o m p l e t a m e n t e i l s u o l a v o r o .  

T a l e a d v i c e è s p e s s o u s a t o p e r c o n d i v i d e r e l o s t a t o p r i m a e d o p o l ' e s e c u z i o n e d e l m e t o d o i n      

m a n i e r a t h r e a d - s a f e ( f a c e n d o p a r t i r e e s t o p p a n d o u n t i m e r , p e r e s e m p i o ) .  

Q u e s t o a d v i c e v i e n e d i c h i a r a t o u s a n d o l ' a n n o t a z i o n e      @ A r o u n d      . I l p r i m o p a r a m e t r o d e l -    

l ' a d v i c e d e v e e s s e r e d i t i p o      P r o c e e d i n g J o i n P o i n t    . A l l ' i n t e r n o d e l c o r p o d e l l ' a d v i c e , c h i a m a n d o      

p r o c e e d ( )    s u l   P r o c e e d i n g J o i n P o i n t    v i e n e e v i d e n z i a t o i l m e t o d o c h e è i n e s e c u z i o n e . T u t t o c i ò      

c h e v e r r à s c r i t t o p r i m a , v e r r à e s e g u i t o p r i m a d e l m e t o d o i n t e r c e t t a t o e t u t t o c i ò c h e v e r r à      

s c r i t t o d o p o v e r r à e s e g u i t o d o p o i l m e t o d o i n t e r c e t t a t o . Q u e s t a f u n z i o n e p u ò e s s e r e c h i a m a -    

t a a n c h e p a s s a n d o u n O b j e c t [ ] . I v a l o r i n e l l ' a r r a y s a r a n n o u s a t i c o m e a r g o m e n t i a l m e t o d o      

q u a n d o a n d r à i n e s e c u z i o n e .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 52/86

 

C A P I T O L O 4 . S P R I N G A O P         4 5   

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A s p e c t ;    

i m p o r t o r g . a s p e c t j . l a n g . a n n o t a t i o n . A r o u n d ;    

i m p o r t o r g . a s p e c t j . l a n g . P r o c e e d i n g J o i n P o i n t ;    

@ A s p e c t      

p u b l i c c l a s s A r o u n d E x a m p l e {      

@ A r o u n d ( " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . b u s i n e s s S e r v i c e ( ) " )    

p u b l i c O b j e c t d o B a s i c P r o f i l i n g ( P r o c e e d i n g J o i n P o i n t p j p ) t h r o w s T h r o w a b l e {      

/ / s t a r t s t o p w a t c h      

S y s t e m . o u t . p r i n t l n ( " P r i m a d e l m e t o d o " ) ;    

O b j e c t r e t V a l = p j p . p r o c e e d ( ) ;    

/ / s t o p s t o p w a t c h      

S y s t e m . o u t . p r i n t l n ( " D o p o i l m e t o d o " ) ;    

r e t u r n r e t V a l ;    

}   

}   

I l v a l o r e r i t o r n a t o d a l l ' a r o u n d a d v i c e s a r à i l v a l o r e d i r i t o r n o v i s t o d a l l ' i n v o c a t o r e d e l    

m e t o d o . U n s e m p l i c e a s p e t t o c h e f a c a c h i n g , p e r e s e m p i o , p o t r e b b e r i t o r n a r e u n v a l o r e d a      

u n a c a c h e s e n e h a u n a , e i n v o c a r e p r o c e e d ( ) s e n o n c e l ' h a . D a n o t a r e c h e p r o c e e d p u ò e s s e r e      

i n v o c a t o u n a v o l t a , m o l t e v o l t e o n e s s u n a v o l t a a l l ' i n t e r n o d e l c o r p o d e l l ' a r o u n d d e v i c e . T u t t e      

q u e s t e o p z i o n i s o n o a s s o l u t a m e n t e l e g a l i .  

4 . 2 . 4 . 6 G e s t i o n e d e i p a r a m e t r i    

A c c e s s o a l    J o i n P o i n t      c o r r e n t e      O g n i a d v i c e p u ò d i c h i a r a r e c o m e s u o p r i m o p a r a m e t r o u n      

p a r a m e t r o d i t i p o      o r g . a s p e c t j . l a n g . J o i n P o i n t    ( n o t a r e c h e l ' a r o u n d a d v i c e r i c h i e d e l a d i c h i a r a z i o n e      

d i u n p r i m o p a r a m e t r o d i t i p o      P r o c e e d i n g J o i n P o i n t    c h e è u n a s o t t o c l a s s e d i    J o i n P o i n t    ) . 

L ' i n t e r f a c c i a J o i n P o i n t e s p o n e u n c e r t o n u m e r o d i m e t o d i u t i l i c o m e      g e t A r g s ( )    ( r i t o r n a g l i    

a r g o m e n t i d e l m e t o d o ) ,   g e t T h i s ( )    ( r i t o r n a l ' o g g e t t o p r o x y ) ,   g e t T a r g e t ( )    ( r i t o r n a l ' o g g e t t o t a r -    

g e t ) ,   g e t S i g n a t u r e ( )    ( r i t o r n a u n a d e s c r i z i o n e d e l m e t o d o c h e è s t a t o i n t e r c e t t a t o ) e      t o S t r i n g ( )    

( s t a m p a u n a d e s c r i z i o n e d e l m e t o d o i n t e r c e t t a t o ) . C o n s u l t a r e i l J a v a d o c s p e r m a g g i o r i    

d e t t a g l i .  

P a s s a r e p a r a m e t r i a l l ' a d v i c e      A b b i a m o v i s t o c o m e r e c u p e r a r e u n v a l o r e d i r i t o r n o o u n ' e c -    

c e z i o n e . P e r r e n d e r e i v a l o r e d e g l i a r g o m e n t i d i s p o n i b i l i a l l ' a d v i c e , è p o s s i b i l e u s a r e l a f o r m a      

c o n g i u n t a d i    a r g s      . S e i l n o m e d i u n p a r a m e t r o è u s a t o a l p o s t o d e l n o m e s c r i t t o n e l l ' e s p r e s -    

s i o n e d e l d e s c r i t t o r e      a r g s      , a l l o r a i l v a l o r e d e l l ' a r g o m e n t o c o r r i s p o n d e n t e s a r à p a s s a t o c o m e      

v a l o r e q u a n d o l ' a d v i c e v i e n e i n v o c a t o . U n e s e m p i o r e n d e r à p i ù c h i a r o . S u p p o n i a m o d i v o l e r    

i n t e r c e t t a r e l ' e s e c u z i o n e d i u n m e t o d o d e l d a o c h e p r e n d e u n o g g e t t o      A c c o u n t    c o m e p r i -    

m o p a r a m e t r o e d i v o l e r a c c e d e r e a q u e s t ' o g g e t t o a l l ' i n t e r n o d e l l ' a d v i c e . P o s s i a m o s c r i v e r e      

q u a l c o s a d e l g e n e r e :  

@ B e f o r e ( " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . d a t a A c c e s s O p e r a t i o n ( ) & & " +      

" a r g s ( a c c o u n t , . . ) " )    

p u b l i c v o i d v a l i d a t e A c c o u n t ( A c c o u n t a c c o u n t ) {      

/ / . . .    

}   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 53/86

 

C A P I T O L O 4 . S P R I N G A O P         4 6   

L a p a r t e a r g s ( a c c o u n t , . . ) d e l l ' e s p r e s s i o n e d e l p o i n t c u t s o d d i s f a d u e s c o p i : r e s t r i n g e i l    

m a t c h i n g s o l o a q u e i m e t o d i c h e p r e n d o n o a l m e n o u n p a r a m e t r o e c h e t a l e p a r a m e t r o è      

u n ' i s t a n z a d i    A c c o u n t    ; r e n d e l ' o g g e t t o      A c c o u n t    a t t u a l e d i s p o n i b i l e a l l ' a d v i c e a t t r a v e r s o i l    

p a r a m e t r o      a c c o u n t    . 

L ' o g g e t t o p r o x y (    t h i s      ) , l ' o g g e t t o t a r g e t (    t a r g e t    ) e l e a n n o t a z i o n i (    @ w i t h i n      ,  @ t a r g e t    , 

@ a n n o t a t i o n      ,  @ a r g s      ) p o s s o n o t u t t e e s s e r e u s a t e n e l l o s t e s s o m o d o .  

4 . 2 . 4 . 7 P r i o r i t à      

C o s a s u c c e d e q u a n d o p i ù a d v i c e d e v o n o p a r t i r e i n c o r r i s p o n d e n z a d e l l o s t e s s o j o i n p o i n t ?      

S p r i n g A O P s e g u e l e s t e s s e r e g o l e d i p r e c e d e n z a d i A s p e c t J p e r d e t e r m i n a r e l e p r i o r i t à d i    

e s e c u z i o n e . L ' a d v i c e c o n p r e c e d e n z a p i ù a l t a p a r t e p e r p r i m o o n t h e w a y i n ( q u i n d i d a t i t u e      

a d v i c e b e f o r e , q u e l l o c o n p r e c e d e n z a m a g g i o r e p a r t e p e r p r i m o ) . A l l ' u s c i t a d i u n j o i n p o i n t    

( o n t h e w a y o u t ) , l ' a d v i c e c o n p r e c e d e n z a p i ù a l t a p a r t e p e r u l t i m o .  

Q u a n d o d u e a d v i c e d e n i t i i n a s p e t t i d i e r e n t i h a n n o b i s o g n o e n t r a m b i d i p a r t i r e s u l l o      

s t e s s o j o i n p o i n t , a m e n o c h e n o n s i a s t a t o s p e c i c a t o d i v e r s a m e n t e , l ' o r d i n e d i e s e c u z i o n e n o n      

è d e n i t o . E ' p o s s i b i l e c o n t r o l l a r l o s p e c i c a n d o l e p r i o r i t à . Q u e s t o p u ò e s s e r e f a t t o n e l m o d o      

n o r m a l e d i S p r i n g i m p l e m e n t a n d o l ' i n t e r f a c c i a      o r g . s p r i n g f r a m e w o r k . c o r e . O r d e r e d      n e l l ' a s p e t t o      

o a n n o t a n d o l o c o n l ' a n n o t a z i o n e      @ O r d e r      . D a t i d u e a s p e t t i , l ' a s p e t t o c h e r e s t i t u i s c e i l v a l o r e      

p i ù b a s s o c o n      O r d e r e d . g e t V a l u e ( )    ( o i l v a l o r e d e l l ' a n n o t a z i o n e ) h a l a p r e c e d e n z a p i ù a l t a .  

Q u a n d o d u e a d v i c e d e n i t i n e l l o s t e s s o a s p e t t o h a n n o b i s o g n o e n t r a m b i d i p a r i r e s u l l o      

s t e s s o j o i n p o i n t , l ' o r d i n e d i e s e c u z i o n e n o n è d e n i t o e n o n è p o s s i b i l e r e c u p e r a r e l ' o r d i n e d i    

d i c h i a r a z i o n e a t t r a v e r s o l e r e e c t i o n s . I n q u e s t o c a s o c o n s i d e r a r e u n a r i o r g a n i z z a z i o n e d e g l i    

a s p e t t i e d e g l i a d v i c e .  

4 . 2 . 5 I n t r o d u c t i o n      

L e i n t r o d u z i o n i ( n o t e i n A s p e c t J c o m e d i c h i a r a z i o n i i n t e r - t y p e ) c o n s e n t o n o a d u n a s p e t -    

t o d i d i c h i a r a r e c h e l ' o g g e t t o a d v i s e d i m p l e m e n t i u n a d a t a i n t e r f a c c i a e p r o v v e d a a l l a s u a      

i m p l e m e n t a z i o n e .  

U n ' i n t r o d u z i o n e v i e n e d e n i t a t r a m i t e l ' a n n o t a z i o n e      @ D e c l a r e P a r e n t s      . Q u e s t ' a n n o -    

t a z i o n e è u t i l i z z a t a p e r d i c h i a r a r e c h e i l t i p o c h e m a t c h a h a u n n u o v o g e n i t o r e . P e r e s e m -    

p i o , d a t a u n ' i n t e r f a c c i a      U s a g e T r a c k e d      , e u n a s u a i m p l e m e n t a z i o n e ,   D e f a u l t U s a g e T r a c k e d      , i l  

s e g u e n t e a s p e t t o d i c h i a r a c h e t u t t e l e c l a s s i c h e i m p l e m e n t a n o l e i n t e r f a c c e l e g a t e a l p a c k a g e      

s e r v i c e      , i m p l e m e n t e r a n n o a n c h e l ' i n t e r f a c c i a      U s a g e T r a c k e d      . 

@ A s p e c t      

p u b l i c c l a s s U s a g e T r a c k i n g {      

@ D e c l a r e P a r e n t s ( v a l u e = " c o m . x z y . m y a p p . s e r v i c e . * + " ,    

d e f a u l t I m p l = D e f a u l t U s a g e T r a c k e d . c l a s s )    

p u b l i c s t a t i c U s a g e T r a c k e d m i x i n ;    

@ B e f o r e ( " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . b u s i n e s s S e r v i c e ( ) & & " +      

" t h i s ( u s a g e T r a c k e d ) " )    

p u b l i c v o i d r e c o r d U s a g e ( U s a g e T r a c k e d u s a g e T r a c k e d ) {      

u s a g e T r a c k e d . i n c r e m e n t U s e C o u n t ( ) ;    

}   

}   

L ' i n t e r f a c c i a c h e d e v e e s s e r e i m p l e m e n t a t a è d e t e r m i n a t a d a l t i p o d e l c a m p o a n n o t a t o      

(   m i x i n      , d i t i p o      U s a g e T r a c k e d      . L ' a t t r i b u t o      v a l u e      d i   @ D e c l a r e P a r e n t s      è u n p a t t e r n A s p e c t J :  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 54/86

 

C A P I T O L O 4 . S P R I N G A O P         4 7   

o g n i b e a n c h e m a t c h a i m p l e m e n t e r à l ' i n t e r f a c c i a      U s a g e T r a c k e d      . V i e n e a n c h e f o r n i t a l ' i m p l e -    

m e n t a z i o n e d i d e f a u l t . D a n o t a r e c h e n e l l ' a d v i c e b e f o r e n e l l ' e s e m p i o , i b e a n s e r v i c e p o s s o n o      

e s s e r e d i r e t t a m e n t e u s a t i c o m e i m p l e m e n t a z i o n i d i    U s a g e T r a c k e d      . S e s i a c c e d e a l b e a n , s i p u ò      

s c r i v e r e :  

U s a g e T r a c k e d u s a g e T r a c k e d = ( U s a g e T r a c k e d ) c o n t e x t . g e t B e a n ( " m y S e r v i c e " ) ;    

4 . 2 . 6 M o d e l l o d i i n s t a n z i a z i o n e d i u n a s p e t t o      

D i d e f a u l t c ' è u n a s i n g o l a i s t a n z a d i o g n i a s p e t t o n e l c o n t e s t o d e l l ' a p p l i c a z i o n e . I n A s p e c t J      

q u e s t a c a r a t t e r i s t i c a v i e n e c h i a m a t a m o d e l l o s i n g l e t o n d i i n s t a n z i a z i o n e . E ' p o s s i b i l e , p e r ò ,  

d e n i r e a s p e t t i c o n c i c l i d i v i t a d i v e r s i . S p r i n g s u p p o r t a i m o d e l l i    p e r t h i s      e    p e r t a r g e t     d i  

A s p e c t J (    p e r c o w        ,  p e r c o w b e l o w        e    p e r t y p e w i t h i n      a t t u a l m e n t e n o n s o n o s u p p o r t a t i ) .  

U n a s p e t t o      p e r t h i s      v i e n e d i c h i a r a t o s p e c i c a t o l a c l a u s o l a      p e r t h i s      n e l l ' a n n o t a z i o n e      @ A s -    

p e c t    . V e d i a m o u n e s e m p i o :  

@ A s p e c t ( " p e r t h i s ( c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . b u s i n e s s S e r v i c e ( ) ) " )    

p u b l i c c l a s s M y A s p e c t {      

p r i v a t e i n t s o m e S t a t e ;    

@ B e f o r e ( c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . b u s i n e s s S e r v i c e ( ) )    

p u b l i c v o i d r e c o r d S e r v i c e U s a g e ( ) {      

/ / . . .    

}   

}   

L ' e e t t o d e l l a c l a u s o l a      p e r t h i s      è c h e v e r r à c r e a t a u n ' i n s t a n z a d e l l ' a s p e t t o p e r o g n i o g g e t -    

t o c h e e s e g u e u n s e r v i z i o d i b u s i n e s s . L ' i s t a n z a v i e n e c r e a t a l a p r i m a v o l t a c h e u n m e t o d o      

d e l l ' o g g e t t o s e r v i c e v i e n e i n v o c a t o . L ' a s p e t t o v i e n e p o i d i s t r u t t o q u a n d o l ' o g g e t t o v i e n e d i s -    

t r u t t o . P r i m a c h e l ' i s t a n z a d e l l ' a s p e t t o s i a c r e a t a , n e s s u n o d e g l i a d v i c e a l s u o i n t e r n o v i e n e      

e s e g u i t o . U n a v o l t a c r e a t a l ' i s t a n z a d e l l ' a s p e t t o , g l i a d v i c e d i c h i a r a t i a l l ' i n t e r n o s a r a n n o e s e -    

g u i t i a d o g n i m a t c h i n g c o n i j o i n p o i n t s d ' i n t e r e s s e , m a s o l o q u a n d o l ' o g g e t t o s e r v i c e è q u e l l o      

a c u i l ' i s t a n z a d e l l ' a s p e t t o è s t a t a a s s o c i a t a .  

L a c l a u s o l a      p e r t a r g e t    f u n z i o n a n e l l o s t e s s o m o d o , m a c r e a u n ' i s t a n z a d e l l ' a s p e t t o p e r o g n i    

o g g e t t o t a r g e t n e l j o i n p o i n t c h e m a t c h a .  

4 . 2 . 7 E s e m p i o      

V e d i a m o i n q u e s t o p a r a g r a f o u n s e m p l i c e e s e m p i o d e l f u n z i o n a m e n t o d i q u a n t o v i s t o n o r a .  

I m m a g i n i a m o d i a v e r e l ' i n t e r f a c c i a I D a o e l a s u a i m p l e m e n t a z i o n e D a o , v i s t e p r e c e d e n t e -    

m e n t e .  

/ / i n t e r f a c c i a      

p u b l i c i n t e r f a c e I D a o {      

p u b l i c v o i d s a l v a ( ) ;    

p u b l i c v o i d r e c u p e r a ( ) ;    

}   

/ / c l a s s e d a o      

p u b l i c c l a s s D a o i m p l e m e n t s I D a o {      

p u b l i c v o i d s a l v a ( ) {      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 55/86

 

C A P I T O L O 4 . S P R I N G A O P         4 8   

S y s t e m . o u t . p r i n t l n ( " S a l v o u n d a t o s u l d b " ) ;    

}   

p u b l i c v o i d r e c u p e r a ( ) {      

S y s t e m . o u t . p r i n t l n ( " H o r e c u p e r a t o u n d a t o d a l d b " ) ;    

}   

}   

S u p p o n i a m o d i v o l e r l o g g a r e t u t t e l e o p e r a z i o n i e e t t u a t e d a l D a o , p r i m a e d o p o l a l o r o      

e s e c u z i o n e . P o s s i a m o d e n i r e q u i n d i i l s e g u e n t e a s p e t t o :  

@ A s p e c t      

p u b l i c c l a s s L o g g e r W i t h A n n o t a t i o n {      

@ P o i n t c u t ( " e x e c u t i o n ( * e s e m p i o s p r i n g . D a o . * ( . . ) ) " )    

p u b l i c v o i d i n D a o ( ) { }      

@ B e f o r e ( " i n D a o ( ) " )    

p u b l i c v o i d b e f o r e D a o O p e r a t i o n A d v i s e ( J o i n P o i n t j p ) {      

S y s t e m . o u t . p r i n t l n ( j p . g e t T a r g e t ( ) . g e t C l a s s ( ) . g e t N a m e ( ) +      

" : S t o p e r e s e g u i r e i l m e t o d o " +      

j p . g e t S i g n a t u r e ( ) . g e t N a m e ( ) ) ;    

}   

@ A f t e r ( " i n D a o ( ) " )    

p u b l i c v o i d a f t e r D a o O p e r a t i o n A d v i s e ( J o i n P o i n t j p ) {      

S y s t e m . o u t . p r i n t l n ( j p . g e t T a r g e t ( ) . g e t C l a s s ( ) . g e t N a m e ( ) +      

" : H o e s e g u i t o i l m e t o d o " +      

j p . g e t S i g n a t u r e ( ) . g e t N a m e ( ) ) ;    

}   

}   

Q u e l l o c h e s e g u e è i l l e d i c o n g u r a z i o n e d i S p r i n g :  

< ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >      

< b e a n s x m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "      

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "      

x m l n s : a o p = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p "      

x m l n s : c o n t e x t = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / c o n t e x t "      

x s i : s c h e m a L o c a t i o n =      

" h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s / s p r i n g - b e a n s - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / c o n t e x t      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / c o n t e x t / s p r i n g - c o n t e x t - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p / s p r i n g - a o p - 2 . 5 . x s d " >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< ! - - = = = A t t i v a z i o n e A O P = = = - - >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 56/86

 

C A P I T O L O 4 . S P R I N G A O P         4 9   

< a o p : a s p e c t j - a u t o p r o x y / >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< ! - - = = = D e f i n i z i o n e a s p e t t i = = = - - >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< b e a n i d = " d a o A s p e c t " c l a s s = " e s e m p i o s p r i n g . L o g g e r W i t h A n n o t a t i o n " / >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< ! - - = = = D e f i n i z i o n e d e i b e a n s = = = - - >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< b e a n i d = " d a o " c l a s s = " e s e m p i o s p r i n g . D a o " / >      

< / b e a n s >      

I l m e t o d o      m a i n      p e r f a r e u n t e s t è i l s e g u e n t e :  

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

A p p l i c a t i o n C o n t e x t c o n t e x t =      

n e w C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t ( n e w S t r i n g [ ] { " / c o n f i g S p r i n g . x m l " } ) ;    

/ / T e s t c o n u n b e a n g e s t i t o d a l c o n t e n i t o r e      

I D a o d a o = c o n t e x t . g e t B e a n ( " d a o " , I D a o . c l a s s ) ;    

d a o . s a l v a ( ) ;    

d a o . r e c u p e r a ( ) ;    

/ / T e s t c o n u n b e a n n o n g e s t i t o d a l c o n t e n i t o r e      

I D a o a l t r o d a o = n e w D a o ( ) ;    

a l t r o d a o . s a l v a ( ) ;    

a l t r o d a o . r e c u p e r a ( ) ;    

}   

E s e g u e n d o l o , l ' o u t p u t s a r à :  

e s e m p i o s p r i n g . D a o : S t o p e r e s e g u i r e i l m e t o d o s a l v a      

S a l v o u n d a t o s u l d b      

e s e m p i o s p r i n g . D a o : H o e s e g u i t o i l m e t o d o s a l v a      

e s e m p i o s p r i n g . D a o : S t o p e r e s e g u i r e i l m e t o d o r e c u p e r a      

H o r e c u p e r a t o u n d a t o d a l d b      

e s e m p i o s p r i n g . D a o : H o e s e g u i t o i l m e t o d o r e c u p e r a      

S a l v o u n d a t o s u l d b      

H o r e c u p e r a t o u n d a t o d a l d b      

C o m e s i p u ò v e d e r e d a l l e u l t i m e d u e r i g h e , i b e a n a l d i f u o r i d e l c o n t a i n e r n o n s u b i s c o n o      

i n t e r c e t t a z i o n i .  

4 . 3 A O P c o n X M L        

S e s i è i m p o s s i b i l i t a t i a l l ' u s o d i J a v a 5 o s e m p l i c e m e n t e s i p r e f e r i s c e l a v o r a r e c o n l ' X M L ,  

S p r i n g s u p p o r t a l ' u s o d e l l ' A O P a n c h e t r a m i t e i l l e d i c o n g u r a z i o n e . S o n o s u p p o r t a t e l e      

s t e s s e e s p r e s s i o n i p e r i p o i n t c u t s e l e s t e s s e t i p o l o g i e d i a d v i c e v i s t e n e l p a r a g r a f o 4 . 2 .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 57/86

 

C A P I T O L O 4 . S P R I N G A O P         5 0   

4 . 3 . 1 D i c h i a r a r e u n a s p e t t o      

U t i l i z z a n d o l ' X M L , u n a s p e t t o v i e n e d i c h i a r a t o u s a n d o i l t a g      < a o p : a s p e c t >        , e i l b e a n c h e      

l o d e n i s c e è r e f e r e n z i a t o u s a n d o l ' a t t r i b u t o      r e f    . R i p r e n d e n d o l ' e s e m p i o v i s t o n e l p a r a g r a f o      

4 . 2 . 7 , l ' a s p e t t o è i m p l e m e n t a t o d a l s e g u e n t e b e a n :  

p u b l i c c l a s s L o g g e r W i t h X M L {      

p u b l i c v o i d b e f o r e D a o O p e r a t i o n A d v i s e ( J o i n P o i n t j p ) {      

S y s t e m . o u t . p r i n t l n ( j p . g e t T a r g e t ( ) . g e t C l a s s ( ) . g e t N a m e ( ) +      

" : S t o p e r e s e g u i r e i l m e t o d o " +      

j p . g e t S i g n a t u r e ( ) . g e t N a m e ( ) ) ;    

}   

p u b l i c v o i d a f t e r D a o O p e r a t i o n A d v i s e ( J o i n P o i n t j p ) {      

S y s t e m . o u t . p r i n t l n ( j p . g e t T a r g e t ( ) . g e t C l a s s ( ) . g e t N a m e ( ) +      

" : H o e s e g u i t o i l m e t o d o " +      

j p . g e t S i g n a t u r e ( ) . g e t N a m e ( ) ) ;    

}   

}   

L a s u a c o n g u r a z i o n e , a l l ' i n t e r n o d e l l e X M L è l a s e g u e n t e :  

< a o p : c o n f i g >      

< a o p : a s p e c t i d = " m y A s p e c t " r e f = " d a o A s p e c t " >      

. . .  

< / a o p : a s p e c t >      

< / a o p : c o n f i g >      

< b e a n i d = " d a o A s p e c t " c l a s s = " e s e m p i o s p r i n g . L o g g e r W i t h X M L " / >      

4 . 3 . 2 D i c h i a r a r e u n p o i n t c u t    

U n p o i n t c u t p u ò e s s e r e d i c h i a r a t o a l l ' i n t e r n o d e l l ' e l e m e n t o      < a o p : c o n g >        , i n m o d o c h e s i a      

d i s p o n i b i l e a d i v e r s i a s p e t t i e a d v i s o r s .  

U n p o i n t c u t c h e r a p p r e s e n t a l ' e s e c u z i o n e d i u n q u a l u n q u e m e t o d o d i e s e m p i o s p r i n g . D a o      

è s c r i t t o c o m e s e g u e :  

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " i n D a o " e x p r e s s i o n = " e x e c u t i o n ( * e s e m p i o s p r i n g . D a o . * ( . . ) ) " / >      

< ! - - D e f i n i z i o n e d e g l i a s p e t t i - - >      

. . .  

< / a o p : c o n f i g >      

N o t a r e c h e l a s i n t a s s i p e r l ' e s p r e s s i o n e d e l p o i n t c u t è e s a t t a m e n t e l a s t e s s a p r e s e n t a t a n e i    

p a r a g r a p r e c e d e n t i .  

U n p o i n t c u t p u ò e s s e r e a n c h e d e n i t o a l l ' i n t e r n o d i u n a s p e t t o . L a s u a d i c h i a r a z i o n e è      

m o l t o s i m i l e a l l a p r e c e d e n t e :  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 58/86

 

C A P I T O L O 4 . S P R I N G A O P         5 1   

< a o p : c o n f i g >      

< a o p : a s p e c t i d = " m y A s p e c t " r e f = " d a o A s p e c t " >      

< a o p : p o i n t c u t i d = " i n D a o " e x p r e s s i o n = " e x e c u t i o n ( * e s e m p i o s p r i n g . D a o . * ( . . ) ) " / >      

. . .  

< / a o p : a s p e c t >      

< / a o p : c o n f i g >      

4 . 3 . 3 D i c h i a r a r e u n a d v i c e      

I t i p i d i a d v i c e s u p p o r t a t i s o n o g l i s t e s s i v i s t i i n p r e c e d e n z a .  

4 . 3 . 3 . 1 B e f o r e      

Q u e s t o t i p o d i a d v i c e è d i c h i a r a t o a l l ' i n t e r n o d e l n o d o      < a o p : a s p e c t >        u t i l i z z a n d o l ' e l e m e n t o      

< a o p : b e f o r e >        . 

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " d a o S e r v i c e " e x p r e s s i o n = " e x e c u t i o n ( * e s e m p i o s p r i n g . I D a o . * ( . . ) ) " / >      

< a o p : a s p e c t i d = " m i o A s p e c t " r e f = " d a o A s p e c t " >      

< a o p : b e f o r e p o i n t c u t - r e f = " d a o S e r v i c e " m e t h o d = " b e f o r e D a o O p e r a t i o n A d v i s e " / >      

< / a o p : a s p e c t >      

< / a o p : c o n f i g >      

Q u i d a o S e r v i c e è l ' i d d e l p o i n t c u t d e n i t o a l i v e l l o d i    < a o p : c o n g >        . 

4 . 3 . 3 . 2 A f t e r r e t u r n i n g      

Q u e s t o t i p o d i a d v i c e è d e n i t o i n q u e s t o m o d o :  

< a o p : a s p e c t i d = " a f t e r R e t u r n i n g E x a m p l e " r e f = " a B e a n " >      

< a o p : a f t e r - r e t u r n i n g      

p o i n t c u t - r e f = " d a t a A c c e s s O p e r a t i o n "      

m e t h o d = " d o A c c e s s C h e c k " / >      

. . .  

< / a o p : a s p e c t >      

E ' p o s s i b i l e n a t u r a l m e n t e c a t t u r a r e i l v a l o r e d i r i t o r n o p e r u s a r l o a l l ' i n t e r n o d e l l ' a d v i c e .  

L a s i n t a s s i è l a s e g u e n t e :  

< a o p : a s p e c t i d = " a f t e r R e t u r n i n g E x a m p l e " r e f = " a B e a n " >      

< a o p : a f t e r - r e t u r n i n g      

p o i n t c u t - r e f = " d a t a A c c e s s O p e r a t i o n "      

r e t u r n i n g = " r e t V a l "      

m e t h o d = " d o A c c e s s C h e c k " / >      

. . .  

< / a o p : a s p e c t >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 59/86

 

C A P I T O L O 4 . S P R I N G A O P         5 2   

4 . 3 . 3 . 3 A f t e r t h r o w i n g      

Q u e s t o t i p o d i a d v i c e è d e n i t o n e l s e g u e n t e m o d o :  

< a o p : a s p e c t i d = " a f t e r T h r o w i n g E x a m p l e " r e f = " a B e a n " >      

< a o p : a f t e r - t h r o w i n g      

p o i n t c u t - r e f = " d a t a A c c e s s O p e r a t i o n "      

m e t h o d = " d o R e c o v e r y A c t i o n s " / >      

. . .  

< / a o p : a s p e c t >      

E ' p o s s i b i l e n a t u r a l m e n t e c a t t u r a r e l ' e c c e z i o n e p e r u s a r l a a l l ' i n t e r n o d e l l ' a d v i c e . L a s i n -    

t a s s i è l a s e g u e n t e :  

< a o p : a s p e c t i d = " a f t e r T h r o w i n g E x a m p l e " r e f = " a B e a n " >      

< a o p : a f t e r - t h r o w i n g      

p o i n t c u t - r e f = " d a t a A c c e s s O p e r a t i o n "      

t h r o w i n g = " d a t a A c c e s s E x "      

m e t h o d = " d o R e c o v e r y A c t i o n s " / >      

. . .  

< / a o p : a s p e c t >      

4 . 3 . 3 . 4 A f t e r ( n a l l y )    

Q u e s t o t i p o d i a d v i c e è d e n i t o n e l s e g u e n t e m o d o :  

< a o p : a s p e c t i d = " m i o A s p e c t " r e f = " d a o A s p e c t " >      

< a o p : a f t e r p o i n t c u t - r e f = " d a o S e r v i c e " m e t h o d = " a f t e r D a o O p e r a t i o n A d v i s e " / >      

. . .  

< / a o p : a s p e c t >      

4 . 3 . 3 . 5 A r o u n d      

Q u e s t o t i p o d i a d v i c e è d e n i t o n e l m o d o s e g u e n t e :  

< a o p : a s p e c t i d = " a r o u n d E x a m p l e " r e f = " a B e a n " >      

< a o p : a r o u n d p o i n t c u t - r e f = " b u s i n e s s S e r v i c e " m e t h o d = " d o B a s i c P r o f i l i n g " / >      

. . .  

< / a o p : a s p e c t >      

4 . 3 . 3 . 6 G e s t i o n e d e i p a r a m e t r i    

L a d i c h i a r a z i o n e b a s a t a s u X M L s u p p o r t a l e s t e s s e f u n z i o n a l i t à d i q u e l l a b a s a t a s u @ A s p e c t J .  

S e s i v u o l e e s p l i c i t a m e n t e s p e c i c a r e i n o m i d e g l i a r g o m e n t i p e r i m e t o d i a d v i c e s i d e v e      

u t i l i z z a r e l ' a t t r i b u t o      a r g - n a m e s      n e l n o d o d e l l ' a d v i c e , c h e è t r a t t a t o n e l l o s t e s s o m o d o d e l l ' a t -    

t r i b u t o      a r g N a m e s      p e r l e a n n o t a z i o n i . A d e s e m p i o :  

< a o p : b e f o r e      

p o i n t c u t = " c o m . x y z . l i b . P o i n t c u t s . a n y P u b l i c M e t h o d ( ) a n d @ a n n o t a t i o n ( a u d i t a b l e ) "      

m e t h o d = " a u d i t "      

a r g - n a m e s = " a u d i t a b l e " / >      

L ' a t t r i b u t o      a r g - n a m e s      a c c e t t a u n a l i s t a d i n o m i d i p a r a m e t r i s e p a r a t i d a v i r g o l e .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 60/86

 

C A P I T O L O 4 . S P R I N G A O P         5 3   

4 . 3 . 4 I n t r o d u z i o n i    

U n ' i n t r o d u z i o n e v i e n e d e n i t a a t t r a v e r s o i l n o d o      < a o p : d e c l a r e - p a r e n t s >        a l l ' i n t e r n o d e l    

n o d o      < a o p : a s p e c t >        . T a l e e l e m e n t o è u t i l i z z a t o p e r d i c h i a r a r e c h e i l t i p o c h e m a t c h a h a u n      

n u o v o g e n i t o r e . P e r e s e m p i o , d a t a u n ' i n t e r f a c c i a      U s a g e T r a c k e d      e u n a s u a i m p l e m e n t a z i o n e ,  

D e f a u l t U s a g e T r a c k e d      , i l s e g u e n t e a s p e t t o d i c h i a r a c h e t u t t i g l i i m p l e m e n t a t o r i d e l l e i n t e r f a c c e      

r e l a t i v e a i s e r v i z i d o v r a n n o i m p l e m e n t a r e a n c h e l ' i n t e r f a c c i a      U s a g e T r a c k e d      . 

< a o p : a s p e c t i d = " u s a g e T r a c k e r A s p e c t " r e f = " u s a g e T r a c k i n g " >      

< a o p : d e c l a r e - p a r e n t s      

t y p e s - m a t c h i n g = " c o m . x z y . m y a p p . s e r v i c e . * + "      

i m p l e m e n t - i n t e r f a c e = " c o m . x y z . m y a p p . s e r v i c e . t r a c k i n g . U s a g e T r a c k e d "      

d e f a u l t - i m p l = " c o m . x y z . m y a p p . s e r v i c e . t r a c k i n g . D e f a u l t U s a g e T r a c k e d " / >      

< a o p : b e f o r e      

p o i n t c u t = " c o m . x y z . m y a p p . S y s t e m A r c h i t e c t u r e . b u s i n e s s S e r v i c e ( )    

a n d t h i s ( u s a g e T r a c k e d ) "      

m e t h o d = " r e c o r d U s a g e " / >      

< / a o p : a s p e c t >      

4 . 3 . 5 M o d e l l o d i i n s t a n z i a z i o n e d i u n a s p e t t o      

L ' u n i c o m o d e l l o d i i n s t a n z i a z i o n e n e l l a d e n i z i o n e d e g l i a s p e t t i t r a m i t e X M L è i l m o d e l l o      

s i n g l e t o n . A l t r i m o d e l l i p o t r e b b e r o e s s e r e s u p p o r t a t i i n r e l e a s e f u t u r e .  

4 . 3 . 6 A d v i s o r s    

I l c o n c e t t o d i a d v i s o r s p r o v i e n e d a l s u p p o r t o a l l a A O P d i S p r i n g 1 . 2 e n o n h a u n e q u i v a l e n t e      

i n A s p e c t J . U n a d v i s o r è c o m e u n p i c c o l o a s p e t t o a u t o c o n t e n u t o c h e h a u n s i n g o l o a d v i c e .  

L ' a d v i c e è r a p p r e s e n t a t o d a u n b e a n e d e v e i m p l e m e n t a r e u n a d e l l e i n t e r f a c c e a d v i c e d e s c r i t t e      

n e l l a s e z i o n e      ? ?    . 

S p r i n g 2 . 0 s u p p o r t a i l c o n c e t t o d i a d v i s o r s t r a m i t e l ' e l e m e n t o      < a o p : a d v i s o r s >        . M o l t o      

f r e q u e n t e m e n t e è u t i l i z z a t o i n c o n g i u n z i o n e c o n l ' a d v i c e t r a n s a z i o n a l e . Q u i a b b i a m o u n      

e s e m p i o :  

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " b u s i n e s s S e r v i c e "      

e x p r e s s i o n = " e x e c u t i o n ( * c o m . x y z . m y a p p . s e r v i c e . * . * ( . . ) ) " / >      

< a o p : a d v i s o r      

p o i n t c u t - r e f = " b u s i n e s s S e r v i c e "      

a d v i c e - r e f = " t x - a d v i c e " / >      

< / a o p : c o n f i g >      

< t x : a d v i c e i d = " t x - a d v i c e " >      

< t x : a t t r i b u t e s >      

< t x : m e t h o d n a m e = " * " p r o p a g a t i o n = " R E Q U I R E D " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 61/86

 

C A P I T O L O 4 . S P R I N G A O P         5 4   

4 . 3 . 7 E s e m p i o      

R i v e d i a m o l ' e s e m p i o p r e s e n t a t o i n 4 . 2 . 7 u t i l i z z a n d o l ' X M L .  

p u b l i c c l a s s L o g g e r W i t h X M L {      

p u b l i c v o i d b e f o r e D a o O p e r a t i o n A d v i s e ( J o i n P o i n t j p ) {      

S y s t e m . o u t . p r i n t l n ( j p . g e t T a r g e t ( ) . g e t C l a s s ( ) . g e t N a m e ( ) +      

" : S t o p e r e s e g u i r e i l m e t o d o " +      

j p . g e t S i g n a t u r e ( ) . g e t N a m e ( ) ) ;    

}   

p u b l i c v o i d a f t e r D a o O p e r a t i o n A d v i s e ( J o i n P o i n t j p ) {      

S y s t e m . o u t . p r i n t l n ( j p . g e t T a r g e t ( ) . g e t C l a s s ( ) . g e t N a m e ( ) +      

" : H o e s e g u i t o i l m e t o d o " +      

j p . g e t S i g n a t u r e ( ) . g e t N a m e ( ) ) ;    

}   

}   

Q u e l l o c h e s e g u e è i l l e d i c o n g u r a z i o n e d i S p r i n g :  

< ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >      

< b e a n s x m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "      

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "      

x m l n s : a o p = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p "      

x m l n s : c o n t e x t = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / c o n t e x t "      

x s i : s c h e m a L o c a t i o n =      

" h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s / s p r i n g - b e a n s - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / c o n t e x t      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / c o n t e x t / s p r i n g - c o n t e x t - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p / s p r i n g - a o p - 2 . 5 . x s d " >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< ! - - = = = A t t i v a z i o n e A O P = = = - - >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< a o p : a s p e c t j - a u t o p r o x y / >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< ! - - = = = D e f i n i z i o n e a s p e t t i = = = - - >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< b e a n i d = " d a o A s p e c t " c l a s s = " e s e m p i o s p r i n g . L o g g e r W i t h X M L " / >      

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " i n D a o " e x p r e s s i o n = " e x e c u t i o n ( * e s e m p i o s p r i n g . I D a o . * ( . . ) ) " / >      

< a o p : a s p e c t i d = " m i o A s p e c t " r e f = " d a o A s p e c t " >      

< a o p : b e f o r e p o i n t c u t - r e f = " i n D a o " m e t h o d = " b e f o r e D a o O p e r a t i o n A d v i s e " / >      

< a o p : a f t e r p o i n t c u t - r e f = " i n D a o " m e t h o d = " a f t e r D a o O p e r a t i o n A d v i s e " / >      

< / a o p : a s p e c t >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 62/86

 

C A P I T O L O 4 . S P R I N G A O P         5 5   

< / a o p : c o n f i g >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< ! - - = = = D e f i n i z i o n e d e i b e a n s = = = - - >      

< ! - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = - - >      

< b e a n i d = " d a o " c l a s s = " e s e m p i o s p r i n g . D a o " / >      

< / b e a n s >      

I l m e t o d o      m a i n      p e r f a r e u n t e s t è i l s e g u e n t e :  

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {      

A p p l i c a t i o n C o n t e x t c o n t e x t =      

n e w C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t ( n e w S t r i n g [ ] { " / c o n f i g S p r i n g . x m l " } ) ;    

/ / T e s t c o n u n b e a n g e s t i t o d a l c o n t e n i t o r e      

I D a o d a o = c o n t e x t . g e t B e a n ( " d a o " , I D a o . c l a s s ) ;    

d a o . s a l v a ( ) ;    

d a o . r e c u p e r a ( ) ;    

/ / T e s t c o n u n b e a n n o n g e s t i t o d a l c o n t e n i t o r e      

I D a o a l t r o d a o = n e w D a o ( ) ;    

a l t r o d a o . s a l v a ( ) ;    

a l t r o d a o . r e c u p e r a ( ) ;    

}   

E s e g u e n d o l o , l ' o u t p u t s a r à :  

e s e m p i o s p r i n g . D a o : S t o p e r e s e g u i r e i l m e t o d o s a l v a      

S a l v o u n d a t o s u l d b      

e s e m p i o s p r i n g . D a o : H o e s e g u i t o i l m e t o d o s a l v a      

e s e m p i o s p r i n g . D a o : S t o p e r e s e g u i r e i l m e t o d o r e c u p e r a      

H o r e c u p e r a t o u n d a t o d a l d b      

e s e m p i o s p r i n g . D a o : H o e s e g u i t o i l m e t o d o r e c u p e r a      

S a l v o u n d a t o s u l d b      

H o r e c u p e r a t o u n d a t o d a l d b      

4 . 4 S c e g l i e r e l o s t r u m e n t o p e r g e s t i r e l ' A O P        

U n a v o l t a c h e s i è d e c i s o c h e u n a s p e t t o è l ' a p p r o c c i o m i g l i o r e p e r i m p l e m e n t a r e u n c e r t o      

r e q u i s i t o d e l l ' a p p l i c a z i o n e , c o m e d e c i d e r e s e u t i l i z z a r e S p r i n g A O P o A s p e c t J , e t r a l o s t i l e      

b a s a t o s u l l i n g u a g g i o , s u l l e a n n o t a z i o n i @ A s p e c t J o l o s t i l e X M L ? Q u e s t e d e c i s i o n i s o n o      

i n u e n z a t e d a u n c e r t o n u m e r o d i f a t t o r i , t r a c u i i r e q u i s i t i d e l l ' a p p l i c a z i o n e , g l i s t r u m e n t i d i    

s v i l u p p o e l a f a m i l i a r i t à d e l t e a m c o n A O P .  

4 . 4 . 1 S p r i n g A O P o A s p e c t J ?      

U s a l a c o s a p i ù s e m p l i c e c h e p u ò f u n z i o n a r e !  

S p r i n g A O P è p i ù s e m p l i c e r i s p e t t o a d A s p e c t J p o i c h è n o n r i c h i e d e d i i n t r o d u r r e i l c o m -    

p i l a t o r e o i l w e a v e r d i A s p e c t J n e l p r o c e s s o d i s v i l u p p o . S e s i h a b i s o g n o d i i n t e r c e t t a r e s o l o      

l ' e s e c u z i o n e d e l l e o p e r a z i o n i d e i b e a n s d i S p r i n g , a l l o r a S p r i n g A O P è l a s c e l t a m i g l i o r e .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 63/86

 

C A P I T O L O 4 . S P R I N G A O P         5 6   

S e i n v e c e s i h a b i s o g n o d i i n t e r c e t t a r e o g g e t t i c h e S p r i n g n o n g e s t i s c e ( c o m e g l i o g g e t t i d i    

d o m i n i o , s p e s s o ) a l l o r a c ' è b i s o g n o d i A s p e c t J .  

E ' c o n s i g l i a t o A s p e c t J a n c h e q u a n d o c ' è b i s o g n o d i i n t e r c e t t a r e j o i n p o i n t s c h e n o n r i g u a r d i -    

n o l a s e m p l i c e e s e c u z i o n e d i u n m e t o d o ( p e r e s e m p i o l ' a c c e s s o i n l e t t u r a / s c r i t t u r a d i u n      

c a m p o ) .  

Q u a n d o s i u t i l i z z a A s p e c t J s i p u ò s c e g l i e r e t r a l ' a p p r o c c i o b a s a t o s u l l i n g u a g g i o o l ' a p -    

p r o c c i o b a s a t o s u l l e a n n o t a z i o n i . O v v i a m e n t e , s e n o n s i u s a a l m e n o l a v e r s i o n e 5 d i J a v a , l a      

s c e l t a è o b b l i g a t a .  

S e g l i a s p e t t i g i o c a n o u n r u o l o i m p o r t a n t e a l l ' i n t e r n o d e l p r o g e t t o e s i h a l a p o s s i b i l i t à      

d i u s a r e A s p e c t J D e v e l o p m e n t T o o l s ( A J D T ) , i l p l u g i n p e r E c l i p s e , a l l o r a l ' a p p r o c c i o b a s a t o      

s u l l i n g u a g g i o d i A s p e c t J è l a s c e l t a m i g l i o r e e p i ù s e m p l i c e p e r c h è i l l i n g u a g g i o è s t a t o      

s p e c i c a t a m e n t e p r o g e t t a t o p e r s c r i v e r e a s p e t t i . S e n o n s i h a a d i s p o s i z i o n e E c l i p s e o s i    

h a n n o p o c h i a s p e t t i c h e n o n g i o c a n o r u o l i d i p r i m o p i a n o , a l l o r a v a c o n s i d e r a t a l a p o s s i b i l i t à      

d i u s a r e l e a n n o t a z i o n i , r i s p a r m i a n d o s i l a f a s e d i c o m p i l a z i o n e a l d i f u o r i d i q u e l l a n o r m a l e d i    

J a v a .  

4 . 4 . 2 @ A s p e c t J o X M L ?      

S e s i è s c e l t o d i u s a r e S p r i n g A O P , s i p u ò s c e g l i e r e t r a i d u e a p p r o c c i v i s t i n e i p a r a g r a 4 . 2 e      

4 . 3 .  

N a t u r a l m e n t e s e n o n s i h a a d i s p o s i z i o n e a l m e n o l a J a v a 5 , l a s c e l t a è o b b l i g a t a .  

L o s t i l e X M L p o t r e b b e e s s e r e p i ù f a m i l i a r e a c h i g i à s v i l u p p a c o n S p r i n g .  

Q u a n d o s i u s a A O P c o m e t o o l p e r c o n g u r a r e i s e r v i z i d i t i p o e n t e r p r i s e , a l l o r a l ' X M L      

p u ò e s s e r e u n a b u o n a s c e l t a . C o n l ' X M L i n o l t r e è m o l t o s e m p l i c e v i s u a l i z z a r e q u a l i a s p e t t i    

s o n o p r e s e n t i n e l s i s t e m a .  

L o s t i l e X M L h a d u e s v a n t a g g i .  

I l p r i m o s v a n t a g g i o è c h e n o n i n c a p s u l a c o m p l e t a m e n t e l ' i m p l e m e n t a z i o n e d e g l i a s p e t t i    

i n u n s i n g o l o p u n t o . I n f a t t i l a c o n g u r a z i o n e X M L n o n è s u c i e n t e , p o i c h è l ' a s p e t t o v a      

c o m u n q u e d i c h i a r a t o i n u n a c l a s s e c o n i r e l a t i v i m e t o d i a d v i c e . Q u a n d o s i u s a @ A s p e c t J c ' è      

u n s i n g o l o m o d u l o , l ' a s p e t t o , c h e i n c a p s u l a t u t t e l e i n f o r m a z i o n i .  

I l s e c o n d o s v a n t a g g i o s t a n e l f a t t o c h e l o s t i l e X M L è u n p o ' p i ù l i m i t a t o q u a n t o a d      

e s p r e s s i v i t à r i s p e t t o a l l o s t i l e @ A s p e c t J : è s u p p o r t a t o c o m e m o d e l l o d i i n s t a n z i a z i o n e s o l o      

q u e l l o p e r g l i a s p e t t i s i n g l e t o n e n o n è p o s s i b i l e c o m b i n a r e i n o m i d e i p o i n t c u t s d i c h i a r a t i    

c o n l ' X M L . P e r e s e m p i o , n e l l o s t i l e @ A s p e c t J s i p u ò s c r i v e r e q u a l c o s a d e l t i p o :  

@ P o i n t c u t ( e x e c u t i o n ( * g e t * ( ) ) )    

p u b l i c v o i d p r o p e r t y A c c e s s ( ) { }      

@ P o i n t c u t ( e x e c u t i o n ( o r g . x y z . A c c o u n t + * ( . . ) )    

p u b l i c v o i d o p e r a t i o n R e t u r n i n g A n A c c o u n t ( ) { }      

@ P o i n t c u t ( p r o p e r t y A c c e s s ( ) & & o p e r a t i o n R e t u r n i n g A n A c c o u n t ( ) )    

v o i d a c c o u n t P r o p e r t y A c c e s s ( ) { }      

N e l l o s t i l e X M L s i p o s s o n o d i c h i a r a r e i p r i m i d u e p o i n t c u t s :  

< a o p : p o i n t c u t i d = " p r o p e r t y A c c e s s "      

e x p r e s s i o n = " e x e c u t i o n ( * g e t * ( ) ) " / >      

< a o p : p o i n t c u t i d = " o p e r a t i o n R e t u r n i n g A n A c c o u n t "      

e x p r e s s i o n = " e x e c u t i o n ( o r g . x y z . A c c o u n t + * ( . . ) ) " / >      

N o n è p o s s i b i l e p e r ò d i c h i a r a r e i l p o i n t c u t a c c o u n t P r o p e r t y A c c e s s c o m b i n a n d o q u e s t e      

d e n i z i o n i .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 64/86

 

C A P I T O L O 4 . S P R I N G A O P         5 7   

U n a l t r o v a n t a g g i o d e l l ' a p p r o c c i o @ A s p e c t J è c h e p u ò e s s e r e c o m p r e s o s i a d a S p r i n g A O P      

s i a d a A s p e c t J , q u i n d i s e p e r q u a l c h e m o t i v o s i d e c i d e c h e A s p e c t J d e b b a e s s e r e i n t e g r a t o n e l l a      

p r o p r i a a p p l i c a z i o n e , e e t t u a r e l a m i g r a z i o n e v e r s o u n a p p r o c c i o b a s a t o s u A s p e c t J d i v e n t a      

m o l t o s e m p l i c e .  

I n g e n e r a l e , @ A s p e c t J è p r e f e r i b i l e i n q u e l l e s i t u a z i o n i i n c u i g l i a s p e t t i f a n n o q u a l c o s a d i    

p i ù d e l l a s e m p l i c e g e s t i o n e d e i s e r v i z i d i t i p o e n t e r p r i s e .  

4 . 5 I l m e c c a n i s m o d e i p r o x y      

S p r i n g A O P u s a i p r o x i e s d i n a m i c i J D K o C G L I B p e r c r e a r e i p r o x y d a t o u n o g g e t t o t a r g e t    

( i p r o x y J D K s o n o d a p r e f e r i r e , q u a n d o s i h a p o s s i b i l i t à d i s c e l t a ) . V e n g o n o u t i l i z z a t i i p r i m i    

q u a n d o l ' o g g e t t o t a r g e t i m p l e m e n t a u n ' i n t e r f a c c i a . I n c a s o c o n t r a r i o s i u t i l i z z a n o i C G L I B .  

N e l c a s o i n c u i s i v o g l i a f o r z a r e l ' u s o d e i C G L I B , è p o s s i b i l e f a r l o ( p e r e s e m p i o n e l c a s o i n c u i    

s i v o g l i a n o i n t e r c e t t a r e t u t t i i m e t o d i d i u n o g g e t t o t a r g e t , e n o n s o l o q u e l l i c h e i m p l e m e n t a n o      

l ' i n t e r f a c c i a ) .  

C i s o n o a l c u n i p u n t i d i c u i t e n e r e c o n t o s u i p r o x y C G L I B :  

      i m e t o d i     n a l    n o n p o s s o n o e s s e r e i n t e r c e t t a t i .  

       è n e c e s s a r i o a v e r e i b i n a r i C G L I B 2 a l l ' i n t e r n o d e l p r o p r i o c l a s s p a t h , a l t r i m e n t i S p r i n g      

s o l l e v a d e i w a r n i n g .  

      i l c o s t r u t t o r e d e l l ' o g g e t t o i n t e r c e t t a t o v e r r à c h i a m a t o d u e v o l t e . Q u e s t o a c a u s a d e l    

m e c c a n i s m o d i f u n z i o n a m e n t o d i q u e s t o t i p o d i p r o x y .  

P e r f o r z a r e l ' u s o d e i p r o x i e s C G L I B b i s o g n a s e t t a r e a      t r u e      i l v a l o r e d e l l ' a t t r i b u t o      p r o x y -    

t a r g e t - c l a s s      n e l n o d o      < a o p : c o n g >        : 

< a o p : c o n f i g p r o x y - t a r g e t - c l a s s = " t r u e " >      

< ! - - o t h e r b e a n s d e f i n e d h e r e . . . - - >      

< / a o p : c o n f i g >      

P e r f o r z a r e l ' u s o d e i p r o x y C G L I B q u a n d o s i u s a i l s u p p o r t o a u t o p r o x y      @ A s p e c t J      è   

n e c e s s a r i o s e t t a r e a      t r u e      l ' a t t r i b u t o      p r o x y - t a r g e t - c l a s s      d e l n o d o      < a o p : a s p e c t j - a u t o p r o x y >        : 

< a o p : a s p e c t j - a u t o p r o x y p r o x y - t a r g e t - c l a s s = " t r u e " / >      

4 . 5 . 1 C a p i r e i p r o x y A O P        

C o m e g i à r i b a d i t o p i ù v o l t e , S p r i n g A O P è b a s a t o s u p r o x y . E ' d i f o n d a m e n t a l e i m p o r t a n z a      

c a p i r e i l m e c c a n i s m o d e i p r o x y p o i c h è s e d a u n a p a r t e f a c i l i t a n o m o l t o l ' u s o d e l l a A O P ,  

d a l l ' a l t r a p o s s o n o p r e s e n t a r e s i t u a z i o n i d i c u i p o i r i s u l t a d i c i l e c a p i r e i l f u n z i o n a m e n t o .  

S u p p o n i a m o , p e r e s e m p i o , d i a v e r e u n a c l a s s e      B a n k M a n a g e m e n t    , c h e i m p l e m e n t a u n ' i n -    

t e r f a c c i a      I B a n k M a n a g e m e n t    c o n u n a s e r i e d i m e t o d i p u b b l i c i p e r l a g e s t i o n e d i o p e r a z i o n i    

b a n c a r i e :  

p u b l i c i n t e r f a c e I B a n k M a n a g e m e n t {      

p u b l i c v o i d p r o c e s s a P a g a m e n t o ( ) ;    

p u b l i c v o i d c h e c k R a t i n g C r e d i t o ( ) ;    

}   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 65/86

 

C A P I T O L O 4 . S P R I N G A O P         5 8   

p u b l i c c l a s s B a n k M a n a g e m e n t {      

@ T r a n s a c t i o n a l      

p u b l i c v o i d p r o c e s s a P a g a m e n t o ( ) {      

/ / o p e r a z i o n i v a r i e      

. . .  

t h i s . c h e c k R a t i n g C r e d i t o ( ) ;    

. . .  

}   

p u b l i c v o i d c h e c k R a t i n g C r e d i t o ( ) {      

/ / f a q u a l c o s a . . .    

}   

/ / A l t r i m e t o d i . . .    

. . .  

}   

C o m ' è p o s s i b i l e v e d e r e , i l m e t o d o      p r o c e s s a P a g a m e n t o ( )    , c h e è p u b b l i c o , f a u s o d i u n      

m e t o d o i n t e r n o a l l a c l a s s e , a n c h ' e s s o p u b b l i c o ,   c h e c k R a t i n g C r e d i t o ( )    . S i t u a z i o n i d e l g e n e r e      

n o n s o n o m o l t o f r e q u e n t i . T i p i c a m e n t e , q u a n d o u n m e t o d o u t i l i z z a u n a l t r o m e t o d o d e l l a      

s t e s s a c l a s s e , q u e s t ' u l t i m o è p r i v a t o . I n q u e s t o c a s o i n v e c e l a s i t u a z i o n e è d i v e r s a : i l m e t o -    

d o    c h e c k R a t i n g C r e d i t o ( )    è p u b b l i c o e q u i n d i p u ò e s s e r e u s a t o a n c h e d a a l t r e c l a s s i e s t e r n e .  

S u p p o n i a m o c h e e n t r a m b i i m e t o d i s i a n o s o g g e t t i a d i n t e r c e t t a z i o n e .   p r o c e s s a P a g a m e n t o ( )    

n e c e s s i t a d e l l ' a p e r t u r a d e l l a t r a n s a z i o n e , c h e g e s t i a m o t r a m i t e A O P , v i s t o c h e p r o b a b i l m e n t e      

n o n è l ' u n i c o m e t o d o c h e n e h a b i s o g n o .  

A n c h e      c h e c k R a t i n g C r e d i t o ( )    v i e n e i n t e r c e t t a t o , p o i c h è c o m e a n c h e a l t r i , p r i m a d e l l a s u a      

e s e c u z i o n e v a c o n t r o l l a t o i l r u o l o d e l l ' u t e n t e c h e s t a r i c h i e d e n d o l ' o p e r a z i o n e . I n f a t t i t a l e      

o p e r a z i o n e p u ò e s s e r e s v o l t a s o l o d a u n      B a n k M a n a g e r      . 

D e n i a m o q u i n d i u n a s p e t t o d o v e g e s t i a m o q u e s t e p r o b l e m a t i c h e :  

@ A s p e c t      

p u b l i c c l a s s B a n c a {      

@ P o i n c u t ( " . . . " )    

p u b l i c v o i d t r a n s a z i o n e ( ) { } ;    

@ P o i n t c u t ( " . . . " )    

p u b l i c v o i d p e r m e s s o B a n k M a n a g e r ( ) { }      

@ B e f o r e ( " t r a n s a z i o n e ( ) " )    

p u b l i c v o i d a p r i T r a n s a z i o n e ( ) {      

/ / A p r i t r a n s a z i o n e . . .    

. . .  

}   

@ B e f o r e ( " p e r m e s s o B a n k M a n a g e r ( ) " )    

p u b l i c v o i d c o n t r o l l a P e r m e s s i ( ) {      

/ / C o n t r o l l o c h e l ' u t e n t e a b b i a i p e r m e s s i d a B a n k M a n a g e r      

. . .  

}   

}   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 66/86

 

C A P I T O L O 4 . S P R I N G A O P         5 9   

I l c o d i c e d e i p o i n t c u t s è s t a t o o m e s s o , m a l a s e m a n t i c a è c h i a r a :   t r a n s a z i o n e ( )    i n t e r c e t t a      

t u t t i i m e t o d i c h e s o n o t r a n s a z i o n i ( p e r e s e m p i o i n d i c a t i c o n      @ T r a n s a c t i o n a l    ) , t r a c u i    p r o -    

c e s s a P a g a m e n t o ( )    , e    p e r m e s s o B a n k M a n a g e r ( )    i n t e r c e t t a t u t t i i m e t o d i s u c u i d e v o n o e s s e r e      

c o n t r o l l a t i i p e r m e s s i d e l l ' u t e n t e , t r a c u i    c h e c k R a t i n g C r e d i t o ( )    . 

Q u a n d o S p r i n g A O P c r e a i l p r o x y c h e g e s t i r à q u e s t o a s p e t t o , c r e e r à u n o g g e t t o c h e f a r à      

d a p o n t e t r a c h i c h i a m a i s e r v i z i d i    B a n k M a n a g e m e n t    e l a c l a s s e      B a n k M a n a g e m e n t    s t e s s a .  

I n p s e u d o c o d i c e , l ' a s p e t t o d e l p r o x y s a r à p i ù o m e n o q u e s t o :  

p r o c e s s a P a g a m e n t o ( ) {      

/ / A t t i v a l a t r a n s a z i o n e . . .    

. . .  

I N V O K E o r i g i n a l . p r o c e s s a P a g a m e n t o ( ) ;    

}   

c h e c k R a t i n g C r e d i t o ( ) {      

/ / C o n t r o l l o i p e r m e s s i d e l l ' u t e n t e . . .    

. . .  

I N V O K E o r i g i n a l . c h e c k R a t i n g C r e d i t o ( ) ;    

}   

D o v e c o n l a p a r o l a      o r i g i n a l    s i i n t e n d e u n r i f e r i m e n t o a l l ' i s t a n z a d e l l a c l a s s e      B a n k M a n a g e -    

m e n t    c h e s i t r o v a d i e t r o q u e s t o p r o x y e c h e c o n t i e n e i l m e t o d o i n v o c a t o c o n I N V O K E .  

Q u a n d o u n a c l a s s e e s t e r n a c h i a m e r à i l m e t o d o      p r o c e s s a P a g a m e n t o ( )    v e r r à i n e e t t i e s -    

e g u i t o q u e l l o d e l p r o x y , e n o n d i r e t t a m e n t e q u e l l o d e l l a c l a s s e      B a n k M a n a g e m e n t    c h e s t a      

d i e t r o .  

C o s a c ' è c h e n o n v a i n t u t t o q u e s t o ? L a p a r o l a      t h i s      a l l ' i n t e r n o d e l m e t o d o      p r o c e s s a P a g a -    

m e n t o ( )    . . . 

L a p a r o l a      t h i s      , f a b e n e r i c o r d a r l o , s i r i f e r i s c e s e m p r e a l l ' i s t a n z a d e l l ' o g g e t t o s t e s s o i n c u i    

c o m p a r e .  

C o s a s u c c e d e q u a n d o v i e n e i n v o c a t o d a l l ' e s t e r n o i l m e t o d o      c h e c k R a t i n g C r e d i t o ( )    d e l l a      

c l a s s e      B a n k M a n a g e m e n t    ? Q u e l l o c h e s u c c e d e è c h e v i e n e i n v o c a t o i n r e a l t à i l m e t o d o      c h e c k -    

R a t i n g C r e d i t o ( )    d e l p r o x y , i l q u a l e e e t t u a i l c o n t r o l l o s u l l o s t a t o d e l l ' u t e n t e , e p o i e s e g u e i l    

c o d i c e d i    c h e c k R a t i n g C r e d i t o ( )    . T u t t o q u e s t o è e s a t t a m e n t e c o n f o r m e a q u e l l o c h e v o l e v a m o .  

C o s a s u c c e d e q u a n d o v i e n e i n v o c a t o d a l l ' e s t e r n o i l m e t o d o      p r o c e s s a P a g a m e n t o ( )    d e l l a      

c l a s s e      B a n k M a n a g e m e n t    ? A n c h e i n q u e s t o c a s o v i e n e i n r e a l t à i n v o c a t o i l m e t o d o      p r o c e s s -    

a P a g a m e n t o ( )    d e l p r o x y . V i e n e q u i n d i a p e r t a l a t r a n s a z i o n e e v i e n e p o i e s e g u i t o i l c o d i c e      

d i   p r o c e s s a P a g a m e n t o ( )    . I n q u e s t o m e t o d o , t u t t a v i a , v i e n e u t i l i z z a t o a n c h e i l m e t o d o      c h e c k -    

R a t i n g C r e d i t o ( )    . T u t t a v i a v i e n e i n v o c a t o c o n l a p a r o l a      t h i s      , c h e s i r i f e r i s c e q u i n d i a l l ' i s t a n z a      

c o r r e n t e . N o n v i e n e q u i n d i e s e g u i t o      c h e c k R a t i n g C r e d i t o ( )    d e l p r o x y , m a v i e n e e s e g u i t o q u e l l o      

d e l l ' i s t a n z a c o r r e n t e d e l l a c l a s s e      B a n k M a n a g e m e n t    e i n t a l e m e t o d o i l c o n t r o l l o s u l l o s t a t o d e l -    

l ' u t e n t e n o n v i e n e f a t t o ! ! ! I l r i s u l t a t o è c h e q u a n d o s i i n v o c a i l m e t o d o      p r o c e s s a P a g a m e n t o ( )    , 

v i e n e s a l t a t o u n i m p o r t a n t e c o n t r o l l o .  

Q u e s t a s i t u a z i o n e , p e r f a r e u n d i s c o r s o g e n e r a l e , s i r i s c h i a o g n i v o l t a i n c u i u n a c l a s s e h a      

d u e m e t o d i p u b b l i c i c h e v e n g o n o e n t r a m b i i n t e r c e t t a t i e g e s t i t i d a u n a s p e t t o , e i n u n o v i e n e      

i n v o c a t o l ' a l t r o t r a m i t e      t h i s      . 

C o m e r i s o l v e r e q u e s t o p r o b l e m a ? L a s o l u z i o n e p u ò s e m b r a r e b a n a l e , m a v a d e t t a : v a      

e v i t a t a q u e s t a o r g a n i z z a z i o n e d e l c o d i c e . I n q u e s t o c a s o s p e c i c o è m e g l i o e e t t u a r e i l c o n -    

t r o l l o a n c h e d i r e t t a m e n t e d e n t r o a l m e t o d o      p r o c e s s a P a g a m e n t o ( )    . P e r e s e m p i o s i c r e a u n      

n u o v o m e t o d o , p r i v a t o , d e n t r o      B a n k M a n a g e m e n t    c h e e e t t u a i c o n t r o l l i d e l l ' a d v i c e e p o i i n -    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 67/86

 

C A P I T O L O 4 . S P R I N G A O P         6 0   

v o c a i l m e t o d o      t h i s . c h e c k R a t i n g C r e d i t o ( )    . Q u e s t o n u o v o m e t o d o è q u e l l o c h e d e v ' e s s e r e u s a t o      

a l l ' i n t e r n o d i    p r o c e s s a P a g a m e n t o ( )    . 

U n ' a l t r a s o l u z i o n e ( a s s o l u t a m e n t e d a e v i t a r e ! ) è q u e l l a i n c u i s i r i c h i e d e a l c o n t e n i t o r e i l    

p r o x y d e l l a c l a s s e c o r r e n t e e s i i n v o c a i l m e t o d o      c h e c k R a t i n g C r e d i t o ( )    s u d i e s s o . L ' i s t r u z i o n e      

è l a s e g u e n t e :  

( ( B a n k M a n a g e m e n t ) A o p C o n t e x t . c u r r e n t P r o x y ( ) ) . c h e c k R a t i n g C r e d i t o ( ) ;    

T a l e s o l u z i o n e è s c o n s i g l i a t a p o i c h è c r e a u n f o r t e a c c o p p i a m e n t o t r a i l c o d i c e d e l l ' a p p l i -    

c a z i o n e e i l c o n t e n i t o r e S p r i n g e q u e s t o v a s e m p r e a s s o l u t a m e n t e e v i t a t o !  

4 . 6 C r e a z i o n e p r o g r a m m a t i c a d e i p r o x y @ A s p e c t J      

O l t r e a l l ' u s o d i    < a o p : c o n g >        o    < a o p : a s p e c t j - a u t o p r o x y >        è p o s s i b i l e c r e a r e d e i p r o x i e s    

s u d e g l i o g g e t t i t a r g e t i n m a n i e r a p r o g r a m m a t i c a . L a c l a s s e c h e p u ò e s s e r e u s a t a p e r f a r l o      

è    o r g . s p r i n g f r a m e w o r k . a o p . a s p e c t j . a n n o t a t i o n . A s p e c t J P r o x y F a c t o r y      . L ' u s o d i q u e s t a c l a s s e è      

m o l t o s e m p l i c e e d è i l l u s t r a t o n e l l ' e s e m p i o c h e s e g u e :  

/ / c r e a u n a f a c t o r y c h e p u ò g e n e r a r e u n p r o x y p e r u n d a t o o g g e t t o      

A s p e c t J P r o x y F a c t o r y f a c t o r y = n e w A s p e c t J P r o x y F a c t o r y ( t a r g e t O b j e c t ) ;    

/ / a g g i u n g e u n a s p e t t o ( c l a s s e m a r c a t a c o n l ' a n n o t a z i o n e @ A s p e c t J ) .    

/ / q u e s t o m e t o d o p u ò e s s e r e c h i a m a t o q u a n t e v o l t e s i v u o l e i n b a s e a i      

/ / d i f f e r e n t i a s p e t t i c h e s i v o g l i o n o c o n s i d e r a r e .    

f a c t o r y . a d d A s p e c t ( S e c u r i t y M a n a g e r . c l a s s ) ;    

/ / è p o s s i b i l e a g g i u n g e r e i s t a n z e g i à e s i s t e n t i d i a s p e t t i      

f a c t o r y . a d d A s p e c t ( u s a g e T r a c k e r ) ;    

/ / g e n e r a i l p r o x y c h e c i i n t e r e s s a      

M y I n t e r f a c e T y p e p r o x y = f a c t o r y . g e t P r o x y ( ) ;    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 68/86

 

P a r t e I I    

D a t a A c c e s s    

6 1   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 69/86

 

C a p i t o l o 5      

G e s t i o n e d e l l e t r a n s a z i o n i    

I l s u p p o r t o p e r l a g e s t i o n e d e l l e t r a n s a z i o n i è u n o d i p u n t i d i f o r z a d i S p r i n g . I l f r a m e w o r k      

i n f a t t i f o r n i s c e u n ' a s t r a z i o n e p e r l a g e s t i o n e d e l l e t r a n s a z i o n i c h e p o r t a i s e g u e n t i v a n t a g g i :  

       M o d e l l o d i p r o g r a m m a z i o n e a d a t t o a d A P I d i e r e n t i , c o m e J a v a T r a n s a c t i o n A P I ( J T A ) ,  

J D B C , H i b e r n a t e , J a v a P e r s i s t e n c e A P I ( J P A ) , J a v a D a t a O b j e c t s ( J D O ) .  

      S u p p o r t o p e r l a g e s t i o n e d i c h i a r a t i v a d e l l e t r a n s a z i o n i .  

       A P I p e r l a g e s t i o n e p r o g r a m m a t i c a d e l l e t r a n s a z i o n i p i ù s e m p l i c i r i s p e t t o a J T A .  

       I n t e g r a z i o n e e c c e l l e n t e c o n l e a s t r a z i o n i d i S p r i n g p e r l ' a c c e s s o a i d a t i .  

5 . 1 V a n t a g g i d e l s u p p o r t o d i S p r i n g a l l a g e s t i o n e d e l l e t r a n s a z i o n i    

T i p i c a m e n t e g l i s v i l u p p a t o r i J a v a E E h a n n o d u e s c e l t e p e r l a g e s t i o n e d e l l e t r a n s a z i o n i : g l o b a l i    

o l o c a l i , e n t r a m b e l e q u a l i h a n n o a l c u n e l i m i t a z i o n i .  

5 . 1 . 1 T r a n s a z i o n i g l o b a l i    

L e t r a n s a z i o n i g l o b a l i c o n s e n t o n o d i l a v o r a r e c o n p i ù r i s o r s e t r a n s a z i o n a l i , t i p i c a m e n t e d a t a b a s e      

r e l a z i o n a l i e c o d e d i m e s s a g g i .  

G l i a p p l i c a t i o n s e r v e r g e s t i s c o n o l e t r a n s a z i o n i g l o b a l i t r a m i t e J T A c h e è u n ' A P I p i u t t o s t o      

a r t i c o l a t a d a u s a r e . I n o l t r e , u n      U s e r T r a n s a c t i o n      J T A n o r m a l m e n t e h a b i s o g n o d i e s s e r e      

c o n n e s s o a d u n a r i s o r s a J N D I , i l c h e v u o l d i r e c h e b i s o g n a p r i m a g e s t i r e q u e s t o a s p e t t o e p o i    

J T A . Q u e s t o l i m i t a i l r i u s o d e l c o d i c e d e l l ' a p p l i c a z i o n e , a n c h e p e r c h è J T A è d i s p o n i b i l e s o l o      

i n a m b i e n t e w e b s e r v e r .  

I n p r e c e d e n z a i l m o d o p r e f e r i t o p e r g e s t i r e l e t r a n s a z i o n i e r a a t t r a v e r s o g l i E J B C M T        

(   C     o i n t a i n e r    M       a n a g e d      T     r a n s a c t i o n ) . E J B C M T è u n a f o r m a d i g e s t i o n e d i c h i a r a t i v a , c h e      

r i d u c e l a q u a n t i t à d i c o d i c e J a v a d a s c r i v e r e , m a c h e è c o m u n q u e c o n n e s s a a J T A e a l w e b      

s e r v e r i n u s o .  

5 . 1 . 2 T r a n s a z i o n i l o c a l i    

L e t r a n s a z i o n i l o c a l i s o n o s p e c i c h e p e r u n a r i s o r s a , c o m e p e r e s e m p i o l e t r a n s a z i o n i a s s o c i a t e      

a d u n a c o n n e s s i o n e J D B C . S o n o p i ù s e m p l i c i d a u s a r e , m a h a n n o u n o s v a n t a g g i o s i g n i c a t i -    

v o : n o n p o s s o n o l a v o r a r e s u p i ù r i s o r s e t r a n s a z i o n a l i . P e r e s e m p i o , i l c o d i c e c h e g e s t i s c e l e      

t r a n s a z i o n i u s a n d o u n a c o n n e s s i o n e J D B C n o n p u ò l a v o r a r e c o n u n a t r a n s a z i o n e g l o b a l e J T A .  

U n a l t r o d i f e t t o è c h e i l l o r o m o d e l l o d i p r o g r a m m a z i o n e è p i u t t o s t o i n v a s i v o .  

6 2   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 70/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       6 3   

5 . 1 . 3 M o d e l l o d i p r o g r a m m a z i o n e d i S p r i n g      

S p r i n g r i s o l v e g l i s v a n t a g g i d i e n t r a m b i g l i a p p r o c c i , f o r n e n d o a g l i s v i l u p p a t o r i u n m o d e l l o d i    

p r o g r a m m a z i o n e a d a t t o a d o g n i a m b i e n t e d i l a v o r o . E ' p o s s i b i l e s c r i v e r e i l c o d i c e u n a v o l t a e      

b e n e c i a r e d i q u a l u n q u e s t r a t e g i a i n q u a l u n q u e a m b i e n t e .  

5 . 2 C o m p r e n d e r e l ' a s t r a z i o n e d e l l e t r a n s a z i o n i d i S p r i n g      

L a c h i a v e a l l a b a s e d e l l ' a s t r a z i o n e d e l l e t r a n s a z i o n i è l a n o z i o n e d i    s t r a t e g i a d e l l e t r a n s a z i o n i    . 

U n a s t r a t e g i a è d e n i t a d a l l ' i n t e r f a c c i a      o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . P l a t f o r m T r a n s a c t i o n M a n a g e r      : 

p u b l i c i n t e r f a c e P l a t f o r m T r a n s a c t i o n M a n a g e r {      

T r a n s a c t i o n S t a t u s g e t T r a n s a c t i o n ( T r a n s a c t i o n D e f i n i t i o n d e f i n i t i o n )    

t h r o w s T r a n s a c t i o n E x c e p t i o n ;    

v o i d c o m m i t ( T r a n s a c t i o n S t a t u s s t a t u s ) t h r o w s T r a n s a c t i o n E x c e p t i o n ;    

v o i d r o l l b a c k ( T r a n s a c t i o n S t a t u s s t a t u s ) t h r o w s T r a n s a c t i o n E x c e p t i o n ;    

}   

E ' a n z i t u t t o u n ' i n t e r f a c c i a p r o v i d e r d i s e r v i z i ( S P I ,   S    e r v i c e      P     r o v i d e r    I   n t e r f a c e ) , b e n c h è s i    

p o s s a u s a r e p r o g r a m m a t i c a m e n t e a l l ' i n t e r n o d e l c o d i c e . N o n è l e g a t a a n e s s u n a s t r a t e g i a d i    

l o o k u p c o m e J N D I .  

L e i m p l e m e n t a z i o n i d i q u e s t a i n t e r f a c c i a s o n o d e n i t e c o m e q u a l u n q u e a l t r o o g g e t t o n e l    

c o n t a i n e r I o C .  

O g n i m e t o d o p u ò s o l l e v a r e u n ' e c c e z i o n e d i t i p o      T r a n s a c t i o n E x c e p t i o n      , c h e è u n ' e c c e z i o n e      

u n c h e c k e d      ( o v v e r o e s t e n d e       j a v a . l a n g . R u n t i m e E x c e p t i o n      ) . I m a l f u n z i o n a m e n t i d e l l ' i n f r a s t r u t -    

t u r a t r a n s a z i o n a l e s o n o s p e s s o i m m a n c a b i l m e n t e f a t a l i . I n r a r i c a s i , l à d o v e t r a m i t e c o d i c e      

è p o s s i b i l e r i p r i s t i n a r e l a s i t u a z i o n e , l o s v i l u p p a t o r e p u ò s c e g l i e r e s e c a t t u r a r e e g e s t i r e l a      

T r a n s a c t i o n E x c e p t i o n      . I l p u n t o f o n d a m e n t a l e è c h e l o s v i l u p p a t o r e n o n è c o s t r e t t o a f a r l o .  

I l m e t o d o      g e t T r a n s a c t i o n ( . . )     r i t o r n a u n o g g e t t o      T r a n s a c t i o n S t a t u s      , c h e d i p e n d e d a u n      

p a r a m e t r o      T r a n s a c t i o n D e n i t i o n      . T a l e o g g e t t o r i t o r n a t o p o t r e b b e r a p p r e s e n t a r e u n a n u o v a      

t r a n s a z i o n e , o p p u r e p u ò r a p p r e s e n t a r e u n a t r a n s a z i o n e e s i s t e n t e s e l a t r a n s a z i o n e c h i a m a t a è      

g i à e s i s t e n t e n e l l o s t a c k . L e i m p l i c a z i o n i d i q u e s t o r i s i e d o n o n e l f a t t o c h e , c o s i c o m e i l c o n t e s t o      

t r a n s a z i o n a l e J a v a E E , u n      T r a n s a c t i o n S t a t u s      è a s s o c i a t o a d u n t h r e a d d i e s e c u z i o n e .  

L ' i n t e r f a c c i a      T r a n s a c t i o n D e n i t i o n      d e n i s c e i s e g u e n t i a s p e t t i :  

       I s o l a t i o n      : i l g r a d o d i i s o l a m e n t o d e l l a t r a n s a z i o n e d a l l e a l t r e t r a n s a z i o n i .  

       P r o p a g a t i o n      : t i p i c a m e n t e t u t t o i l c o d i c e e s e g u i t o a l l ' i n t e r n o d e l l o s c o p e d i u n a t r a n s a z i o n e      

v i e n e e s e g u i t o a l l ' i n t e r n o d i q u e l l a t r a n s a z i o n e . C i ò n o n o s t a n t e c ' è l a p o s s i b i l i t à d i    

s p e c i c a r e q u e s t o c o m p o r t a m e n t o p e r u n a t r a n s a z i o n e e s e g u i t a q u a n d o u n c o n t e s t o      

t r a n s a z i o n a l e g i à e s i s t e . P e r e s e m p i o , a l l ' i n t e r n o d e l c o d i c e d i u n a t r a n s a z i o n e , v i e n e      

r i c h i a m a t a u n a f u n z i o n e c h e è a n c h ' e s s a u n a t r a n s a z i o n e . I l p r o g r a m m a t o r e p u ò q u i n d i    

d e c i d e r e s e a p r i r e u n a n u o v a t r a n s a z i o n e o s e u t i l i z z a r e i l c o n t e s t o g i à e s i s t e n t e .  

       T i m e o u t    : d e t e r m i n a i l t e m p o d i e s e c u z i o n e d i s p o n i b i l e a l l a t r a n s a z i o n e , p r i m a c h e e s s a      

p o s s a a n d a r e i n t i m e o u t .  

       R e a d - o n l y s t a t u s      : u n a t r a n s a z i o n e      r e a d - o n l y      p u ò e s s e r e u s a t a q u a n d o i l c o d i c e d e v e      

l e g g e r e d e i d a t i s e n z a m o d i c a r l i .  

L ' i n t e r f a c c i a      T r a n s a c t i o n S t a t u s      f o r n i s c e u n a v i a s e m p l i c e p e r c o d i c a r e i l c o n t r o l l o d e l l e      

t r a n s a z i o n i :  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 71/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       6 4   

p u b l i c i n t e r f a c e T r a n s a c t i o n S t a t u s e x t e n d s S a v e p o i n t M a n a g e r {      

b o o l e a n i s N e w T r a n s a c t i o n ( ) ;    

b o o l e a n h a s S a v e p o i n t ( ) ;    

v o i d s e t R o l l b a c k O n l y ( ) ;    

b o o l e a n i s R o l l b a c k O n l y ( ) ;    

v o i d f l u s h ( ) ;    

b o o l e a n i s C o m p l e t e d ( ) ;    

}   

I n d i p e n d e n t e m e n t e c h e s i s c e l g a u n a p p r o c c i o d i c h i a r a t i v o o p r o g r a m m a t i c o p e r l a g e s t i o n e      

d e l l e t r a n s a z i o n i , d e n i r e c o r r e t t a m e n t e l ' i m p l e m e n t a z i o n e d e l    P l a t f o r m T r a n s a c t i o n M a n a g e r      

è e s s e n z i a l e . T i p i c a m e n t e q u e s t o s i p u ò f a r e t r a m i t e D e p e n d e n c y I n j e c t i o n .  

L e i m p l e m e n t a z i o n i d e l    P l a t f o r m T r a n s a c t i o n M a n a g e r      d i s o l i t o r i c h i e d o n o l a c o n o s c e n z a      

d e l l ' a m b i e n t e a l l ' i n t e r n o d e l q u a l e l a v o r a n o : J D B C , J T A , H i b e n a t e e c o s i v i a . G l i e s e m p i c h e      

s e g u i r a n n o a i u t e r a n n o a c h i a r i r e ( Q u e s t o e s e m p i o l a v o r a s u J D B C ) .  

S i d e n i s c e u n d a t a s o u r c e :  

< b e a n i d = " d a t a S o u r c e "      

c l a s s = " o r g . a p a c h e . c o m m o n s . d b c p . B a s i c D a t a S o u r c e "      

d e s t r o y - m e t h o d = " c l o s e " >      

< p r o p e r t y n a m e = " d r i v e r C l a s s N a m e " v a l u e = " \ $ { j d b c . d r i v e r C l a s s N a m e } " / >      

< p r o p e r t y n a m e = " u r l " v a l u e = " \ $ { j d b c . u r l } " / >      

< p r o p e r t y n a m e = " u s e r n a m e " v a l u e = " \ $ { j d b c . u s e r n a m e } " / >      

< p r o p e r t y n a m e = " p a s s w o r d " v a l u e = " \ $ { j d b c . p a s s w o r d } " / >      

< / b e a n >      

I l r e l a t i v o      P l a t f o r m T r a n s a c t i o n M a n a g e r      b e a n d o v r à s e t t a r e u n r i f e r i m e n t o a t a l e      D a t a -    

S o u r c e      . S a r à q u a l c o s a d e l g e n e r e :  

< b e a n i d = " t x M a n a g e r "      

c l a s s = " o r g . s p r i n g f r a m e w o r k . j d b c . d a t a s o u r c e . D a t a S o u r c e T r a n s a c t i o n M a n a g e r " >      

< p r o p e r t y n a m e = " d a t a S o u r c e " r e f = " d a t a S o u r c e " / >      

< / b e a n >      

S e s i u s a J T A a l l ' i n t e r n o d i u n c o n t a i n e r J a v a E E , a l l o r a s i p u ò u s a r e i l D a t a S o u r c e d e l    

c o n t a i n e r , o t t e n u t o t r a m i t e J N D I , i n c o n g i u n z i o n e c o n i l    J t a T r a n s a c t i o n M a n a g e r      d i S p r i n g .  

I l c o d i c e p o t r e b b e e s s e r e q u a l c o s a d e l g e n e r e :  

< ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >      

< b e a n s x m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "      

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "      

x m l n s : j e e = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / j e e "      

x s i : s c h e m a L o c a t i o n = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s / s p r i n g - b e a n s - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / j e e      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / j e e / s p r i n g - j e e - 3 . 0 . x s d " >      

< ! - - L o o k u p d e l l e r i s o r s e J N D I - - >      

< j e e : j n d i - l o o k u p i d = " d a t a S o u r c e " j n d i - n a m e = " j d b c / e s e m p i o " / >      

< ! - - D e f i n i z i o n e d e l t r a n s a c t i o n m a n a g e r - - >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 72/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       6 5   

< b e a n i d = " t x M a n a g e r "      

c l a s s = " o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . j t a . J t a T r a n s a c t i o n M a n a g e r " / >      

< / b e a n s >      

I l   J t a T r a n s a c t i o n M a n a g e r      n o n n e c e s s i t a d i s a p e r e n u l l a s u l D a t a S o u r c e , o s u a l t r e s p e c i -    

c h e r i s o r s e , p e r c h è u s a l ' i n f r a s t r u t t u r a d e l c o n t a i n e r p e r l a g e s t i o n e d e l l e t r a n s a z i o n i g l o b a l i .  

Q u e s t a d e n i z i o n e d e l d a t a S o u r c e u t i l i z z a i l t a g      < j n d i - l o o k u p / >        d a l n a m e s p a c e       j e e      . P e r    

m a g g i o r i i n f o r m a z i o n i g u a r d a r e l ' a p p e n d i c e      ? ?    . 

E ' p o s s i b i l e u t i l i z z a r e m o l t o f a c i l m e n t e a n c h e l e t r a n s a z i o n i H i b e r n a t e , c o m e m o s t r a t o n e l    

s e g u e n t e e s e m p i o . I n q u e s t o c a s o v a d e n i t o u n      L o c a l S e s s i o n F a c t o r y B e a n      , c h e l ' a p p l i c a z i o n e      

u s e r à p e r o t t e n e r e i s t a n z e d i    S e s s i o n      d i H i b e r n a t e .  

L a d e n i z i o n e d e l b e a n D a t a S o u r c e è s i m i l e a q u e l l a J D B C v i s t a p o c o s o p r a e q u i n d i    

n e l l ' e s e m p i o n o n s a r à m o s t r a t a .  

I l b e a n      t x M a n a g e r      i n q u e s t o c a s o è u n      H i b e r n a t e T r a n s a c t i o n M a n a g e r      . C o s i c o m e i l    D a t a -    

S o u r c e T r a n s a c t i o n M a n a g e r      n e c e s s i t a d i u n r i f e r i m e n t o a l    D a t a S o u r c e      , l '  H i b e r n a t e T r a n s a c t i o n M a n a g e r      

n e c e s s i t à d i u n r i f e r i m e n t o a l    S e s s i o n F a c t o r y      . 

< b e a n i d = " s e s s i o n F a c t o r y "      

c l a s s = " o r g . s p r i n g f r a m e w o r k . o r m . h i b e r n a t e 3 . L o c a l S e s s i o n F a c t o r y B e a n " >      

< p r o p e r t y n a m e = " d a t a S o u r c e " r e f = " d a t a S o u r c e " / >      

< p r o p e r t y n a m e = " m a p p i n g R e s o u r c e s " >      

< l i s t >      

< v a l u e > e s e m p i o s p r i n g / h i b e r n a t e / p e r s o n a . h b m . x m l < / v a l u e >      

< / l i s t >      

< / p r o p e r t y >      

< p r o p e r t y n a m e = " h i b e r n a t e P r o p e r t i e s " >      

< v a l u e >      

h i b e r n a t e . d i a l e c t = \ $ { h i b e r n a t e . d i a l e c t }      

< / v a l u e >      

< / p r o p e r t y >      

< / b e a n >      

< b e a n i d = " t x M a n a g e r "      

c l a s s = " o r g . s p r i n g f r a m e w o r k . o r m . h i b e r n a t e 3 . H i b e r n a t e T r a n s a c t i o n M a n a g e r " >      

< p r o p e r t y n a m e = " s e s s i o n F a c t o r y " r e f = " s e s s i o n F a c t o r y " / >      

< / b e a n >      

S e s i s t a u t i l i z z a n d o H i b e r n a t e l a g e s t i o n e d e l l e t r a n s a z i o n i J T A d i u n c o n t a i n e r J a v a E E ,  

a l l o r a s i p u ù u t i l i z z a r e i l    J t a T r a n s a c t i o n M a n a g e r      c o m e n e l p r e c e d e n t e e s e m p i o p e r J D B C .  

< b e a n i d = " t x M a n a g e r " c l a s s = " o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . j t a . J t a T r a n s a c t i o n M a n a g e r " / >      

I n t u t t i q u e s t i c a s i , i l c o d i c e d e l l ' a p p l i c a z i o n e n o n n e c e s s i t a d i c a m b i a m e n t i . E ' p o s s i b i l e      

c a m b i a r e i l m o d o i n c u i l e t r a n s a z i o n i s o n o g e s t i t e c a m b i a n d o s o l o l a c o n g u r a z i o n e .  

5 . 3 G e s t i o n e d i c h i a r a t i v a d e l l e t r a n s a z i o n i    

S o n o m o l t i t r a g l i s v i l u p p a t o r i S p r i n g a d u s a r e l a g e s t i o n e d i c h i a r a t i v a d e l l e t r a n s a z i o n i .  

Q u e s t a o p z i o n e è l a m e n o i n v a s i v a .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 73/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       6 6   

Q u e s t o t i p o d i g e s t i o n e d e l l e t r a n s a z i o n i è r e s a p o s s i b i l e g r a z i e a d A O P .  

C o m e p e r g l i E J B C M T , a n c h e n e l l ' a p p r o c c i o a d o t t a t o d a S p r i n g è p o s s i b i l e s p e c i c a r e i l    

c o m p o r t a m e n t o d e l l e t r a n s a z i o n i a l i v e l l o d e i s i n g o l i m e t o d i . E ' p o s s i b i l e f a r e u n a c h i a m a t a      

s e t R o l l b a c k O n l y ( )    n e l c o n t e s t o t r a n s a z i o n a l e , s e n e c e s s a r i o . Q u e s t e s o n o l e d i e r e n z e t r a i d u e      

s t r u m e n t i :  

      m e n t r e E J B C M T è l e g a t o a J T A , S p r i n g l a v o r a i n q u a l s i a s i a m b i e n t e . P u ò l a v o r a r e      

c o n t r a n s a z i o n i J T A o c o n t r a n s a z i o n i l o c a l i u s a n d o J D B C , J P A , H i b e r n a t e o J D O ,  

s e m p l i c e m e n t e a g g i u s t a n d o i n m a n i e r a o p p o r t u n a i l l e d i c o n g u r a z i o n e .  

       è p o s s i b i l e a p p l i c a r e l a g e s t i o n e d i c h i a r a t i v a a d o g n i c l a s s e , e n o n s o l a m e n t e a c l a s s i    

s p e c i a l i c o m e s o n o g l i E J B .  

       S p r i n g o r e r e g o l e d i c h i a r a t i v e p e r i l r o l l b a c k , u n a c a r a t t e r i s t i c a c h e n o n h a e q u i v a l e n t i    

c o n g l i E J B .  

      S p r i n g c o n s e n t e d i c u s t o m i z z a r e i l c o m p o r t a m e n t o t r a n s a z i o n a l e , u s a n d o A O P .  

       S p r i n g n o n c o n s e n t e l a p r o p a g a z i o n e d e l c o n t e s t o t r a n s a z i o n a l e a t t r a v e r s o l e c h i a m a t e      

r e m o t e .  

I l c o n c e t t o d i r e g o l e d i r o l l b a c k è i m p o r t a n t e : c o n s e n t o n o , i n f a t t i , d i s p e c i c a r e q u a l i e c -    

c e z i o n i p o t r e b b e r o c a u s a r e a u t o m a t i c a m e n t e i l r o l l b a c k . Q u e s t o s i p u ò f a r e d i c h i a r a t i v a m e n t e ,  

s e n z a u s o d i c o d i c e J a v a . Q u i n d i , b e n c h è s i a p o s s i b i l e c h i a m a r e i l m e t o d o      s e t R o l l b a c k O n l y ( )    

s u l l ' o g g e t t o      T r a n s a c t i o n S t a t u s      , p i ù s p e s s o s i s p e c i c a n o r e g o l e p e r c u i u n ' e c c e z i o n e s p e c i c a t a      

g e n e r a i l r o l l b a c k . I l v a n t a g g i o s i g n i c a t i v o d i q u e s t o a p p r o c c i o s t a n e l f a t t o c h e g l i o g g e t t i    

d i b u s i n e s s n o n d i p e n d o n o d a l l ' i n f r a s t r u t t u r a d e l l e t r a n s a z i o n i .  

5 . 3 . 1 C o m p r e n d e r e l ' a p p r o c c i o d i c h i a r a t i v o      

N o n è s u c i e n t e d i r e c h e b i s o g n a a n n o t a r e u n a c l a s s e c o m e      @ T r a n s a c t i o n a l    , a g g i u n g e r e      

l a l i n e a      < t x : a n n o t a t i o n - d r i v e n / >        a l l a c o n g u r a z i o n e , e a s p e t t a r s i c h e s i c a p i s c a c o m e f a      

t u t t o a f u n z i o n a r e . Q u e s t a s e z i o n e s p i e g h e r à i n c h e m o d o l ' a p p r o c c i o d i c h i a r a t i v o p e r m e t t e a      

S p r i n g d i f u n z i o n a r e . A l l a b a s e d e l m e c c a n i s m o c ' è i l m o d u l o A O P .  

5 . 3 . 2 E s e m p i o      

C o n s i d e r i a m o l a s e g u e n t e i n t e r f a c c i a e l a s u a p o s s i b i l e i m p l e m e n t a z i o n e . Q u e s t a c l a s s e c o n -    

t i e n e d e i m e t o d i c h e h a n n o i l s o l o s c o p o d i e s s e r e d a e s e m p i o , c o n c e n t r a n d o c i s u l l a t r a n s a z i o n e      

e n o n s u l m o d e l l o d i d o m i n i o . L a c l a s s e      D e f a u l t F o o S e r v i c e      s o l l e v a e c c e z i o n i d i t i p o      U n s u p -    

p o r t e d O p e r a t i o n E x c e p t i o n      a l l ' i n t e r n o d e l c o r p o d i o g n i m e t o d o ; q u e s t o c i d a r à l a p o s s i b i l i t à      

d i v e d e r e l a c r e a z i o n e d e l l e t r a n s a z i o n i e i l l o r o r o l l b a c k .  

/ / l ' i n t e r f a c c i a d e i s e r v i z i c h e v o g l i a m o c h e s i a n o t r a n s a z i o n a l i      

p a c k a g e e s e m p i o s p r i n g . s e r v i c e ;    

p u b l i c i n t e r f a c e F o o S e r v i c e {      

F o o g e t F o o ( S t r i n g f o o N a m e ) ;    

F o o g e t F o o ( S t r i n g f o o N a m e , S t r i n g b a r N a m e ) ;    

v o i d i n s e r t F o o ( F o o f o o ) ;    

v o i d u p d a t e F o o ( F o o f o o ) ;    

}   

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 74/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       6 7   

/ / u n ' i m p l e m e n t a z i o n e d i t a l i s e r v i z i      

p a c k a g e e s e m p i o s p r i n g . s e r v i c e ;    

p u b l i c c l a s s D e f a u l t F o o S e r v i c e i m p l e m e n t s F o o S e r v i c e {      

p u b l i c F o o g e t F o o ( S t r i n g f o o N a m e ) {      

t h r o w n e w U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ;    

}   

p u b l i c F o o g e t F o o ( S t r i n g f o o N a m e , S t r i n g b a r N a m e ) {      

t h r o w n e w U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ;    

}   

p u b l i c v o i d i n s e r t F o o ( F o o f o o ) {      

t h r o w n e w U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ;    

}   

p u b l i c v o i d u p d a t e F o o ( F o o f o o ) {      

t h r o w n e w U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ;    

}   

}   

A s s u m i a m o c h e i p r i m i d u e m e t o d i ,   g e t F o o ( S t r i n g )    e    g e t F o o ( S t r i n g , S t r i n g )    , d e b b a n o e s -    

s e r e e s e g u i t i n e l c o n t e s t o d i u n a t r a n s a z i o n e      r e a d - o n l y      , e c h e g l i a l t r i m e t o d i ,   i n s e r t F o o ( F o o )    

e    u p d a t e F o o ( F o o )    , d e b b a n o e s s e r e e s e g u i t i n e l c o n t e s t o d i u n a t r a n s a z i o n e      r e a d - w r i t e      . L a   

s e g u e n t e c o n g u r a z i o n e è d e s c r i t t a n e l d e t t a g l i o n e i p r o s s i m i p a r a g r a :  

< ! - - d a l s p r i n g - c o n f i g . x m l - - >      

< ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >      

< b e a n s x m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "      

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "      

x m l n s : a o p = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p "      

x m l n s : t x = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x "      

x s i : s c h e m a L o c a t i o n = "      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s / s p r i n g - b e a n s - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x / s p r i n g - t x - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p / s p r i n g - a o p - 3 . 0 . x s d " >      

< ! - - d e f i n i z i o n e d e l D a t a S o u r c e - - >      

< b e a n i d = " d a t a S o u r c e "      

c l a s s = " o r g . a p a c h e . c o m m o n s . d b c p . B a s i c D a t a S o u r c e " d e s t r o y - m e t h o d = " c l o s e " >      

< p r o p e r t y n a m e = " d r i v e r C l a s s N a m e " v a l u e = " $ { d r i v e r } " / >      

< p r o p e r t y n a m e = " u r l " v a l u e = " $ { u r l } " / >      

< p r o p e r t y n a m e = " u s e r n a m e " v a l u e = " $ { u s e r n a m e } " / >      

< p r o p e r t y n a m e = " p a s s w o r d " v a l u e = " $ { p a s s w o r d } " / >      

< / b e a n >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 75/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       6 8   

< ! - - d e f i n i z i o n e d e l P l a t f o r m T r a n s a c t i o n M a n a g e r - - >      

< b e a n i d = " t x M a n a g e r "      

c l a s s = " o r g . s p r i n g f r a m e w o r k . j d b c . d a t a s o u r c e . D a t a S o u r c e T r a n s a c t i o n M a n a g e r " >      

< p r o p e r t y n a m e = " d a t a S o u r c e " r e f = " d a t a S o u r c e " / >      

< / b e a n >      

< ! - - Q u e s t o è i l s e r v i z i o c h e v o g l i a m o r e n d e r e t r a n s a z i o n a l e - - >      

< b e a n i d = " f o o S e r v i c e " c l a s s = " x . y . s e r v i c e . D e f a u l t F o o S e r v i c e " / >      

< ! - - A d v i c e - - >      

< t x : a d v i c e i d = " t x A d v i c e " t r a n s a c t i o n - m a n a g e r = " t x M a n a g e r " >      

< ! - - s e m a n t i c a d e l l a t r a n s a z i o n e - - >      

< t x : a t t r i b u t e s >      

< ! - - t u t t i i m e t o d i c h e i n i z i a n o c o n ' g e t ' s o n o r e a d - o n l y - - >      

< t x : m e t h o d n a m e = " g e t * " r e a d - o n l y = " t r u e " / >      

< ! - - g l i a l t r i m e t o d i u s a n o i l s e t t a g g i o d i d e f a u l t - - >      

< t x : m e t h o d n a m e = " * " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

< ! - - D o b b i a m o a s s i c u r a r c i c h e l ' a d v i c e p a r t a p e r o g n i e s e c u z i o n e      

d i o g n i o p e r a z i o n e d e f i n i t a n e l l ' i n t e r f a c c i a F o o S e r v i c e - - >      

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " f o o S e r v i c e O p e r a t i o n "      

e x p r e s s i o n = " e x e c u t i o n ( * x . y . s e r v i c e . F o o S e r v i c e . * ( . . ) ) " / >      

< a o p : a d v i s o r a d v i c e - r e f = " t x A d v i c e " p o i n t c u t - r e f = " f o o S e r v i c e O p e r a t i o n " / >      

< / a o p : c o n f i g >      

< / b e a n s >      

E s a m i n i a m o q u e s t a c o n g u r a z i o n e . V o g l i a m o r e n d e r e u n o g g e t t o d i s e r v i z i o , i l b e a n      

 f o o S e r v i c e      , t r a n s a z i o n a l e . L a s e m a n t i c a d a a p p l i c a r e p e r l e t r a n s a z i o n i è i n c a p s u l a t a n e l l a      

d e n i z i o n e      < t x : a d v i c e / >        . Q u e s t a d e n i z i o n e s i p u ò l e g g e r e i n q u e s t o m o d o : . . . t u t t i i m e t o -    

d i c h e c o m i n c i a n o c o n g e t s o n o d a e s e g u i r e n e l c o n t e s t o d i u n a t r a n s a z i o n e r e a d - o n l y , e t u t t i    

g l i a l t r i m e t o d i s o n o d a e s e g u i r e n e l c o n t e s t o d i d e a f u l t . .  

L ' a t t r i b u t o      t r a n s a c t i o n - m a n a g e r      n e l l ' a d v i c e è c o n g u r a t o c o n i l n o m e d e l b e a n      P l a t f o r m -    

T r a n s a c t i o n M a n a g e r      , c h e è q u e l l o c h e d e v e g e s t i r e l a t r a n s a z i o n e , i n q u e s t o c a s o t x M a n a g e r .  

L a d e n i z i o n e      < a o p : c o n g / >        a s s i c u r a c h e l ' a d v i c e t r a n s a z i o n a l e d e n i t o d a l b e a n      t x -  

A d v i c e      v i e n e e s e g u i t o n e i p u n t i a p p r o p r i a t i . P r i m a s i d e n i s c e u n p o i n t c u t c h e m a t c h a c o n      

l ' e s e c u z i o n e d i o g n i o p e r a z i o n e d e n i t a n e l l ' i n t e r f a c c i a      F o o S e r v i c e      . P o i s i a s s o c i a i l p o i n t c u t    

c o n i l    t x A d v i c e      . 

U n r e q u i s i t o d i u s o è q u e l l o d i r e n d e r e t r a n s a z i o n a l e u n i n t e r o s t r a t o d e i s e r v i z i . L a m i g l i o r    

v i a p e r f a r l o è s e m p l i c e m e n t e q u e l l a d i c a m b i a r e l ' e s p r e s s i o n e d e l p o i n t c u t p e r m a t c h a r e o g n i    

o p e r a z i o n e c h e r i g u a r d i l o s t r a t o d e i s e r v i z i . P e r e s e m p i o :  

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " f o o S e r v i c e M e t h o d s " e x p r e s s i o n = " e x e c u t i o n ( * x . y . s e r v i c e . * . * ( . . ) ) " / >      

< a o p : a d v i s o r a d v i c e - r e f = " t x A d v i c e " p o i n t c u t - r e f = " f o o S e r v i c e M e t h o d s " / >      

< / a o p : c o n f i g >      

Q u e s t a c o n g u r a z i o n e v i s t a n o r a è u t i l i z z a t a d a S p r i n g p e r c r e a r e u n p r o x y t r a n s a z i o n a l e      

a t t o r n o a l l ' o g g e t t o c r e a t o d a l l a d e n i z i o n e d e l b e a n       f o o S e r v i c e      . 

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 76/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       6 9   

5 . 3 . 3 R o l l b a c k      

Q u e s t a s e z i o n e d e s c r i v e c o m e s i a p o s s i b i l e c o n t r o l l a r e i l r o l l b a c k d i u n a t r a n s a z i o n e i n m o d o      

d i c h i a r a t i v o .  

I l m o d o m i g l i o r e p e r c o m u n i c a r e a l c o n t a i n e r c o m e g e s t i r e i l r o l l b a c k è q u e l l o d i s o l l e v a r e      

u n '  E x c e p t i o n      d a c o d i c e c h e v i e n e e s e g u i t a n e l c o n t e s t o d i u n a t r a n s a z i o n e . S p r i n g c a t t u r e r à      

o g n i    E x c e p t i o n      n o n g e s t i t a d e t e r m i n a n d o s e m a r c a r e l a t r a n s a z i o n e p e r i l r o l l b a c k o n o .  

I n q u e s t a c o n g u r a z i o n e d i d e f a u l t , S p r i n g m a r c a p e r i l r o l l b a c k s o l o l e t r a n s a z i o n i c h e      

s o l l e v a n o u n ' e c c e z i o n e u n c h e c k e d , o v v e r o q u a n d o v i e n e s o l l e v a t a u n ' e c c e z i o n e i s t a n z a o s o t -    

t o c l a s s e d i    R u n t i m e E x c e p t i o n      . P e r l e e c c e z i o n i c h e c k e d n o n v i e n e a t t i v a t o n e s s u n r o l l b a c k d i    

d e f a u l t .  

E ' p o s s i b i l e c o n g u r a r e e s a t t a m e n t e p e r q u a l i e c c e z i o n i a t t i v a r e i l r o l l b a c k , i n c l u s e l e      

e c c e z i o n i c h e c k e d . I l s e g u e n t e f r a m m e n t o X M L m o s t r a c o m e f a r e :  

< t x : a d v i c e i d = " t x A d v i c e " t r a n s a c t i o n - m a n a g e r = " t x M a n a g e r " >      

< t x : a t t r i b u t e s >      

< t x : m e t h o d n a m e = " g e t * " r e a d - o n l y = " t r u e " r o l l b a c k - f o r = " N o P r o d u c t I n S t o c k E x c e p t i o n " / >      

< t x : m e t h o d n a m e = " * " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

E ' p o s s i b i l e s p e c i c a r e a n c h e l e r e g o l e p e r n o n a t t i v a r e i l r o l l b a c k , s e n o n s i v u o l e a n -    

n u l l a r e l a t r a n s a z i o n e a l s o l l e v a m e n t o d i u n ' e c c e z i o n e . I l s e g u e n t e f r a m m e n t o X M L m o s t r a      

u n e s e m p i o :  

< t x : a d v i c e i d = " t x A d v i c e " >      

< t x : a t t r i b u t e s >      

< t x : m e t h o d n a m e = " u p d a t e S t o c k " n o - r o l l b a c k - f o r = " I n s t r u m e n t N o t F o u n d E x c e p t i o n " / >      

< t x : m e t h o d n a m e = " * " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

Q u a n d o c o e s i s t o n o e n t r a m b e l e n o t a z i o n i , l a p i ù s t r i n g e n t e è q u e l l a c h e v i n c e . V e d i a m o l o      

n e l s e g u e n t e e s e m p i o :  

< t x : a d v i c e i d = " t x A d v i c e " >      

< t x : a t t r i b u t e s >      

< t x : m e t h o d n a m e = " * "      

r o l l b a c k - f o r = " T h r o w a b l e "      

n o - r o l l b a c k - f o r = " I n s t r u m e n t N o t F o u n d E x c e p t i o n " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

O g n i e c c e z i o n e t r a n n e q u e l l e d i t i p o      I n s t r u m e n t N o t F o u n d E x c e p t i o n      p r o v o c h e r a n n o u n      

r o l l b a c k d e l l a t r a n s a z i o n e c h e l e h a s o l l e v a t e .  

5 . 3 . 4 C o n g u r a z i o n e d i e r e n t i p e r b e a n d i e r e n t i    

C o n s i d e r i a m o u n o s c e n a r i o d o v e s i h a u n c e r t o n u m e r o d i o g g e t t i n e l l o s t r a t o d e i s e r v i z i e s i    

v o g l i o n o a p p l i c a r e r e g o l e t r a n s a z i o n a l i d i e r e n t i t r a i v a r i o g g e t t i i n q u e s t i o n e . E ' p o s s i b i l e      

f a r l o d e n e n d o d i e r e n t i    < a o p : a d v i s o r / >        c o n d i e r e n t i p o i n t c u t .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 77/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 0   

A s s u m i a m o c h e t u t t i l e c l a s s i d i s e r v i z i o s o n o d e n i t e a l l ' i n t e r n o d e l p a c k a g e      x . y . s e r v i c e      . 

P e r a v e r e u n a c o n g u r a z i o n e t r a n s a z i o n a l e d i d e f a u l t t u t t i i b e a n s c h e s o n o i s t a n z e d i c l a s s i    

d e n i t e i n q u e s t o p a c k a g e ( e n e i s o t t o p a c k a g e ) e c h e h a n n o i n o m i c h e t e r m i n a n o c o n S e r v i c e ,  

s i p u ò s c r i v e r e q u e l l o c h e s e g u e :  

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " s e r v i c e O p e r a t i o n " e x p r e s s i o n = " e x e c u t i o n ( * x . y . s e r v i c e . . * S e r v i c e . * ( . . ) )

< a o p : a d v i s o r p o i n t c u t - r e f = " s e r v i c e O p e r a t i o n " a d v i c e - r e f = " t x A d v i c e " / >      

< / a o p : c o n f i g >      

< ! - - q u e s t i d u e b e a n s s a r a n n o t r a n s a z i o n a l i . . . - - >      

< b e a n i d = " f o o S e r v i c e " c l a s s = " x . y . s e r v i c e . D e f a u l t F o o S e r v i c e " / >      

< b e a n i d = " b a r S e r v i c e " c l a s s = " x . y . s e r v i c e . e x t r a s . S i m p l e B a r S e r v i c e " / >      

< ! - - . . . e q u e s t i d u e n o - - >      

< b e a n i d = " a n o t h e r S e r v i c e " c l a s s = " o r g . x y z . S o m e S e r v i c e " / > / / n o n è n e l p a c k a g e g i u s t o      

< b e a n i d = " b a r M a n a g e r " c l a s s = " x . y . s e r v i c e . S i m p l e B a r M a n a g e r " / > / / n o n f i n i s c e c o n ' S e r v i c e '    

< t x : a d v i c e i d = " t x A d v i c e " >      

< t x : a t t r i b u t e s >      

< t x : m e t h o d n a m e = " g e t * " r e a d - o n l y = " t r u e " / >      

< t x : m e t h o d n a m e = " * " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

L ' e s e m p i o c h e s e g u e m o s t r a c o m e r e a l i z z a r e d u e c o n g u r a z i o n e c o m p l e t a m e n t e d i e r e n t i .  

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " d e f a u l t S e r v i c e O p e r a t i o n "      

e x p r e s s i o n = " e x e c u t i o n ( * x . y . s e r v i c e . * S e r v i c e . * ( . . ) ) " / >      

< a o p : p o i n t c u t i d = " n o T x S e r v i c e O p e r a t i o n "      

e x p r e s s i o n = " e x e c u t i o n ( * x . y . s e r v i c e . d d l . D e f a u l t D d l M a n a g e r . * ( . . ) ) " / >      

< a o p : a d v i s o r p o i n t c u t - r e f = " d e f a u l t S e r v i c e O p e r a t i o n " a d v i c e - r e f = " d e f a u l t T x A d v i c e " / >      

< a o p : a d v i s o r p o i n t c u t - r e f = " n o T x S e r v i c e O p e r a t i o n " a d v i c e - r e f = " n o T x A d v i c e " / >      

< / a o p : c o n f i g >      

< ! - - q u e s t o b e a n s a r à t r a n s a z i o n a l e - - >      

< b e a n i d = " f o o S e r v i c e " c l a s s = " x . y . s e r v i c e . D e f a u l t F o o S e r v i c e " / >      

< ! - - a n c h e q u e s t o b e a n s a r à t r a n s a z i o n a l e , m a c o n u n a c o n f i g u r a z i o n e d i f f e r e n t e - - >      

< b e a n i d = " a n o t h e r F o o S e r v i c e " c l a s s = " x . y . s e r v i c e . d d l . D e f a u l t D d l M a n a g e r " / >      

< t x : a d v i c e i d = " d e f a u l t T x A d v i c e " >      

< t x : a t t r i b u t e s >      

< t x : m e t h o d n a m e = " g e t * " r e a d - o n l y = " t r u e " / >      

< t x : m e t h o d n a m e = " * " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 78/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 1   

< t x : a d v i c e i d = " n o T x A d v i c e " >      

< t x : a t t r i b u t e s >      

< t x : m e t h o d n a m e = " * " p r o p a g a t i o n = " N E V E R " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

5 . 3 . 5 < t x : a d v i c e / >        

Q u e s t a s e z i o n e r i a s s u m e l e v a r i e c o n g u r a z i o n i c h e p o s s o n o e s s e r e s p e c i c a t e u s a n d o q u e s t o      

t a g . L e i m p o s t a z i o n i d i d e f a u l t s o n o l e s e g u e n t i :  

       P r o p a g a t i o n è s e t t a t a c o m e R E Q U I R E D .  

       I s o l a t i o n è s e t t a t o c o m e D E F A U L T .  

       T r a s a c t i o n è s e t t a t o c o m e      r e a d / w r i t e      

       T i m e o u t è s e t t a t o a l v a l o r e d i d e f a u l t d e l s i s t e m a d i t r a n s a z i o n e i n u s o , o p p u r e n o n è      

s e t t a t o s e q u e s t a f u n z i o n a l i t à n o n è s u p p o r t a t a .  

       T u t t e l e t r a n s a z i o n i c h e s o l l e v a n o u n a      R u n t i m e E x c e p t i o n      v e n g o n o r o l l b a c k a t e , e t u t t e      

l e e c c e z i o n i c h e c k e d n o .  

Q u e s t i s e t t a g g i s i p o s s o n o c a m b i a r e . I v a r i a t t r i b u t i d e l l ' e l e m e n t o      < t x : m e t h o d / >        s o n o      

r i a s s u n t i i n t a b e l l a 5 . 1 .  

A t t r i b u t o R i c h i e s t o ? D e f a u l t D e s c r i z i o n e      

n a m e s i N o m e d e l m e t o d o c h e s i v u o l e      

a s s o c i a r e a d u n a o p i ù t r a n s a z i o n i    

p r o p a g a t i o n n o R E Q U I R E D C o m p o r t a m e n t o d i p r o p a g a t i o n      

i s o l a t i o n n o D E F A U L T L i v e l l o d i i s o l a t i o n      

t i m e o u t n o - 1 T i m e o u t d e l l a t r a n s a z i o n e      

r e a d - o n l y n o f a l s e L a t r a n s a z i o n e è r e a d - o n l y ?      

r o l l b a c k - f o r n o       E x c e p t i o n ( s )    c h e d e t e r m i n a n o r o l l b a c k      

n o - r o l l b a c k - f o r n o       E x c e p t i o n ( s )    c h e n o n d e t e r m i n a n o r o l l b a c k      

T a b e l l a 5 . 1 : o p z i o n i d i    < t x : m e t h o d / >        

5 . 3 . 6 @ T r a n s a c t i o n a l    

O l t r e a l l ' a p p r o c c i o d i c h i a r a t i v o , è p o s s i b i l e u t i l i z z a r e l e a n n o t a z i o n i . D i c h i a r a r e l e t r a n s a z i o n i    

d i r e t t a m e n t e a l l ' i n t e r n o d e l c o d i c e J a v a p o n e q u e s t e d i c h i a r a z i o n i m o l t o v i c i n e a l c o d i c e .  

L ' u s o d e l l ' a n n o t a z i o n e      @ T r a n s a c t i o n a l    è i l l u s t r a t o n e l s e g u e n t e e s e m p i o :  

/ / l a c l a s s e c h e i m p l e m e n t a i l s e r v i z i o c h e v o g l i a m o r e n d e r e t r a n s a z i o n a l e      

@ T r a n s a c t i o n a l      

p u b l i c c l a s s D e f a u l t F o o S e r v i c e i m p l e m e n t s F o o S e r v i c e {      

F o o g e t F o o ( S t r i n g f o o N a m e ) ;    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 79/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 2   

F o o g e t F o o ( S t r i n g f o o N a m e , S t r i n g b a r N a m e ) ;    

v o i d i n s e r t F o o ( F o o f o o ) ;    

v o i d u p d a t e F o o ( F o o f o o ) ;    

}   

Q u a n d o t a l e b e a n è d e n i t o a l l ' i n t e r n o d e l c o n t a i n e r I o C , l ' i s t a n z a d e l b e a n p u ò e s s e r e      

r e s a t r a n s a z i o n a l e a g g i u n g e n d o u n a r i g a a l l ' X M L :  

< ! - - q u e s t o è l ' o g g e t t o c h e v o g l i a m o r e n d e r e t r a n s a z i o n a l e - - >      

< b e a n i d = " f o o S e r v i c e " c l a s s = " x . y . s e r v i c e . D e f a u l t F o o S e r v i c e " / >      

< ! - - a b i l i t a l a c o n f i g u r a z i o n e d e l l e t r a n s a z i o n i t r a m i t e a n n o t a z i o n i - - >      

< t x : a n n o t a t i o n - d r i v e n t r a n s a c t i o n - m a n a g e r = " t x M a n a g e r " / >      

< ! - - u n P l a t f o r m T r a n s a c t i o n M a n a g e r è r i c h i e s t o - - >      

< b e a n i d = " t x M a n a g e r " c l a s s = " o r g . s p r i n g f r a m e w o r k . j d b c . d a t a s o u r c e . D a t a S o u r c e T r a n s a c t i o n M a n a g e

< p r o p e r t y n a m e = " d a t a S o u r c e " r e f = " d a t a S o u r c e " / >      

< / b e a n >      

Q u a n d o s i u s a n o i p r o x y , s i d o v r e b b e a p p l i c a r e l ' a n n o t a z i o n e      @ T r a n s a c t i o n a l    s o l o s u i    

m e t o d i p u b b l i c i . S e l o s i a p p l i c a s u m e t o d i p r o t e t t i o p r i v a t i , n o n v i e n e s o l l e v a t o n e s s u n      

e r r o r e , m a i l m e t o d o a n n o t a t o n o n m o s t r a l a p r o p r i a c o n g u r a z i o n e t r a n s a z i o n a l e . V a l u t a r e      

i n q u e s t o c a s o l ' u s o d i A s p e c t J .  

E ' p o s s i b i l e p i a z z a r e q u e s t a a n n o t a z i o n e p r i m a d e l l a d e n i z i o n e d i u n ' i n t e r f a c c i a , d i u n      

m e t o d o d i u n ' i n t e r f a c c i a , d e l l a d e n i z i o n e d i u n a c l a s s e o d i u n m e t o d o p u b b l i c o d i u n a c l a s s e .  

C o m u n q u e , l a s o l a p r e s e n z a d e l l ' a n n o t a z i o n e n o n è s u c i e n t e a d a t t i v a r e i l c o m p o r t a m e n t o      

t r a n s a z i o n a l e . L ' a n n o t a z i o n e è i n f a t t i u n s e m p l i c e m e t a d a t o p e r c o n g u r a r e i n m o d o a p p r o -    

p r i a t o i b e a n s c o n t a l e c o m p o r t a m e n t o . N e l l ' e s e m p i o a p p e n a v i s t o , t a l e c o m p o r t a m e n t o è p o i    

a b i l i t a t o d a l l ' e l e m e n t o      < t x : a n n o t a t i o n - d r i v e n / >        . 

S i c o n s i g l i a d i a n n o t a r e l e c l a s s i c o n c r e t e ( o i m e t o d i d i c l a s s i c o n c r e t e ) e n o n l e i n t e r f a c c e      

( o i m e t o d i a l l ' i n t e r n o d e l l e i n t e r f a c c e ) .  

I n t a b e l l a 5 . 2 s o n o r i p o r t a t e l e c o n g u r a z i o n i d e l l ' e l e m e n t o      < t x : a n n o t a t i o n - d r i v e n / >        . 

E ' p o s s i b i l e a n n o t a r e s i a u n a c l a s s e s i a i s u o i m e t o d i i n t e r n i , p e r d a r e d i v e r s i l i v e l l i d i    

c o n g u r a z i o n e . C o n s i d e r i a m o i l s e g u e n t e e s e m p i o :  

@ T r a n s a c t i o n a l ( r e a d O n l y = t r u e )    

p u b l i c c l a s s D e f a u l t F o o S e r v i c e i m p l e m e n t s F o o S e r v i c e {      

p u b l i c F o o g e t F o o ( S t r i n g f o o N a m e ) {      

/ / f a q u a l c o s a      

}   

/ / q u e s t a c o n f i g u r a z i o n e h a p r e c e d e n z a      

@ T r a n s a c t i o n a l ( r e a d O n l y = f a l s e , p r o p a g a t i o n = P r o p a g a t i o n . R E Q U I R E S _ N E W )    

p u b l i c v o i d u p d a t e F o o ( F o o f o o ) {      

/ / f a q u a l c o s a      

}   

}   

Q u a n d o v i e n e c h i a m a t o i l m e t o d o      g e t F o o ( . . )    , v a l e l a r e g o l a g e n e r a l e a l l ' i n i z i o d e l l a d e n i z i o n e      

d e l l a c l a s s e . Q u a n d o i n v e c e v i e n e c h i a m a t o i l m e t o d o      u p d a t e F o o ( . . )    , p o i c h è a q u e s t o m e t o d o      

è s t a t a a p p l i c a t a u n a r e g o l a , q u e s t a h a p r e c e d e n z a s u q u e l l a g e n e r a l e .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 80/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 3   

A t t r i b u t o D e f a u l t D e s c r i z i o n e      

t r a n s a c t i o n - m a n a g e r t r a n s a c t i o n M a n a g e r N o m e d e l t r a n s a c t i o n m a n a g e r c h e s i    

i n t e n d e u s a r e .  

m o d e p r o x y I l c o m p o r t a m e n t o d i d e f a u l t f a s ì    

c h e v e n g a u s a t o i l m e c c a n i s m o d e i    

p r o x y d i S p r i n g A O P . L a m o d a l i t à      

a l t e r n a t i v a , a s p e c t j , i n d i c a      

c h e i l m e c c a n i s m o u s a t o s a r à q u e l l o      

b a s a t o s u a s p e t t i c o s t r u i t i c o n A s p e c t J .  

p r o x y - t a r g e t - c l a s s f a l s e E ' a p p l i c a t o s o l o s e m o d e = p r o x y .  

C o n t r o l l a i l t i p o d i p r o x y c h e v i e n e      

c r e a t o s u i b e a n a n n o t a t i c o n      

@ T r a n s a c t i o n a l    . Q u a n d o l ' a t t r i b u t o      

è s e t t a t o a      t r u e      v e n g o n o      

u t i l i z z a t i i p r o x y c l a s s - b a s e d .  

Q u a n d o è s e t t a t o a       f a l s e      

v e n g o n o u t i l i z z a t i i p r o x y J D K        

s t a n d a r d b a s a t i s u l l e i n t e r f a c c e .  

o r d e r O r d e r e d . L O W E S T _ P R E C E D E N C E D e n i s c e l ' o r d i n e d i p r e c e d e n z e      

t r a g l i a d v i c e d a e s e g u i r e s u u n      

b e a n m a r c a t o c o m e      @ T r a n s a c t i o n a l    . 

T a b e l l a 5 . 2 : o p z i o n i d i    < t x : a n n o t a t i o n - d r i v e n / >        

5 . 3 . 6 . 1 C o n g u r a z i o n e d i @ T r a n s a c t i o n a l    

L e i m p o s t a z i o n i d i d e f a u l t d e l l ' a n n o t a t i o n @ T r a n s a c t i o n a l s o n o l e s e g u e n t i :  

       P r o p a g a t i o n è s e t t a t a P R O P A G A T O N _ R E Q U I R E D        

       I s o l a t i o n è s e t t a t o I S O L A T I O N _ D E F A U T        

      T r a n s a c t i o n è s e t t a t o c o m e      r e a d / w r i t e      

       T i m e o u t è s e t t a t o a q u e l l o d i d e f a u l t d e l s i s t e m a t r a n s a z i o n a l e i n u s o , o p p u r e n o n è      

s e t t a t o s e n o n è s u p p o r t a t o .  

      T u t t e l e t r a n s a z i o n i c h e s o l l e v a n o u n a      R u n t i m e E x c e p t i o n      v e n g o n o r o l l b a c k a t e , e t u t t e      

l e e c c e z i o n i c h e c k e d n o .  

I n t a b e l l a 5 . 3 s o n o r i p o r t a t e t u t t i i s e t t a g g i d e i v a r i a t t r i b u t i d i    @ T r a n s a c t i o n a l    . 

5 . 3 . 7 P r o p a g a z i o n e d e l l e t r a n s a z i o n i    

5 . 3 . 7 . 1 R e q u i r e d      

Q u a n d o      p r o p a g a t i o n      è s e t t a t o c o m e P R O P A G A T I O N _ R E Q U I R E D , v i e n e c r e a t o u n o s c o p e      

l o g i c o d i t r a n s a z i o n e p e r o g n i m e t o d o a c u i q u e s t o s e t t a g g i o è a p p l i c a t o . O g n u n o d i q u e s t i    

s c o p e d e t e r m i n a l o s t a t u s r o l l b a c k - o n l y i n m a n i e r a i n d i v i d u a l e , c o n l o s c o p e t r a n s a z i o n a l e      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 81/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 4   

A t t r i b u t o T i p o D e s c r i z i o n e      

p r o p a g a t i o n e n u m :  P r o p a g a t i o n       O p z i o n a l e      

i s o l a t i o n e n u m :  I s o l a t i o n       O p z i o n a l e      

r e a d O n l y b o o l e a n r e a d / w r i t e v s r e a d o n l y      

t i m e o u t i n t ( i n s e c o n d i ) t i m e o u t    

r o l l b a c k F o r A r r a y d i    C l a s s      c h e A r r a y d i e c c e z i o n i c h e p o s s o n o      

d e v o n o e s s e r e d e r i v a t i d a p o r t a r e a l r o l l b a c k .  

T h r o w a b l e      

r o l l b a c k F o r C l a s s n a m e A r r a y d i    C l a s s      c h e A r r a y d i n o m i d i e c c e z i o n i c h e      

d e v o n o e s s e r e d e r i v a t i d a p o s s o n o p o r t a r e a l r o l l b a c k .  

T h r o w a b l e      

n o R o l l b a c k F o r A r r a y d i    C l a s s      c h e A r r a y d i e c c e z i o n i c h e n o n p o r t a n o      

d e v o n o e s s e r e d e r i v a t i d a a l r o l l b a c k .  

T h r o w a b l e      

n o R o l l b a c k F o r C l a s s n a m e A r r a y d i    C l a s s      c h e A r r a y d i n o m i d i e c c e z i o n i c h e n o n      

d e v o n o e s s e r e d e r i v a t i d a p o r t a n o a l r o l l b a c k .  

T h r o w a b l e      

T a b e l l a 5 . 3 : o p z i o n i d i    < t x : a n n o t a t i o n - d r i v e n / >        

e s t e r n o i n d i p e n d e n t e d a q u e l l o i n t e r n o . N a t u r a l m e n t e , n e l c a s o d e l c o m p o r t a m e n t o s t a n -    

d a r d d i P R O P A G A T I O N _ R E Q U I R E D , t u t t i q u e s t i s c o p e s a r a n n o m a p p a t i v e r s o l a s t e s s a      

t r a n s a z i o n e s i c a . E ' o v v i o c h e u n r o l l b a c k d e l l a t r a n s a z i o n e i n t e r n a a v r à e e t t o a n c h e s u l l a      

p o s s i b i l i t à d i c o m m i t d e l l a t r a n s a z i o n e e s t e r n a .  

5 . 3 . 7 . 2 R e q u i r e s N e w        

P R O P A G A T I O N _ R E Q U I R E S _ N E W a d i e r e n z a d i P R O P A G A T I O N _ R E Q U I R E D , u t i l i z -    

z a u n a t r a n s a z i o n e c o m p l e t a m e n t e i n d i p e n d e n t e p e r o g n i s c o p e . I n q u e s t o c a s o , l e t r a n s a z i o n i    

s i c h e s o n o d i e r e n t i e q u i n d i p o s s o n o c o m m i t t a r e o e e t t u a r e u n r o l l b a c k i n m a n i e r a i n -    

d i p e n d e n t e .  

5 . 3 . 7 . 3 N e s t e d      

P R O P A G A T I O N _ N E S T E D u s a u n a s i n g o l a t r a n s a z i o n e s i c a c o n p i ù s a v e p o i n t s v e r s o i q u a l i    

è p o s s i b i l e f a r e i l r o l l b a c k . Q u e s t o c o m p o r t a m e n t o è p o s s i b i l e s o l o c o n r i s o r s e J D B C .  

5 . 3 . 8 A d v i s e p e r l e t r a n s a z i o n i    

S u p p o n i a m o d i v o l e r e s e g u i r e s i a u n a d v i c e t r a n s a z i o n a l e s i a u n a d v i c e c h e g e s t i s c a u n t i m e r    

p e r v a l u t a r e i t e m p i d e l l e t r a n s a z i o n i . C o m e s i p u ò f a r e u t i l i z z a n d o l ' e l e m e n t o      < t x : a n n o t a t i o n -    

d r i v e n / >        ?   

Q u a n d o i n v o c h i a m o i l m e t o d o      u p d a t e F o o ( F o o )    n o i v o g l i a m o v e d e r e l a s e g u e n t e s e q u e n z a      

d i a z i o n i :  

1 . V i e n e e s e g u i t o l ' a s p e t t o c o n g u r a t o p e r g e s t i r e i l t i m e r .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 82/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 5   

2 . V i e n e e s e g u i t o l ' a d v i c e t r a n s a z i o n a l e .  

3 . V i e n e e s e g u i t o i l m e t o d o      u p d a t e F o o ( . . )    . 

4 . V i e n e c o m m i t t a t a l a t r a n s a z i o n e .  

5 . L ' a s p e t t o i n i z i a l e r i p o r t a l ' e s a t t a d u r a t a d e l l a t r a n s a z i o n e .  

Q u e s t o è i l c o d i c e d ' e s e m p i o p e r l a s i t u a z i o n e s o p r a d e s c r i t t a . L e p r e c e d e n z e d e g l i a d v i c e      

s o n o c o n t r o l l a t i t r a m i t e l ' i n t e r f a c c a      O r d e r e d      . 

p a c k a g e x . y ;    

i m p o r t o r g . a s p e c t j . l a n g . P r o c e e d i n g J o i n P o i n t ;    

i m p o r t o r g . s p r i n g f r a m e w o r k . u t i l . S t o p W a t c h ;    

i m p o r t o r g . s p r i n g f r a m e w o r k . c o r e . O r d e r e d ;    

p u b l i c c l a s s S i m p l e P r o f i l e r i m p l e m e n t s O r d e r e d {      

p r i v a t e i n t o r d e r ;    

/ / c i p e r m e t t e d i c o n t r o l l a r e l e p r e c e d e n z e d e g l i a d v i c e      

p u b l i c i n t g e t O r d e r ( ) {      

r e t u r n t h i s . o r d e r ;    

}   

p u b l i c v o i d s e t O r d e r ( i n t o r d e r ) {      

t h i s . o r d e r = o r d e r ;    

}   

/ / q u e s t o m e t o d o è u n a d v i c e ' a r o u n d '    

p u b l i c O b j e c t p r o f i l e ( P r o c e e d i n g J o i n P o i n t c a l l ) t h r o w s T h r o w a b l e {      

O b j e c t r e t u r n V a l u e ;    

S t o p W a t c h c l o c k = n e w S t o p W a t c h ( g e t C l a s s ( ) . g e t N a m e ( ) ) ;    

t r y {      

c l o c k . s t a r t ( c a l l . t o S h o r t S t r i n g ( ) ) ;    

r e t u r n V a l u e = c a l l . p r o c e e d ( ) ;    

} f i n a l l y {      

c l o c k . s t o p ( ) ;    

S y s t e m . o u t . p r i n t l n ( c l o c k . p r e t t y P r i n t ( ) ) ;    

}   

r e t u r n r e t u r n V a l u e ;    

}   

}   

Q u e s t o è i l l e d i c o n g u r a z i o n e d i S p r i n g .  

< ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >      

< b e a n s x m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "      

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "      

x m l n s : a o p = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p "      

x m l n s : t x = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x "      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 83/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 6   

x s i : s c h e m a L o c a t i o n = "      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s / s p r i n g - b e a n s - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x / s p r i n g - t x - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p / s p r i n g - a o p - 3 . 0 . x s d " >      

< b e a n i d = " f o o S e r v i c e " c l a s s = " x . y . s e r v i c e . D e f a u l t F o o S e r v i c e " / >      

< ! - - q u e s t o è l ' a s p e t t o , d a e s e g u i r e P R I M A d e l l ' a d i v i c e t r a n s a z i o n a l e - - >      

< b e a n i d = " p r o f i l e r " c l a s s = " x . y . S i m p l e P r o f i l e r " >      

< p r o p e r t y n a m e = " o r d e r " v a l u e = " 1 " / >      

< / b e a n >      

< t x : a n n o t a t i o n - d r i v e n t r a n s a c t i o n - m a n a g e r = " t x M a n a g e r " o r d e r = " 2 0 0 " / >      

< a o p : c o n f i g >      

< a o p : a s p e c t i d = " p r o f i l i n g A s p e c t " r e f = " p r o f i l e r " >      

< a o p : p o i n t c u t i d = " s e r v i c e M e t h o d W i t h R e t u r n V a l u e "      

e x p r e s s i o n = " e x e c u t i o n ( ! v o i d x . y . . * S e r v i c e . * ( . . ) ) " / >      

< a o p : a r o u n d m e t h o d = " p r o f i l e " p o i n t c u t - r e f = " s e r v i c e M e t h o d W i t h R e t u r n V a l u e " / >      

< / a o p : a s p e c t >      

< / a o p : c o n f i g >      

< b e a n i d = " d a t a S o u r c e "      

c l a s s = " o r g . a p a c h e . c o m m o n s . d b c p . B a s i c D a t a S o u r c e "      

d e s t r o y - m e t h o d = " c l o s e " >      

< p r o p e r t y n a m e = " d r i v e r C l a s s N a m e " v a l u e = " $ { d r i v e r } " / >      

< p r o p e r t y n a m e = " u r l " v a l u e = " $ { u r l } " / >      

< p r o p e r t y n a m e = " u s e r n a m e " v a l u e = " $ { u s e r n a m e } " / >      

< p r o p e r t y n a m e = " p a s s w o r d " v a l u e = " $ { p a s s w o r d } " / >      

< / b e a n >      

< b e a n i d = " t x M a n a g e r "      

c l a s s = " o r g . s p r i n g f r a m e w o r k . j d b c . d a t a s o u r c e . D a t a S o u r c e T r a n s a c t i o n M a n a g e r " >      

< p r o p e r t y n a m e = " d a t a S o u r c e " r e f = " d a t a S o u r c e " / >      

< / b e a n >      

< / b e a n s >      

I l r i s u l t a t o d i q u e s t a c o n g u r a z i o n e è u n b e a n       f o o S e r v i c e      c h e h a u n a s p e t t o t r a n s a z i o n a l e      

e u n a s p e t t o d i t i m i n g a p p l i c a t i n e l l ' o r d i n e d e s i d e r a t o . E ' p o s s i b i l e , o v v i a m e n t e , c o n g u r a r e      

u n q u a l u n q u e n u m e r o d i a s p e t t i i n q u e s t o m o d o .  

L ' e s e m p i o c h e s e g u e f a e s a t t a m e n t e l a s t e s s a c o s a , m a u s a n d o s o l o l ' a p p r o c c i o d i c h i a r a t i v o      

X M L .  

< ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >      

< b e a n s x m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "      

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "      

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 84/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 7   

x m l n s : a o p = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p "      

x m l n s : t x = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x "      

x s i : s c h e m a L o c a t i o n = "      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s / s p r i n g - b e a n s - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / t x / s p r i n g - t x - 3 . 0 . x s d      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p      

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / a o p / s p r i n g - a o p - 3 . 0 . x s d " >      

< b e a n i d = " f o o S e r v i c e " c l a s s = " x . y . s e r v i c e . D e f a u l t F o o S e r v i c e " / >      

< ! - - a d v i c e t i m e r - - >      

< b e a n i d = " p r o f i l e r " c l a s s = " x . y . S i m p l e P r o f i l e r " >      

< p r o p e r t y n a m e = " o r d e r " v a l u e = " 1 " / >      

< / b e a n >      

< a o p : c o n f i g >      

< a o p : p o i n t c u t i d = " e n t r y P o i n t M e t h o d " e x p r e s s i o n = " e x e c u t i o n ( * x . y . . * S e r v i c e . * ( . . ) ) " / >    

< a o p : a d v i s o r a d v i c e - r e f = " t x A d v i c e " p o i n t c u t - r e f = " e n t r y P o i n t M e t h o d " o r d e r = " 2 " / >      

< a o p : a s p e c t i d = " p r o f i l i n g A s p e c t " r e f = " p r o f i l e r " >      

< a o p : p o i n t c u t i d = " s e r v i c e M e t h o d W i t h R e t u r n V a l u e "      

e x p r e s s i o n = " e x e c u t i o n ( ! v o i d x . y . . * S e r v i c e . * ( . . ) ) " / >      

< a o p : a r o u n d m e t h o d = " p r o f i l e " p o i n t c u t - r e f = " s e r v i c e M e t h o d W i t h R e t u r n V a l u e " / >      

< / a o p : a s p e c t >      

< / a o p : c o n f i g >      

< t x : a d v i c e i d = " t x A d v i c e " t r a n s a c t i o n - m a n a g e r = " t x M a n a g e r " >      

< t x : a t t r i b u t e s >      

< t x : m e t h o d n a m e = " g e t * " r e a d - o n l y = " t r u e " / >      

< t x : m e t h o d n a m e = " * " / >      

< / t x : a t t r i b u t e s >      

< / t x : a d v i c e >      

< / b e a n s >      

5 . 4 G e s t i o n e p r o g r a m m a t i c a d e l l e t r a n s a z i o n i    

5 . 4 . 1 U s a r e i l    P l a t f o r m T r a n s a c t i o n M a n a g e r      

P e r g e s t i r e l e t r a n s a z i o n i è p o s s i b i l e u s a r e i l    o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . P l a t f o r m T r a n s a c t i o n M a n a g e r      

d i r e t t a m e n t e . B i s o g n a s e m p l i c e m e n t e p a s s a r e l ' i m p l e m e n t a z i o n e d e l    P l a t f o r m T r a n s a c t i o n -    

M a n a g e r      a l b e a n c h e l o d e v e u s a r e , t r a m i t e u n r i f e r i m e n t o . P o i , è s u c i e n t e u s a r e i l    T r a n s -    

a c t i o n D e n i t i o n      e i l   T r a n s a c t i o n S t a t u s      p e r i n i z i a r e l a t r a n s a z i o n e , p e r i l r o l l b a c k e p e r i l    

c o m m i t .  

D e f a u l t T r a n s a c t i o n D e f i n i t i o n d e f = n e w D e f a u l t T r a n s a c t i o n D e f i n i t i o n ( ) ;    

d e f . s e t N a m e ( " S o m e T x N a m e " ) ;    

d e f . s e t P r o p a g a t i o n B e h a v i o r ( T r a n s a c t i o n D e f i n i t i o n . P R O P A G A T I O N _ R E Q U I R E D ) ;    

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 85/86

 

C A P I T O L O 5 . G E S T I O N E D E L L E T R A N S A Z I O N I       7 8   

T r a n s a c t i o n S t a t u s s t a t u s = t x M a n a g e r . g e t T r a n s a c t i o n ( d e f ) ;    

t r y {      

/ / f a i q u a l c o s a      

t x M a n a g e r . c o m m i t ( s t a t u s ) ;    

} c a t c h ( M y E x c e p t i o n e x ) {      

t x M a n a g e r . r o l l b a c k ( s t a t u s ) ;    

t h r o w e x ;    

}   

5 . 5 G e s t i o n e d i c h i a r a t i v a V s g e s t i o n e p r o g r a m m a t i c a      

L a s c e l t a c a d e s u l l ' u n o o s u l l ' a l t r o a p p r o c c i o p r i n c i p a l m e n t e i n b a s e a l n u m e r o d i m e t o d i    

t r a n s a z i o n a l i d e l l a n o s t r a a p p l i c a z i o n i . S e s o n o p o c h i , p u ò e s s e r e u n a b u o n a i d e a u t i l i z z a r e l a      

g e s t i o n e p r o g r a m m a t i c a . A l c o n t r a r i o , s e l e t r a n s a z i o n i s o n o m o l t e , l ' a p p r o c c i o d i c h i a r a t i v o è      

s e n z ' a l t r o p i ù s e m p l i c e e c o m o d o .  

5/13/2018 Manuale Spring3 - slidepdf.com

http://slidepdf.com/reader/full/manuale-spring3 86/86

 

B i b l i o g r a a      

[ b o o ]   W i k i p e d i a      . 

[ b o o 0 9 ]   S p r i n g - J a v a A p p l i c a t i o n F r a m e w o r k - R e f e r e n c e D o c u m e n t a t i o n      . S p r i n g S o u r c e ,  

2 0 0 9 .  

[ T e a 0 3 ] T h e A s p e c t J T e a m .   T h e A s p e c t J P r o g r a m m i n g G u i d e      . X e r o x C o r p o r a t i o n , 2 0 0 3 .  

7 9