Este artículo presenta la explicación detallada de los parámetros pasados al método de notificación utilizando secciones de resorte. Se comparte contigo, como sigue:
Escena:
BlankDisc representa una entidad CD, y las canciones en una cierta pista se pueden reproducir directamente a través del método PlayTrack ().
El requisito es registrar el número de veces que se reproduce cada pista.
Una forma es modificar el método PlayTrack () y registrar este número directamente en cada llamada. Sin embargo, el número de reproducciones de la pista de grabación es diferente de la obra en sí, por lo que no debe pertenecer al método PlayTrack (). Esta debería ser la tarea que se completará en la sección.
Interfaz compactDisc
interfaz pública compactdisc {// reproducir la canción void playtrack (pista de cadena); } Implementar la clase BlankDisc
public class BlankDisc implementa CompactDisc {Título de cadena privada; artista de cuerda privada; Lista privada <String> pistas; public void settitle (título de cadena) {this.title = title; } public void setArtist (String Artist) {this.Artist = Artist; } public void setTracks (list <string> Tracks) {this.tracks = Tracks; } @Override public void Playtrack (String Track) {System.out.println ("-Track:" + Track); }} Tracecount
/*** Tarea de la clase de sección: Registre el número de veces que cada pista es reproducida* creada por el administrador en 2017/12/1. */ @Component @Aspect Public Class TrackCounter {private Map <String, Integer> TrackCounts = new HashMap <> (); @PointCut ("Ejecution (* Capítulo04.aop_args.blankdisc.playtrack (string)) && args (Track)") public void TrackPlayed (String Track) {} // antes ("TrackPlayed (Track)") public void CountTrack (String Track) {int CurrentCount = GetPlayCount (Track); TrackCounts.put (Track, CurrentCount + 1); } public int getPlayCount (String Track) {return trackCounts.containskey (pista)? TrackCounts.get (Track): 0; }} Archivo de configuración de ApplicationContext.xml
<context: component-scan base-package = "aop_test, capítulo04" /> <bean id = "compactDisc"> <propiedad name = "title" value = "sgt. Pepper's Lonely Hearts Club Band" /> <Propert Name = "Artist" Value = "The Beatles" /> <Property Name = "Tracks"> <List> <Valor> sgt. Pepper's Lonely Hearts Club Band </value> <value> con un poco de ayuda de mis amigos </value> <value> Lucy en el cielo con diamantes </value> <value> obteniendo mejor </value> <valor> arreglando un agujero </value> <value> ella está dejando inicio </value> ser el beneficio del Sr. Kite! </Value> <Value> dentro de usted sin usted </value> why whithithin usted <value> Value> Value </value Value> Sesenta y cuatro </valor> <valor> Lovely rita </value> <value> Buenos días buenos días </value> <value> sargento. Pepper's Lonely Hearts Club Band (Reprise) </value> <value> Un día en la vida </value> </list> </property> </bean> <!-Activa la anotación de AOP-> <aop: spectj-autoProxy/>
prueba
@RunWith (SpringJunit4ClassRunner.class) @ContextConfiguration ("ClassPath: ApplicationContext.xml") Class pública test_aop_args {@aUtowired CompactDisc CD; @Autowired TrackCounter TrackCounter; @Test public void test () {cd.playtrack ("Sgt. Pepper's Lonely Hearts Club Band"); cd.playtrack ("con un poco de ayuda de mis amigos"); cd.playtrack ("Lucy in the Sky with Diamonds"); CD.Playtrack ("Sgt. Pepper's Lonely Hearts Club Band"); cd.playtrack ("con un poco de ayuda de mis amigos"); CD.Playtrack ("Sgt. Pepper's Lonely Hearts Club Band"); System.out.println (TrackCounter.getPlayCount ("Sgt. Pepper's Lonely Hearts Club Band")); System.out.println (TrackCounter.getPlayCount ("con un poco de ayuda de mis amigos")); System.out.println (TrackCounter.getPlayCount ("Lucy in the Sky with Diamonds")); System.out.println (TrackCounter.getPlayCount ("Getting Better")); }} Resultados de la prueba 3, 2, 1, 0
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.