package org.constretto.spring.javaconfig;
import org.constretto.ConstrettoConfiguration;
import org.constretto.spring.ConfigurationAnnotationConfigurer;
import org.constretto.spring.ConstrettoPropertyPlaceholderConfigurer;
import org.constretto.spring.internal.resolver.DefaultAssemblyContextResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Useful superclass for creating Spring Java config using Constretto. Enables the
* {@link org.constretto.spring.ConstrettoPropertyPlaceholderConfigurer} and the
* {@link org.constretto.spring.ConfigurationAnnotationConfigurer} BeanPostProcessors which will give you direct support
* for using @Value and @Configuration in your beans.
*
* @author zapodot at gmail dot com
*/
@Configuration
public abstract class BasicConstrettoConfiguration {
/**
* Must be overridden by subclasses to provide the actual ConstrettoConfiguration instance to use for the BeanPostProcessors
*
* @return
*/
@Bean
public abstract ConstrettoConfiguration constrettoConfiguration();
@Bean
public ConstrettoPropertyPlaceholderConfigurer constrettoPropertyPlaceholderConfigurer() {
return new ConstrettoPropertyPlaceholderConfigurer(constrettoConfiguration());
}
@Bean
public ConfigurationAnnotationConfigurer configurationAnnotationConfigurer() {
return new ConfigurationAnnotationConfigurer(constrettoConfiguration(),
new DefaultAssemblyContextResolver());
}
}