DEV Community

Hunor Vadasz-Perhat
Hunor Vadasz-Perhat

Posted on

spring-018: are-command-line-arguments-common?

Short Answer: It depends on the use case.

Command-line arguments in Spring Boot are not commonly used in everyday production deployments, but they are extremely useful in specific scenarios. Here’s a practical breakdown of when and why they matter:


βœ… When Command-Line Arguments Are Useful

1. Quick Configuration Overrides (Without Changing Code)

πŸ“Œ Overrides application.properties or application.yml dynamically.

  • Use case: Adjusting configuration without modifying files (useful in CI/CD pipelines).
  • Example: Change the port on startup:
  java -jar app.jar --server.port=9090
Enter fullscreen mode Exit fullscreen mode
  • Why?
    • Handy for testing different settings quickly.
    • Allows configurable deployments without modifying environment variables.

2. CI/CD & Dockerized Deployments

πŸ“Œ Pass runtime parameters in Kubernetes, Docker, or cloud deployments.

  • Use case: Injecting environment-specific configurations.
  • Example (Docker Compose):
  services:
    app:
      image: my-spring-app
      command: ["java", "-jar", "app.jar", "--spring.profiles.active=prod"]
Enter fullscreen mode Exit fullscreen mode
  • Why?
    • Reduces reliance on config files in containerized environments.
    • Simplifies deployment workflows.

3. Feature Flags & A/B Testing

πŸ“Œ Enable/disable features dynamically.

  • Use case: Toggle features without restarting the app or redeploying.
  • Example:
  java -jar app.jar --feature.toggle.newUI=true
Enter fullscreen mode Exit fullscreen mode
  • Why?
    • Enables A/B testing or gradual feature rollouts.
    • Useful in staging environments where different versions of a feature need to be tested.

4. Scripted Automation & Local Development

πŸ“Œ Automate startup configurations for different environments.

  • Use case: Running local environments with different configs.
  • Example:
  mvn spring-boot:run -Dspring-boot.run.arguments="--debug=true"
Enter fullscreen mode Exit fullscreen mode
  • Why?
    • No need to edit application.properties every time you change an environment.
    • Simplifies local debugging and testing.

❌ When Command-Line Arguments Are NOT Ideal

1. Large-Scale Production Configurations

🚫 Why? Configurations should be managed via environment variables or external config files, not passed manually in the command line.

2. Sensitive Data (Passwords, API Keys)

🚫 Why? Command-line arguments are visible in process lists (ps aux), making them insecure for secrets.

βœ… Use Environment Variables Instead:

  export DB_PASSWORD="mysecretpass"
  java -jar app.jar
Enter fullscreen mode Exit fullscreen mode

3. Hard-to-Track Application Behavior

🚫 Why? If configurations change frequently via CLI arguments, debugging issues becomes harder.

βœ… Use Configuration Files Instead for better visibility.


Final Verdict: Useful, but Not Always Essential

Use Case Command-Line Arguments?
Quick testing & debugging βœ… Yes
CI/CD & cloud deployments βœ… Sometimes (useful in Docker, Kubernetes)
Feature toggles / A/B testing βœ… Yes
Sensitive credentials ❌ No (use environment variables instead)
Production environment configs ❌ No (use config files or config servers)

πŸ”Ή Takeaway

βœ… Command-line arguments are handy for quick overrides and automation.

βœ… They're useful in local development and CI/CD, but not ideal for production configs.

βœ… For persistent settings, use application.properties or external configuration files instead.

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

πŸ‘₯ Ideal for solo developers, teams, and cross-company projects

Learn more

πŸ‘‹ Kindness is contagious

Please leave a ❀️ or a friendly comment on this post if you found it helpful!

Okay