Leichtgewichtige JEE Entwicklung mit dem Spring Framework

Leichtgewichtige JEE Entwicklung mit dem Spring Framework

Posts 1-7 of 7
  • René Gröschke
    René Gröschke    Premium Member
    The company name is only visible to registered members.
    Problem mit AnnotationBeanConfigurerAspect
    Ich verwende Spring mit dem EclipseRCP Framework. Dadurch habe ich nicht immer Einfluß auf die Erstellung einiger Komponenten durch den new Operator.

    Ich versuche durch die Verwendung des AnnotationBeanConfigurerAspect und der Configurable Annotation während der Erzeugung dieser Komponenten diese durch Spring zu konfigurieren.

    Allerdings scheint bei der Erzeugung dieser Komponenten Spring nicht mehr einzugreifen.

    meine beans.xml:

    ==============================================================================
    <?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"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0...
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd&q...

    <bean id="newCommandWizard" class="...wizards.NewCommandWizard" scope="prototype">
    <property name="commandDao" ref="serverFacade"/>
    </bean>

    <bean name="serverFacade" class="....ServerFacade">
    <property name="service" ref="commandService" />
    </bean>

    <bean id="commandService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
    <property name="serviceUrl"
    value="http://localhost:9090/remote/CommandService" />
    <property name="serviceInterface" value="....CommandService" />
    </bean>

    <bean class="org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect" factory-method="aspectOf"/>

    </beans>
    ==============================================================================
    jemand vielleicht ne idee?

    gruß René Gröschke
    This post was modified on 02 Aug 2007 at 10:26 pm.
  • Christian Dupuis
    Christian Dupuis
    The company name is only visible to registered members.
    Re: Problem mit AnnotationBeanConfigurerAspect
    Hi,

    um Spring's DI features auf nicht Spring-managed Objekte anzuwenden ist es wichtig, dass der AnnotationBeanConfigurerAspect entweder per compile- oder per load-time weaving in Ihre Klassen gewebt wird.

    Dies ist unter Punkt 6.8 in der Spring Doku beschrieben (http://static.springframework.org/spring/docs/2.0.x/referenc...).

    Ihre Konfiguration sieht ansonsten ok aus.

    HTH

    Christian
    This post was modified on 02 Aug 2007 at 10:54 pm.
  • René Gröschke
    René Gröschke    Premium Member
    The company name is only visible to registered members.
    Re^2: Problem mit AnnotationBeanConfigurerAspect
    um die Weaving Problematik zu umgehen verwende ich jetzt nur das tag <aop:spring-configured/> ohne den AnnotationBeanConfigurerAspect. trotzdem funzt es noch nicht. obwohl ich auch finde, das meine konfiguration i.O. ausschaut ;-/ ...
  • Christian Dupuis
    Christian Dupuis
    The company name is only visible to registered members.
    Re^3: Problem mit AnnotationBeanConfigurerAspect
    Hallo,

    der <aop:spring-configured /> Tag ist nur ein Shortcut für Ihre AnnotationBeanConfigurerAspect Bean Definition. Im Hintergrund macht Spring genau das selbe wie Sie mit der manuellen Definition des Aspects.

    Sie benötigen compile- bzw. load-time weaving. Ansonsten kann es nicht funktionieren.

    Gruß

    Christian
  • René Gröschke
    René Gröschke    Premium Member
    The company name is only visible to registered members.
    Re^4: Problem mit AnnotationBeanConfigurerAspect
    habe es mit load time weaving zum laufen gebracht. das problem das ich dabei noch sehe ist folgendes:

    ich entwickle ein Eclipse Plugin, für ein Eclipse - product. Nun möchte ich ja eigentlich nicht das weaving im aufruf des products, sondern erst beim initialisieren meines plugins. gibt es da eine alternative zum jvm argument "-javaagent" ?
  • Eberhard WolffEberhard Wolff is a contact of your contacts
    Eberhard Wolff    Group moderator
    The company name is only visible to registered members.
    Re^5: Problem mit AnnotationBeanConfigurerAspect
    René Gröschke schrieb:
    ich entwickle ein Eclipse Plugin, für ein Eclipse - product. Nun möchte ich ja eigentlich nicht das weaving im aufruf des products, sondern erst beim initialisieren meines plugins. gibt es da eine alternative zum jvm argument "-javaagent" ?
    Hallo,

    dazu muss man, wie Christian schon sagte, Compile-Time-Weaving verwenden. Dazu muss man statt dem Java-Compiler den AspectJ-Compiler verwenden. Spring enthält die spring-aspects.jar als Aspekt Library, die man beim Compilieren angeben muss. Details zu dem Kommandozeilen-Compiler und Ant gibt es hier: http://www.eclipse.org/aspectj/doc/released/devguide/index.h... und zum Maven Plug In hier: http://mojo.codehaus.org/aspectj-maven-plugin/libraryJars.ht... .

    Was dann entsteht ist ganz normaler Byte-Code, der nicht von Java-Compiler-Output unterscheidbar ist.

    HTH,

    Eberhard
  • René Gröschke
    René Gröschke    Premium Member
    The company name is only visible to registered members.
    Re^6: Problem mit AnnotationBeanConfigurerAspect
    dann wirds wohl doch auf compile time weaving hinauslaufen. Bei meinem eigenen Code ist das auch nicht weiter tragisch. den Nachteil sehe ich darin, dass ich durch compile time weaving nicht bibliotheken dritter mit aspekten versehen kann.

    gruß rené