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:
@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.