Spring Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator

14,954

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!

Share:
14,954

Related videos on Youtube

vikramaditya anand
Author by

vikramaditya anand

Updated on June 05, 2022

Comments

  • vikramaditya anand
    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