2016-06-20 6 views
0

Ich bin ziemlich neu zu Spring und ich arbeite mit einer alten Version 3.2.4.RELEASE davon in einem Jetty-Container. Ich erhalte einen ziemlich seltsam Fehler, wenn ich versuche Anzeigekomponente-Scanner zu verwenden, dass die @Configuration Klasse I eingerichtet haben ist nicht eine erweiterte Klasse:@Configuration Annotation verursacht IllegalArgumentException "ist keine erweiterte Klasse"

Caused by: java.lang.IllegalArgumentException: class com.datasource.DBConfiguration$$EnhancerByCGLIB$$8a295c55 is not an enhanced class 
at org.springframework.cglib.proxy.Enhancer.setCallbacksHelper(Enhancer.java:621) ~[spring-core-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
at org.springframework.cglib.proxy.Enhancer.registerStaticCallbacks(Enhancer.java:594) ~[spring-core-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:120) ~[spring-context-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:92) ~[spring-context-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:356) ~[spring-context-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
... 78 common frames omitted 

Meine Feder Bohnen-Datei auf dem Classpath ist und Aussehen wie die folgende

<?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: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/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 

<context:component-scan base-package="com.datasource" /></beans> 

die Konfigurationsklasse, die ich bin versucht Setup sieht wie folgt aus:

@Configuration 
public class DBConfiguration { 

    @Bean 
    public DataAccessInterface getDataAccessInterface(){ 
     return new DBDatasource(); 
    } 
} 

die Klasse, die ich die DbDataSource in aussieht t injizieren wollen er folgt:

@Service 
public class DBService { 

    private DataAccessInterface dai; 

    @Autowired 
    public DBService(DataAccessInterface dai){ 
     this.dai = dai; 
    } 
} 

Was bedeutet die Ausnahme, wenn sie besagt, dass es sich nicht um eine erweiterte Klasse handelt? Verwende ich den Komponenten-Scan und die Konfigurations-Anmerkung nicht richtig?

+0

Können Sie Ihre pom.xml posten? Ich nehme an, dass das von den CGLib-Versionskonflikten, die Sie verwenden, abgesehen werden kann. Ist es auch OSGi? –

+0

Ich sehe org.osgi.core-4.1.0.jar und cglib-nodep-2.2.jar auf meinem Klassenpfad, aber soweit ich weiß, verwende ich nicht OSGI – rhunter

Antwort

0

Geben Sie bitte
@ComponentScan(basePackages = "com.example", includeFilters = {@Filter(filterType = ANNOTATION, value = CONFIGURATION)}, excludeFilters = {@Filter(filterType = ASSIGNABLE_TYPE, value = DBConfiguration)})

Verwandte Themen