Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe folgenden pointcut welcher sehr gut funktioniert, Ich bin jetzt aber kein AOP experte und weiß jetzt nicht genau, wie ich den Pointcut ändern soll, damit der Pointcut nur in meiner Klasse HomeController zuschlägt.
Vielleicht kann das jemand aus dem FF beantworten.
Besten Dank dafür,
lg
Generic1
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: warning no match for this type name: HomeController [Xlint:invalidAbsoluteTypeName]
Ich hab den HomeController so definiert:
Java:
@Controller
public final class HomeController {
...
Irgednwie ist der nicht bekannt im Spring Framework.
Was kann ich da noch machen?
Dann wars wohl doch:
[XML]<aop:before pointcut="execution(* path.to.my.package.HomeController.searchMember(..))" method="beforeMethodInvokation"/>[/XML]
eventuell kann man das Package auch nochmal mit * bezeichnen, aber für deinen Fall sollte das wohl auch so passen.
Da wird aber interessanter weise die beforeMethodInvokation- Methode von meinem Advice nicht mehr aufgerufen obwohl die methode searchMember aufgerufen wird (da hab ich ein System.out.println drinnen).
Ehrlich gesagt keine Ahnung warum das so ist, wenn ich * *searchMember(..) als pointcut habe, dann wird die Methode beforeMethodInvokation einwandfrei aufgerufen - mein problem ist halt nur, dass ich mehrere searchMember Methoden in meiner Appl habe und das eben granularer haben will.
Weiß da noch jemand was dazu?
Ok, folgendes Beispiel funktioniert bei mir:
[XML]<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" Index of /schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsd Index of /schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
package de.mvitz.example.spring.aop;
public class HomeController {
public void searchMember(int id) {
System.out.println("HomeController.searchMember(" + id + ")");
}
}
Java:
package de.mvitz.example.spring.aop;
public class MyAspect {
public void before() {
System.out.println("MyAspect.before()");
}
}
Java:
package de.mvitz.example.spring.aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
final ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
context.getBean(HomeController.class).searchMember(1);
}
}
Code:
08.07.2012 15:51:35 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2a0ecd7e: startup date [Sun Jul 08 15:51:35 CEST 2012]; root of context hierarchy
08.07.2012 15:51:35 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [application.xml]
08.07.2012 15:51:36 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@2f8a49e0: defining beans [controller,aspect,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.aop.aspectj.AspectJPointcutAdvisor#0]; root of factory hierarchy
MyAspect.before()
HomeController.searchMember(1)
Auch mit @Controller und <context:component-scan base="de.mvitz.example.spring.aop" /> funktioniert es bei mir, naja egal, hast dein Problem ja gelöst.