Spring Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator
Looks like this is a classpath issue. Some conflict between aspectj
and spring-aop
jars as discussed here.
Have ported your project to maven project and below is the pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springaop</groupId>
<artifactId>springaop</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<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>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
</dependencies>
</project>
Also in Main class,
ApplicationContext appContext = new ClassPathXmlApplicationContext("Spring-Business.xml");
has a warning saying appContext
isn't closed. appContext
is a ResourceLoader doing some I/O operations and it is essential to free the resources after doing I/O operations. So, have changed it to ClassPathXmlApplicationContext
which has .close()
method to free the resources in the end, you can do it in finally
block more precisely.
To conclude, the main method would be below :
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
"Spring-Business.xml");
BusinessService businessService = (BusinessService) appContext.getBean("businessService");
businessService.doSomeThing();
appContext.close();
Hope this helps! Good luck!
Related videos on Youtube
vikramaditya anand
Updated on June 05, 2022Comments
-
vikramaditya anand almost 2 years
I am trying to execute a simple program for Spring AOP.The code for it is as follows-: BusinessService .java
package com.kruders.spring.aop; public interface BusinessService { void doSomeThing(); }
BusinessImpl.java
package com.kruders.spring.aop; import org.springframework.stereotype.Service; public class BusinessImpl implements BusinessService { public void doSomeThing() { System.out.println("Do Something Here"); } }
BusinessAspect.java
package com.kruders.spring.aspect; import org.aspectj.lang.ProceedingJoinPoint; public class BusinessAspect { public void before() { System.out.println("Before method is called"); } public void after() { System.out.println("After method is called"); } public void afterReturning() { System.out.println("After returning method is called"); } public void afterThrowing() { System.out.println("After throwing method is called"); } public void around(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("Around method is called"); System.out.println("Around before is running"); joinPoint.proceed(); System.out.println("Around after is running"); } }
Main.java
package com.kruders.spring.core; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.kruders.spring.aop.BusinessService; public class Main { public static void main(String args[]) { ApplicationContext appContext = new ClassPathXmlApplicationContext("Spring-Business.xml"); BusinessService businessService = (BusinessService)appContext.getBean("businessService"); businessService.doSomeThing(); } }
Spring-Business.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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <bean id="businessService" class="com.kruders.spring.aop.BusinessImpl" /> <!-- Aspect --> <bean id="businessAspect" class="com.kruders.spring.aspect.BusinessAspect" /> <aop:config> <aop:aspect ref="businessAspect"> <aop:pointcut id="businessExp" expression="execution(* com.kruders.spring.aop.BusinessImpl*.*(..))" /> <aop:before method="before" pointcut-ref="businessExp"/> <aop:after method="after" pointcut-ref="businessExp"/> <aop:after-returning method="afterReturning" pointcut-ref="businessExp"/> <aop:after-throwing method="afterThrowing" pointcut-ref="businessExp"/> <aop:around method="around" pointcut-ref="businessExp"/> </aop:aspect> </aop:config> </beans>
I have included all the AOP jars and is using spring-4.3.6
Spring Aop Jars-: aspectj-1.6.9,aspectj-DEVELOPMENT-20160512153500,aspectjrt,aspectj-weaver,spring-aop jars
but still getting ths error.
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@621be5d1: startup date [Sat May 27 08:59:02 IST 2017]; root of context hierarchy May 27, 2017 8:59:02 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [Spring-Business.xml] May 27, 2017 8:59:02 AM org.springframework.aop.framework.DefaultAopProxyFactory <clinit> INFO: CGLIB2 not available: proxyTargetClass feature disabled May 27, 2017 8:59:02 AM org.springframework.context.support.ClassPathXmlApplicationContext refresh WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Initialization of bean failed; nested exception is java.lang.AbstractMethodError: org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors()Ljava/util/List; Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Initialization of bean failed; nested exception is java.lang.AbstractMethodError: org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors()Ljava/util/List; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:223) at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:702) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:527) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) at com.kruders.spring.core.Main.main(Main.java:10) Caused by: java.lang.AbstractMethodError: org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors()Ljava/util/List; at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.setBeanFactory(AbstractAdvisorAutoProxyCreator.java:57) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1647) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1615) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ... 11 more