+ Antworten
Ergebnis 1 bis 2 von 2

Thema: Scala: AOP before/after advice simulieren?

  1. #1
    Global Moderator Megabyte Themenstarter
    Avatar von Landei
    Registriert seit
    31.07.2013
    Ort
    Sandersdorf-Brehna
    Fachbeiträge
    1.002
    Genannt
    168 Post(s)
    Blog-Einträge
    27
    Wenn ich in Java ein Interface und eine Implementierung habe...

    Java Code:
    1.  
    2. public interface Foo {
    3.     public void bar();
    4. }
    5.  
    6. public class FooImpl implements Foo {
    7.     public void bar(){ /* tu was*/ }
    8. }

    ... kann ich z.B. mit Spring AOP eine "before advice" dranklöppeln, die bei jedem Aufruf von bar vorher etwas ausführt. Die Klasse FooImpl bekommt davon nichts mit, und die API ändert sich nicht.

    Kann man das in Scala irgendwie simulieren?

    Natürlich geht sowas:

    Java Code:
    1.  
    2. trait Foo {
    3.     def bar();
    4. }
    5.  
    6. trait FooAdvice extends Foo {
    7.    def bar() {
    8.        /* do advice stuff */  
    9.        barNew()
    10.    }
    11.    def barNew()
    12. }
    13.  
    14. class FooImpl extends FooAdvice {
    15.     def barNew(){ /* tu was*/ }
    16. }

    Aber das ändert natürlich aus FooImpls Sicht die API, und das stört mich...

  2. #2
    Global Moderator Megabyte Themenstarter
    Avatar von Landei
    Registriert seit
    31.07.2013
    Ort
    Sandersdorf-Brehna
    Fachbeiträge
    1.002
    Genannt
    168 Post(s)
    Blog-Einträge
    27
    Und schon erledigt: Der Trick ist, FooAdvice als Trait zu FooImpl "dazuzumixen"

    Details: http://jonasboner.com/2008/02/06/aop...acks-in-scala/
    Geändert von Landei (09.08.2013 um 11:46 Uhr)

+ Antworten Thema als "offen" markieren

Direkt antworten Direkt antworten

Wie viele Beine hat eine Kuh? (Zahlwort)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 05.04.2010, 14:49

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •