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.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more