package de.codecentric.mule.configuration;
import org.mule.api.MuleContext;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
/**
* Spring Boot Autoconfiguration for the MuleContext
*
* @author Dennis Schulte
*/
@Configuration
@EnableConfigurationProperties
@ConditionalOnClass(MuleContext.class)
public class MuleAutoConfiguration {
private MuleContextInitializer muleContextInitializer;
@Bean
@ConditionalOnMissingBean
@ConfigurationProperties(prefix="mule")
protected MuleContextInitializer muleContextInitializer() {
this.muleContextInitializer = new MuleContextInitializer();
return this.muleContextInitializer;
}
/**
* Bean must be @Lazy to ensure the mulecontext has been initialized
*
* @return the MuleContext
*/
@Lazy
@Bean
protected MuleContext muleContext()
{
return this.muleContextInitializer.getMuleContext();
}
}