Weave зависимость в Maven с AspectJ не работает - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть требование перехватить определенный метод для API Apache POI (HSSFCell setCellValue), и я планировал использовать Spring AspectJ для выполнения этого требования. Но после некоторого тестирования я обнаружил, что это не работает. Не уверены, что можно соткать внешнюю банку, как apache POI?

вот соответствующий код из моего pom.xml:

     <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi</artifactId>
         <version>3.17</version>
     </dependency>
     <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.8.13</version>
    </dependency>

<build>    
     <finalName>${project.artifactId}</finalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
            <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>aspectj-maven-plugin</artifactId>
                    <version>1.11</version>
                    <configuration>
                    <showWeaveInfo>true</showWeaveInfo>
                        <weaveDependencies>
                            <weaveDependency>
                                <groupId>org.apache.poi</groupId>
                                <artifactId>poi</artifactId>
                            </weaveDependency>               
                        </weaveDependencies>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>compile</goal>                      
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
</build>

и мой аспектJ Java-класс:

@Aspect
@Component
public class TestInterceptor
{
    @Pointcut("execution(* org.apache.poi..*.*(..))")
    public void methodPointcut()
    {
    }

    @Before("methodPointcut()")
    public void Interceptor(JoinPoint joinPoint)
    {
         System.out.println("hello world");
    }

}

По праву, когда я взаимодействую с API Apache POI (например, вызовите метод setCellValue для HSSFCell), он выведет hello world на консоль, но в моем случае ничего не произошло.

...