InventoryServiceApplication.java

package com.smartsupplypro.inventory;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Main application class for the SmartSupplyPro Inventory Service.
 * 
 * <p><strong>Features</strong>: Inventory CRUD, supplier management, stock history audit trail, 
 * analytics insights, OAuth2 security with Google authentication.
 * 
 * <p><strong>Database</strong>: Oracle Autonomous Database with wallet-based authentication.
 * 
 * <p><strong>Security</strong>: Oracle wallet configuration handled by deployment infrastructure 
 * (start.sh) for security and separation of concerns.
 * 
 * <p><strong>Architecture</strong>: Layered (Controller → Service → Repository), DTO pattern, 
 * validation layer, audit trail.
 * 
 * <p><strong>Deployment</strong>: Profiles: dev (detailed logging), test (H2 in-memory), 
 * prod (minimal logging + Oracle Cloud).
 * 
 * @author SmartSupplyPro Team
 * @version 1.0.0
 * @see <a href="https://github.com/Keglev/inventory-service">GitHub Repository</a>
 * @see <a href="https://keglev.github.io/inventory-service/api.html">API Documentation</a>
 */
@SpringBootApplication
public class InventoryServiceApplication {

    /**
     * Main entry point for the Inventory Service application.
     * 
     * <p><strong>Oracle Wallet Setup</strong>: Handled by start.sh before JVM startup 
     * (decodes wallet, sets system properties, clears env vars).
     * 
     * <p><strong>Benefits</strong>: Security (no sensitive config in Java), testability 
     * (tests use H2), follows 12-factor app principles.
     *
     * @param args command-line arguments (typically empty in containerized deployments)
     */
    public static void main(String[] args) {
        SpringApplication.run(InventoryServiceApplication.class, args);
    }
}