2013-01-04 10 views
5

Mein Aspect ist wie folgt:Können wir für Aspekte der Bohne Definition los mit Spring-AOP

@Aspect 
public class SomeAspect{ 
    //define pointcuts 
    // define Advices pertaining to pointcuts 
} 

Mein Aspekt-config XML-Datei:

<?xml ...?> 
    <beans ... 
    xmlns:aop 
    xmlns:context ..> 
     <bean id="someAspect" class="...SomeAspect"/> 
     <aop:aspectj-autoproxy /> 

    </beans> 

Dies läuft völlig in Ordnung

Was ich benötige:

Ich möchte loswerden Ich schreibe eine Bean-Definition für jeden Aspekt, wie oben in meiner Konfigurations-XML-Datei gezeigt.

versuchte ich folgenden:

Added @Component auf SomeAspect und in XML hinzugefügt <context-component-scan> mit jeweiligem Paket meines Aspect enthalten wird gehofft, dass meine Klasse als Bean und als ein Aspekt aufgegriffen. Allerdings wurde mein Aspekt überhaupt nicht aufgenommen.

Irgendwelche Zeiger?

Antwort

4

Das Element context:component-scan verfügt über ein Unterelement, mit dem Sie Annotationsklassen hinzufügen können, die beim Scannen verwendet werden sollen.

Werfen Sie einen Blick auf das Element context:include-filter und seine Attribute.

<context:component-scan base-package="my.package.to.scan"> 
    <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/> 
</context:component-scan> 

Ich würde denken, was Sie versucht arbeiten würde, aber ohne es genau zu sehen, wie Sie es getan haben, ist es schwer, sicher zu sagen.

+0

Perfekt! es funktioniert nur, wenn der include-filter ... etwas überraschend ist, weil er standardmäßig aufgenommen werden sollte. Danke @ nicholas.hauschild! – Vikram