Should I comment on the configuration class as @Configuration for testing?

I spent some time solving a problem with a missing converter org.joda.time.DateTime->java.util.Datein Spring Data (which should be enabled by default when Joda-Time is in the classpath). I found the reason, but there was a question about annotation @Configurationin Spring.

Standard application configuration using AbstractMongoConfigurationfrom spring -data-mongodb:

@Configuration
@ComponentScan
@EnableMongoRepositories
public class AppConfig extends AbstractMongoConfiguration { ... }

A test that explicitly uses the AppConfig class (using Spock, but the internal mechanisms provided by spring -test):

@ContextConfiguration(classes = AppConfig)
class JodaDocRepositorySpec extends Specification {

    @Autowired
    private JodaDocRepository jodaDocRepository

    def "save document with DateTime"() {
        given:
            def jodaDoc = new JodaDoc(DateTime.now())
        when:
            def savedJodaDoc = jodaDocRepository.save(jodaDoc)
        then:
            savedJodaDoc.id
    }
}

It works great. But when @Configuration the annotation in AppConfig is deleted / commented out:

//@Configuration
@ComponentScan
@EnableMongoRepositories
public class AppConfig extends AbstractMongoConfiguration { ... }

test failure:

org.springframework.core.convert.ConverterNotFoundException:
No converter found capable of converting from type org.joda.time.DateTime to type java.util.Date

AFAIK @Configuration , ( @ContextConfiguration register() AnnotationConfigWebApplicationContext). , beans . @Configuration, , , .

, Spring, beans @Configuration. Spring , , , Spring. :

. , Spring ( @ContextConfiguration) ( ) Joda-Time a @Configuration ?

, . spring -data-mongodb 1.3.3, Spring 4.0.0, joda-time 2.3.

+4
1

. AbstractMongoConfiguration @Configuration, @Inherited, .

@Configuration, AppConfig . lite , , @Bean - org.springframework.context.annotation.ConfigurationClassUtils

  • isFullConfigurationCandidate()
  • isLiteConfigurationCandidate()
  • isFullConfigurationClass()

, ( @Configuration) - ConfigurationClassPostProcessor.enhanceConfigurationClasses()

+3

All Articles