AOP mit AspectJ nicht im Frühjahr?
Aspekt meiner Klasse sein wird ,
@Configuration
@EnableAspectJAutoProxy
@Component
@Aspect
public class AspectClass {
@Before("execution(* com.pointel.aop.test1.AopTest.beforeAspect())")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before running the beforeAspect() in the AopTest.java class!");
System.out.println("Hijacked Method name : " + joinPoint.getSignature().getName());
System.out.println("************************");
}
}
Meine anderen java-Klasse
public class AopTest {
public void beforeAspect() {
System.out.println("This is beforeAspect() !");
}
}
Meine Main Klasse ist
public class MainMethod {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("ApplicationContext/applicationContext.xml");
AopTest test = (AopTest)context.getBean("bean1");
test.beforeAspect();
}
}
Meine applicationContext.xml ist ,
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd ">
<bean id="bean1" class="com.pointel.aop.test1.AopTest" />
</beans>
In diesem @Before("execution(* com.pointel.aop.test1.AopTest.beforeAspect())")
im AspectClass
wird nicht ausgeführt, bevor die beforeAspect()
im AopTest
bei der Ausführung der Main-Methode.
Gute Antworten sind auf jeden Fall geschätzt.
Dont machen Sie Ihre Configuration-Klasse die gleiche wie die Aspekt-Klasse. Außerdem müssen Sie
Ich löschte die
Werfen Sie einen Blick unten, es gibt ein paar Dinge, die Sie fehlt.
@ComponentScan
Sie das Paket Ihrem Aspekt.Ich löschte die
@Configuration
enthalten und die @ComponentScan
aber immer noch nicht funktioniert.Werfen Sie einen Blick unten, es gibt ein paar Dinge, die Sie fehlt.
InformationsquelleAutor Human Being | 2013-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst, ob Sie eine annotation-basierte Konfiguration verwenden
AnnotationConfigApplicationContext
stattFileSystemXmlApplicationContext
. Und loszuwerden, dieapplicationContext.xml
- Datei und fügen Sie einfach ein@Bean
Methode in der configuration-Klasse. So etwas wie dieses:In Ihrem Haupt -
In
AspectClass
sollten Sie@Component
,@Aspect
, und Ihre Methode haben sollte, den Rat oder die pointcut-annotation wie@Before
. Es muss ein@Component
, so dass der Frühling weiß zu Scannen.AspectClass
?In
AspectClass
sollten Sie@Component
,@Aspect
, und Ihre Methode haben sollte, den Rat oder die pointcut-annotation wie@Before
. Es muss ein@Component
, so dass der Frühling weiß zu Scannen. Aktualisiert meine AntwortWas ist die Notwendigkeit für
context.refresh();
? Habe die Lösung ohne die"context.refresh();
'.Sie können Konfigurationen ändern zur Laufzeit, (denke ich).
refresh()
im Grunde Tropfen alle Bohnen und erstellt für die neue Konfiguration.AopTest
Konstruktor wird zweimal aufgerufen und weißt du auch warum ?InformationsquelleAutor Sotirios Delimanolis
Hier etwas code hinzufügen müssen im xml-Format mit Anmerkungen-
1.für @component-annotation.
2.danach verwenden Sie component-scan, um alle annotiert bean-Klasse, die mit @component-annotation,und verwenden aop autoproxy-
für Beispiele besuchen-http://www.technicaltoday.com/p/spring.html
xml
rein und sucht auf Basis einer annotationAspectJ
.InformationsquelleAutor NavinBansal
Fehlt der Punkt schneiden definition in Ihre Aspekt-Klasse.
Beispielsweise;
Müssen Sie zunächst defin den Punkt zu Weben Ihre Aspekt. Sie tun dies, indem mit einem Punkt schneidet.Es ist der Punkt, Schnitt name geben Sie in der @Before-annotation. Haben Sie einen Blick auf meine blog-post für weitere Informationen @ http://dinukaroshan.blogspot.com/2010/06/aop-with-spring.html
InformationsquelleAutor dinukadev
Ich nicht sehen, Ihr
AspectClass
in der Bean-Konfiguration. Sie sollten auch erklären, wie eine Bohne.InformationsquelleAutor ACV