いくつかのスプリング コンポーネントを Hibernate Search FieldBridgeに取り込むために、しばらくコンパイル時のウィービングを使用してきました。
@Configurable
public class MultiLingualClassBridge implements FieldBridge,ParameterizedBridge {
@Inject
MessageSource messages;
この側面は正しく織り込まれているようです (チェックするためにクラスを逆コンパイルしました) が、実行時に MessageSource が注入されません。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<configuration>
<source>1.6</source>
<target>1.6</target>
<verbose>true</verbose>
<complianceLevel>1.6</complianceLevel>
<encoding>UTF-8</encoding>
<showWeaveInfo>true</showWeaveInfo>
<forceAjcCompile>true</forceAjcCompile>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<weaveDirectories>
<weaveDirectory>${project.build.directory}/unwoven-classes</weaveDirectory>
</weaveDirectories>
</configuration>
</plugin>
Spring 3.1.2、Hibernate 4.2.2、および Hibernate Search 4.3.0 を使用しています。私は、aspectj を 1.6.11 から 1.7.2 にアップグレードしましたが、役に立ちませんでした。Hibernate をダウングレードしても効果がないようです。Tomcat 6 および 7 でも同じことが起こります。
<context:spring-configured />
<context:annotation-config/>
<context:component-scan
base-package="nl.project"/>
逆コンパイルされたクラス(setMethodの注入に切り替えてみました)
@Configurable
public class MultiLingualClassBridge
implements FieldBridge, ParameterizedBridge, ConfigurableObject
{
MessageSource messages;
static
{
ajc$preClinit();
}
public MultiLingualClassBridge()
{
JoinPoint localJoinPoint2 = Factory.makeJP(ajc$tjp_1, this, this); JoinPoint localJoinPoint1 = Factory.makeJP(ajc$tjp_0, this, this); if ((this != null) && (getClass().isAnnotationPresent(Configurable.class)) && (AnnotationBeanConfigurerAspect.ajc$if$bb0((Configurable)getClass().getAnnotation(Configurable.class)))) AnnotationBeanConfigurerAspect.aspectOf().ajc$before$org_springframework_beans_factory_aspectj_AbstractDependencyInjectionAspect$1$e854fa65(this); if ((this != null) && (getClass().isAnnotationPresent(Configurable.class)) && ((this == null) || (!getClass().isAnnotationPresent(Configurable.class)) || (!AnnotationBeanConfigurerAspect.ajc$if$bb0((Configurable)getClass().getAnnotation(Configurable.class)))) && (AbstractDependencyInjectionAspect.ajc$if$6f1(localJoinPoint1))) AnnotationBeanConfigurerAspect.aspectOf().ajc$afterReturning$org_springframework_beans_factory_aspectj_AbstractDependencyInjectionAspect$2$1ea6722c(this);
if ((!AnnotationBeanConfigurerAspect.ajc$if$bb0((Configurable)getClass().getAnnotation(Configurable.class))) && (AbstractDependencyInjectionAspect.ajc$if$6f1(localJoinPoint2))) AnnotationBeanConfigurerAspect.aspectOf().ajc$afterReturning$org_springframework_beans_factory_aspectj_AbstractDependencyInjectionAspect$2$1ea6722c(this);
}
@Inject
public void setMessages(MessageSource messages)
{
this.messages = messages;
log.info("MessageSource successfully registered");
}
たくさんのことを試しましたが、これを機能させる方法のアイデアがなくなりました。助言がありますか?
よろしく、 マーク