Previously (in 2.1.10.RELEASE and below) it was possible to use placeholders in place of bean class:

< bean id="serviceImpl" class="${service.class}" />

This feature has been broken, probably with adding of ConfigurationPropertiesBeanDefinitionValidator which forces class loader to load unresolved class name (by this call) what causes ClassNotFoundException: ${service.class}.

Here you can find sample application that reproduces the problem: https://github.com/emaysyuk/spring-boot-bean-class-placeholder