Entry Point
Deep dive into the main application class and its configurations.
Main Application Class
The service entry point is AryaBankingUserServiceApplication.java. It uses several annotations to wire together the platform-standard features.
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
HibernateJpaAutoConfiguration.class
})
@ComponentScan(basePackages = {"org.arya.banking.user", "org.arya.banking.common"})
@EnableMongoAuditing
@EnableDiscoveryClient
@EnableFeignClients(defaultConfiguration = OAuth2FeignConfig.class)
public class AryaBankingUserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(AryaBankingUserServiceApplication.class, args);
}
}
Configuration Breakdown
1. JPA Exclusion
Since this service uses MongoDB exclusively, all JDBC/Hibernate auto-configurations are disabled to prevent startup failures.
2. Component Scanning
The application scans both its own package and org.arya.banking.common. This ensures that shared beans like the GlobalExceptionHandler, KafkaConfiguration, and MongoConfig are correctly registered.
3. MongoDB Auditing
@EnableMongoAuditing activates Spring Data's auditing features, automatically populating @CreatedDate and @LastModifiedDate fields in entities like User and SecurityDetails.
4. Feign & OAuth2
@EnableFeignClients is configured with OAuth2FeignConfig as the default, ensuring all inter-service communication (e.g., to the Auth Service) is automatically authenticated.
Startup Warm-up
The service includes a KafkaWarnUp component that forces a connection to the Kafka broker during startup:
@PostConstruct
public void init() {
producerFactory.createProducer().close();
log.info("Kafka connection established");
}