package fr.openwide.core.showcase.core.config.spring;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import fr.openwide.core.showcase.core.ShowcaseCorePackage;
import fr.openwide.core.showcase.core.init.BootstrapApplicationServiceImpl;
import fr.openwide.core.spring.config.spring.AbstractApplicationConfig;
import fr.openwide.core.spring.config.spring.annotation.ApplicationDescription;
import fr.openwide.core.spring.config.spring.annotation.ConfigurationLocations;
@Configuration
@ApplicationDescription(name = ShowcaseCoreConfig.APPLICATION_NAME)
@ConfigurationLocations
@Import({
ShowcaseCoreJpaConfig.class, // configuration de la persistence
ShowcaseCoreSecurityConfig.class, // configuration de la sécurité
ShowcaseCoreJpaMoreTaskManagementConfig.class, // configuration des tâches
ShowcaseCoreApplicationPropertyConfig.class, // configuration des propriétés de l'application
})
@ComponentScan(
basePackageClasses = {
ShowcaseCorePackage.class
},
excludeFilters = @Filter(Configuration.class)
)
// fonctionnement de l'annotation @Transactional
@EnableTransactionManagement
public class ShowcaseCoreConfig extends AbstractApplicationConfig {
public static final String APPLICATION_NAME = "showcase";
public static final String PROFILE_TEST = "test";
@Bean
public BootstrapApplicationServiceImpl bootstrapApplicationService() {
return new BootstrapApplicationServiceImpl();
}
}