# BookstoreApplication.java

    package com.university.bookstore;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    import com.university.bookstore.api.MaterialStore;
    import com.university.bookstore.impl.ModernConcurrentMaterialStore;

    /**
     * Spring Boot application entry point for the Bookstore Management System.
     *
     * <p>This class demonstrates how the existing design can be easily extended
     * with Spring Boot to provide REST API capabilities without modifying the
     * core business logic or existing implementations.</p>
     *
     * <p>The application leverages the existing MaterialStore interface and
     * implementations, showing the extensibility and scalability of the
     * hexagonal architecture design.</p>
     *
     * @author Navid Mohaghegh
     * @version 1.0
     * @since 2024-12-19
     */
    @SpringBootApplication
    @Configuration
    public class BookstoreApplication {

        /**
         * Main entry point for the Spring Boot application.
         *
         * @param args command line arguments
         */
        public static void main(String[] args) {
            SpringApplication.run(BookstoreApplication.class, args);
        }

        /**
         * Configures the MaterialStore bean using the existing ModernConcurrentMaterialStore.
         * This demonstrates how the existing implementations can be easily integrated
         * with Spring Boot dependency injection.
         *
         * @return configured MaterialStore instance
         */
        @Bean
        public MaterialStore materialStore() {
            return new ModernConcurrentMaterialStore();
        }
    }