@Configuration
@ComponentScan(basePackages = "io.reflectoring.booking")
public class BookingModuleConfiguration {
}
@Configuration
public class BookingModuleConfiguration {
@Bean
public BookingService bookingService(){
return new BookingService();
}
// potentially more @Bean definitions ...
}
@Configuration
@ConditionalOnProperty(name = "io.reflectoring.security.enabled",
havingValue = "true", matchIfMissing = true)
public class SecurityModuleConfiguration {
// @Bean definitions ...
}
@SpringBootApplication
@Import(BookingModuleConfiguration.class)
public class ModularApplication {
// ...
}
@SpringBootApplication
@EnableScheduling
public class SpringbatchApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbatchApplication.class, args);
}
}
@SpringBootApplication
@EnableBookingModule
public class ModularApplication {
public static void main(String[] args) {
SpringApplication.run(ModularApplication.class, args);
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import(BookingModuleConfiguration.class)
@Configuration
public @interface EnableBookingModule {
}
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
io.reflectoring.security.SecurityModuleConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.mycorp.libx.autoconfigure.LibXAutoConfiguration,\
com.mycorp.libx.autoconfigure.LibXWebAutoConfiguration
io:
reflectoring:
security:
enabled: true
@ConditionalOnProperty(name = "io.reflectoring.security.enabled",
havingValue = "true", matchIfMissing = true)
https://github.com/thombergs/code-examples/tree/master/spring-boot/modular