[英]AOP Dependency Issue in Spring 4.3.4
我目前正在使用Spring 4.3.4執行“簡單方面示例程序”。 我嘗試同時使用XML和注釋,但是它給了我BeanCreationException錯誤。
創建名稱為'org.springframework.aop.config.internalAutoProxyCreator'的bean時出錯
我添加了以下提到的依賴項:
主要:
public class Main {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("com/sonyx64/spring/aop/config/Beans.xml");
Camera camera = (Camera) context.getBean("camera");
camera.snap();
context.close();
}}
相機類別:
public class Camera {
public void snap() {
System.out.println("SNAP!");
}
}
記錄器類別:
public class Logger {
public void aboutToTakePhoto() {
System.out.println("About To Take Photo");
}
}
Beans.xml
<bean id="camera" class="com.sonyx64.spring.aop.Camera"></bean>
<bean id="logger" class="com.sonyx64.spring.aop.Logger"></bean>
<aop:config>
<aop:pointcut expression="execution(void com.sonyx64.spring.aop.Camera.snap())"
id="camerasnap" />
<aop:aspect id="loggeraspect" ref="logger">
<aop:before method="aboutToTakePhoto" pointcut-ref="camerasnap" />
</aop:aspect>
</aop:config>
請為我建議一個適當的解決方案來處理此異常。
AspectJ weaver版本不是造成問題的原因。 我剛剛嘗試過,使用您的代碼和POM。 無論我使用的是weaver 1.8.8還是1.8.9,還是從POM中完全刪除了依賴項,它在所有情況下都能正常工作。 不幸的是,您自己的答案是錯誤的。
將項目上傳到Google雲端硬盤后,我可以很容易地看到問題的根本原因:您有Maven問題 。 您不使用標准的Maven目錄布局來使Maven在目錄src / main / resources中找到諸如bean.xml之類的 資源 。 只需檢查目標/類和由Maven創建的JAR:那里沒有bean.xml 。 因此,請修改您的目錄布局,使其看起來像這樣:
這就是我所做的,還從POM中刪除了<sourceDirectory>
指令。 或者,您可以通過配置Maven資源插件來設置自定義資源目錄。
PS:下次,請發布完整的堆棧跟蹤信息,而不僅僅是錯誤消息的一部分。 或者至少閱讀您自己的錯誤消息。 ;-)您已經很清楚了(我故意添加了一些換行符):
INFORMATION: Loading XML bean definitions from class path resource [com/pop/spring/aop/Beans.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException:
IOException parsing XML document from class path resource [com/pop/spring/aop/Beans.xml];
nested exception is
java.io.FileNotFoundException:
class path resource [com/pop/spring/aop/Beans.xml]
cannot be opened because it does not exist
我嘗試了相同的示例,首先創建了maven項目,其次是針對Aspect Weavers依賴項,我添加了AspectJweaver 1.8.8版本的排除項,並包括AspectJweaver 1.8.9版本,它可以正常工作。
問題出在特定版本的Maven存儲庫jar“ aspectjweaver-1.8.9.jar”。 使用早期版本1.8.8可以解決此問題。
POM.xml:
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.target.source>1.8</maven.target.source>
<maven.target.compiler>1.8</maven.target.compiler>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.8</version>
</dependency>
</dependencies>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.