D
DukeNukeMe
Gast
Hab leider wiedermal ein Problem, diesmal bei der Verwendung des AOP Konzeptes, denn leider wird mein Aspekt nicht ausgeführt. Hier die relevanten Klassen:
Mein Aspekt-Klasse:
[Java]package de.test.src;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class AspectTest {
public AspectTest(){
}
@Pointcut("execution(* *.give())")
public void doWork() {}
@After("doWork()")
public void owned(){
System.out.println("do work done!");
}
}
[/Java]
Interface:
[Java]package de.test.src;
public interface Test {
public String give();
}
[/Java]
Die implementierte Klasse:
[Java]
package de.test.src;
public class TestImpl implements Test{
public TestImpl(){
}
public String give() {
return "Test";
}
}
[/Java]
Meine Spring Konfigurationsdatei: context.xml (ist im Standard Pfad).
<?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
Index of /schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<aop:aspectj-autoproxy/>
<bean id="aspecttest" class="de.test.src.AspectTest"/>
<bean id="test" class="de.test.src.TestImpl"/>
</beans>
Testklasse:
[Java]
package de.test.src;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import junit.framework.TestCase;
public class SimpleTest extends TestCase {
public void testPizzaService() throws Exception {
XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(
"context.xml"));
Test myTest = (Test) beanFactory
.getBean("test");
System.out.println(myTest.give());
}
}
[/Java]
Eclipse zeigt keinerlei Fehler an und dank der SpringIDE wird auch angezeigt, dass die jeweilige Methode wie gewünscht advised wird. Leider wird beim ausführen der Testklasse nur "Test" auf der Konsole angezeigt und eben nicht "do work done!". Wo ist der Fehler?
Mein Aspekt-Klasse:
[Java]package de.test.src;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class AspectTest {
public AspectTest(){
}
@Pointcut("execution(* *.give())")
public void doWork() {}
@After("doWork()")
public void owned(){
System.out.println("do work done!");
}
}
[/Java]
Interface:
[Java]package de.test.src;
public interface Test {
public String give();
}
[/Java]
Die implementierte Klasse:
[Java]
package de.test.src;
public class TestImpl implements Test{
public TestImpl(){
}
public String give() {
return "Test";
}
}
[/Java]
Meine Spring Konfigurationsdatei: context.xml (ist im Standard Pfad).
<?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
Index of /schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<aop:aspectj-autoproxy/>
<bean id="aspecttest" class="de.test.src.AspectTest"/>
<bean id="test" class="de.test.src.TestImpl"/>
</beans>
Testklasse:
[Java]
package de.test.src;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import junit.framework.TestCase;
public class SimpleTest extends TestCase {
public void testPizzaService() throws Exception {
XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(
"context.xml"));
Test myTest = (Test) beanFactory
.getBean("test");
System.out.println(myTest.give());
}
}
[/Java]
Eclipse zeigt keinerlei Fehler an und dank der SpringIDE wird auch angezeigt, dass die jeweilige Methode wie gewünscht advised wird. Leider wird beim ausführen der Testklasse nur "Test" auf der Konsole angezeigt und eben nicht "do work done!". Wo ist der Fehler?