{"id":32259,"date":"2025-10-19T15:41:00","date_gmt":"2025-10-19T12:41:00","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32259"},"modified":"2025-10-19T15:41:00","modified_gmt":"2025-10-19T12:41:00","slug":"spring-boot-cli-kurulumu-ve-helloworld-ornegi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/","title":{"rendered":"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi"},"content":{"rendered":"<p><body><\/p>\n<h2>Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi<\/h2>\n<p>Spring Boot, g\u00fcn\u00fcm\u00fcz\u00fcn en pop\u00fcler Java tabanl\u0131 uygulama geli\u015ftirme \u00e7er\u00e7evelerinden biridir. Geli\u015ftiricilerin h\u0131zl\u0131, ba\u011f\u0131ms\u0131z ve \u00fcretime haz\u0131r Spring tabanl\u0131 uygulamalar olu\u015fturmas\u0131n\u0131 kolayla\u015ft\u0131rmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. Geleneksel Spring uygulamalar\u0131n\u0131n karma\u015f\u0131k yap\u0131land\u0131rmalar\u0131n\u0131 basitle\u015ftirerek, &#8220;convention over configuration&#8221; (yap\u0131land\u0131rma yerine kural) prensibini benimser ve geli\u015ftiricilerin i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131r. Spring Boot&#8217;un sundu\u011fu bu kolayl\u0131klar\u0131n ba\u015f\u0131nda ise Spring Boot CLI (Command Line Interface) gelir. Bu makalede, Spring Boot CLI&#8217;nin ne oldu\u011funu, nas\u0131l kuruldu\u011funu ve basit bir &#8220;HelloWorld&#8221; uygulamas\u0131n\u0131n nas\u0131l geli\u015ftirilece\u011fini ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>Spring Boot&#8217;a Giri\u015f ve Spring Boot CLI&#8217;nin \u00d6nemi<\/h3>\n<p>Spring Boot, Spring ekosisteminin geli\u015ftirici verimlili\u011fini art\u0131rmak amac\u0131yla ortaya \u00e7\u0131kard\u0131\u011f\u0131 g\u00fc\u00e7l\u00fc bir ara\u00e7 setidir. G\u00f6m\u00fcl\u00fc sunucular (Tomcat, Jetty, Undertow), otomatik yap\u0131land\u0131rma (auto-configuration) ve starter ba\u011f\u0131ml\u0131l\u0131klar\u0131 gibi \u00f6zellikleriyle, geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r ve basitle\u015ftirir. Bir Spring Boot uygulamas\u0131, genellikle minimal yap\u0131land\u0131rma ile \u00e7al\u0131\u015f\u0131r ve kendi ba\u015f\u0131na \u00e7al\u0131\u015fabilen (self-contained) bir JAR dosyas\u0131 olarak paketlenebilir. Bu sayede, uygulamalar\u0131n da\u011f\u0131t\u0131m\u0131 ve \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 olduk\u00e7a kolayla\u015f\u0131r.<\/p>\n<p>Spring Boot CLI, bu kolayl\u0131klar\u0131 komut sat\u0131r\u0131na ta\u015f\u0131yan, Groovy betikleriyle h\u0131zl\u0131 prototipleme ve uygulama geli\u015ftirme imkan\u0131 sunan bir ara\u00e7t\u0131r. Geli\u015ftiricilerin, bir IDE (Integrated Development Environment) a\u00e7maya veya karma\u015f\u0131k Maven\/Gradle yap\u0131land\u0131rmalar\u0131yla u\u011fra\u015fmaya gerek kalmadan, tek bir komutla Spring Boot uygulamalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131na olanak tan\u0131r. \u00d6zellikle k\u00fc\u00e7\u00fck servisler, prototipler veya h\u0131zl\u0131 testler i\u00e7in idealdir. CLI, arka planda Spring Boot&#8217;un t\u00fcm g\u00fcc\u00fcn\u00fc kullanarak ba\u011f\u0131ml\u0131l\u0131klar\u0131 otomatik olarak \u00e7\u00f6zer, kodu derler ve uygulamay\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc inan\u0131lmaz derecede h\u0131zland\u0131r\u0131r.<\/p>\n<p>Spring Boot CLI&#8217;nin temel avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong>H\u0131zl\u0131 Prototipleme:<\/strong> Groovy&#8217;nin esnekli\u011fi sayesinde, \u00e7ok az kodla tam i\u015flevsel Spring Boot uygulamalar\u0131 olu\u015fturulabilir.<br \/>\n*   <strong>Basitlik:<\/strong> Geleneksel Spring projelerinin gerektirdi\u011fi XML veya Java tabanl\u0131 yap\u0131land\u0131rmalar\u0131n \u00e7o\u011funu ortadan kald\u0131r\u0131r.<br \/>\n*   <strong>Otomatik Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi:<\/strong> CLI, Groovy beti\u011finizdeki s\u0131n\u0131flara veya annotations&#8217;lara bakarak gerekli Spring Boot &#8220;starter&#8221; ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 otomatik olarak ekler. \u00d6rne\u011fin, <code>@RestController<\/code> kulland\u0131\u011f\u0131n\u0131zda <code>spring-boot-starter-web<\/code> otomatik olarak projenize dahil edilir.<br \/>\n*   <strong>G\u00f6m\u00fcl\u00fc Sunucu Deste\u011fi:<\/strong> Uygulamalar, ek bir yap\u0131land\u0131rmaya gerek kalmadan g\u00f6m\u00fcl\u00fc Tomcat, Jetty veya Undertow sunucular\u0131 \u00fczerinde \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Geli\u015ftirme S\u00fcresini K\u0131saltma:<\/strong> IDE ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 azaltarak ve h\u0131zl\u0131 geri bildirim d\u00f6ng\u00fcleri sa\u011flayarak geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Spring Boot CLI&#8217;yi kurmadan ve kullanmadan \u00f6nce sisteminizde baz\u0131 temel gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olman\u0131z gerekir.<\/p>\n<h4>Java Geli\u015ftirme Kiti (JDK)<\/h4>\n<p>Spring Boot CLI, Java tabanl\u0131 bir ara\u00e7 oldu\u011fu i\u00e7in sisteminizde kurulu bir Java Geli\u015ftirme Kiti (JDK) bulunmas\u0131 zorunludur. Spring Boot&#8217;un mevcut versiyonlar\u0131 genellikle Java 8 veya daha yeni versiyonlar\u0131n\u0131 gerektirir. \u00d6nerilen minimum versiyon Java 11&#8217;dir, ancak Java 17 veya daha yeni LTS (Long Term Support) versiyonlar\u0131 tercih edilebilir.<\/p>\n<p>JDK&#8217;n\u0131z\u0131n kurulu olup olmad\u0131\u011f\u0131n\u0131 ve versiyonunu kontrol etmek i\u00e7in komut istemcisini (terminal veya PowerShell) a\u00e7arak a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">java -version\njavac -version<\/code><\/pre>\n<p>Bu komutlar, kurulu Java versiyonunuzu ve Java derleyicisinin versiyonunu g\u00f6stermelidir. E\u011fer bu komutlar hata veriyorsa veya Java kurulu de\u011filse, OpenJDK, Oracle JDK gibi bir JDK da\u011f\u0131t\u0131m\u0131n\u0131 indirip kurman\u0131z gerekmektedir.<\/p>\n<p>Ayr\u0131ca, <code>JAVA_HOME<\/code> ortam de\u011fi\u015fkeninin do\u011fru \u015fekilde ayarland\u0131\u011f\u0131ndan emin olmal\u0131s\u0131n\u0131z. Bu de\u011fi\u015fken, JDK&#8217;n\u0131n k\u00f6k dizinini i\u015faret etmelidir. \u00d6rne\u011fin, Windows&#8217;ta <code>C:\\Program Files\\Java\\jdk-17<\/code> gibi bir yolu g\u00f6stermelidir. <code>PATH<\/code> ortam de\u011fi\u015fkeni de <code>%JAVA_HOME%\\bin<\/code> dizinini i\u00e7ermelidir, b\u00f6ylece <code>java<\/code> ve <code>javac<\/code> komutlar\u0131na herhangi bir dizinden eri\u015filebilir.<\/p>\n<h3>Spring Boot CLI Kurulumu<\/h3>\n<p>Spring Boot CLI&#8217;yi kurman\u0131n birka\u00e7 farkl\u0131 yolu vard\u0131r. \u0130\u015fletim sisteminize ve tercihlerinize g\u00f6re en uygun y\u00f6ntemi se\u00e7ebilirsiniz.<\/p>\n<h4>Windows \u0130\u00e7in Kurulum<\/h4>\n<p>Windows \u00fczerinde Spring Boot CLI&#8217;yi kurman\u0131n en kolay yollar\u0131ndan biri Scoop paket y\u00f6neticisini kullanmakt\u0131r.<\/p>\n<h5>Scoop ile Kurulum (\u00d6nerilen)<\/h5>\n<p>Scoop, Windows i\u00e7in g\u00fc\u00e7l\u00fc bir komut sat\u0131r\u0131 y\u00fckleyicisidir. E\u011fer sisteminizde Scoop kurulu de\u011filse, PowerShell&#8217;i y\u00f6netici olarak a\u00e7arak a\u015fa\u011f\u0131daki komutlarla kurabilirsiniz:<\/p>\n<pre><code class=\"language-powershell\">Set-ExecutionPolicy RemoteSigned -Scope CurrentUser\nirm get.scoop.sh | iex<\/code><\/pre>\n<p>Scoop kurulduktan sonra, Spring Boot CLI&#8217;yi kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-powershell\">scoop install springboot<\/code><\/pre>\n<p>Bu komut, Spring Boot CLI&#8217;nin en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc indirip kuracak ve PATH ortam de\u011fi\u015fkeninizi otomatik olarak ayarlayacakt\u0131r.<\/p>\n<h5>Manuel Kurulum<\/h5>\n<p>Manuel kurulum i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<p>1.  <strong>ZIP Dosyas\u0131n\u0131 \u0130ndirme:<\/strong> Spring Boot CLI&#8217;nin ZIP dosyas\u0131n\u0131 Spring&#8217;in resmi deposundan veya Maven Central&#8217;dan indirin. \u00d6rne\u011fin, <code>spring-boot-cli-x.x.x.RELEASE-bin.zip<\/code> gibi bir dosya olacakt\u0131r.<br \/>\n2.  <strong>Dosyay\u0131 \u00c7\u0131karma:<\/strong> \u0130ndirdi\u011finiz ZIP dosyas\u0131n\u0131 <code>C:\\Program Files\\Spring\\spring-boot-cli<\/code> gibi kolay eri\u015filebilir bir konuma \u00e7\u0131kar\u0131n. <code>bin<\/code> klas\u00f6r\u00fcn\u00fcn bu dizinin alt\u0131nda oldu\u011fundan emin olun.<br \/>\n3.  <strong>Ortam De\u011fi\u015fkeni (PATH) Ayarlama:<\/strong> \u00c7\u0131kar\u0131lan dizinin <code>bin<\/code> klas\u00f6r\u00fcn\u00fc sisteminizin <code>PATH<\/code> ortam de\u011fi\u015fkenine eklemeniz gerekir.<br \/>\n    *   Ba\u015flat men\u00fcs\u00fcnden &#8220;Ortam De\u011fi\u015fkenleri&#8221; yazarak &#8220;Sistem ortam de\u011fi\u015fkenlerini d\u00fczenleyin&#8221; se\u00e7ene\u011fini a\u00e7\u0131n.<br \/>\n    *   &#8220;Ortam De\u011fi\u015fkenleri&#8221; d\u00fc\u011fmesine t\u0131klay\u0131n.<br \/>\n    *   &#8220;Sistem de\u011fi\u015fkenleri&#8221; b\u00f6l\u00fcm\u00fcnde <code>Path<\/code> de\u011fi\u015fkenini bulun ve &#8220;D\u00fczenle&#8221; d\u00fc\u011fmesine t\u0131klay\u0131n.<br \/>\n    *   &#8220;Yeni&#8221; d\u00fc\u011fmesine t\u0131klay\u0131n ve Spring Boot CLI&#8217;nin <code>bin<\/code> dizininin yolunu (\u00f6rne\u011fin, <code>C:\\Program Files\\Spring\\spring-boot-cli\\bin<\/code>) ekleyin.<br \/>\n    *   T\u00fcm pencereleri &#8220;Tamam&#8221; diyerek kapat\u0131n.<\/p>\n<h4>macOS \u0130\u00e7in Kurulum<\/h4>\n<p>macOS \u00fczerinde Spring Boot CLI&#8217;yi kurman\u0131n en kolay yolu Homebrew paket y\u00f6neticisini kullanmakt\u0131r.<\/p>\n<h5>Homebrew ile Kurulum (\u00d6nerilen)<\/h5>\n<p>Homebrew, macOS i\u00e7in pop\u00fcler bir paket y\u00f6neticisidir. E\u011fer sisteminizde Homebrew kurulu de\u011filse, Terminal&#8217;i a\u00e7arak a\u015fa\u011f\u0131daki komutla kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">\/bin\/bash -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh)\"<\/code><\/pre>\n<p>Homebrew kurulduktan sonra, Spring Boot CLI&#8217;yi kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">brew install spring-boot<\/code><\/pre>\n<p>Bu komut, Spring Boot CLI&#8217;nin en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc indirip kuracak ve PATH ortam de\u011fi\u015fkeninizi otomatik olarak ayarlayacakt\u0131r.<\/p>\n<h5>Manuel Kurulum<\/h5>\n<p>Manuel kurulum i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<p>1.  <strong>ZIP Dosyas\u0131n\u0131 \u0130ndirme:<\/strong> Spring Boot CLI&#8217;nin ZIP dosyas\u0131n\u0131 Spring&#8217;in resmi deposundan indirin.<br \/>\n2.  <strong>Dosyay\u0131 \u00c7\u0131karma:<\/strong> \u0130ndirdi\u011finiz ZIP dosyas\u0131n\u0131 <code>\/usr\/local\/spring-boot-cli<\/code> gibi bir konuma \u00e7\u0131kar\u0131n.<br \/>\n3.  <strong>Ortam De\u011fi\u015fkeni (PATH) Ayarlama:<\/strong> \u00c7\u0131kar\u0131lan dizinin <code>bin<\/code> klas\u00f6r\u00fcn\u00fc sisteminizin <code>PATH<\/code> ortam de\u011fi\u015fkenine eklemeniz gerekir. Terminal&#8217;i a\u00e7\u0131n ve genellikle <code>~\/.bash_profile<\/code>, <code>~\/.zshrc<\/code> veya <code>~\/.profile<\/code> dosyan\u0131z\u0131 d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">echo 'export PATH=\"\/usr\/local\/spring-boot-cli\/bin:$PATH\"' >> ~\/.bash_profile # veya ~\/.zshrc\n    source ~\/.bash_profile # veya ~\/.zshrc<\/code><\/pre>\n<p>    Bu komutlar, PATH de\u011fi\u015fkeninize Spring Boot CLI&#8217;nin <code>bin<\/code> dizinini ekleyecek ve de\u011fi\u015fikli\u011fi mevcut oturumunuzda etkinle\u015ftirecektir.<\/p>\n<h4>Linux \u0130\u00e7in Kurulum<\/h4>\n<p>Linux \u00fczerinde Spring Boot CLI&#8217;yi kurman\u0131n en esnek yollar\u0131ndan biri SDKMAN! kullanmakt\u0131r.<\/p>\n<h5>SDKMAN! ile Kurulum (\u00d6nerilen)<\/h5>\n<p>SDKMAN! (Software Development Kit Manager), Linux, macOS ve WSL (Windows Subsystem for Linux) \u00fczerinde birden fazla JDK, Maven, Gradle, Spring Boot CLI gibi SDK&#8217;lar\u0131 y\u00f6netmek i\u00e7in kullan\u0131lan bir ara\u00e7t\u0131r. E\u011fer sisteminizde SDKMAN! kurulu de\u011filse, Terminal&#8217;i a\u00e7arak a\u015fa\u011f\u0131daki komutla kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">curl -s \"https:\/\/get.sdkman.io\" | bash\nsource \"$HOME\/.sdkman\/bin\/sdkman-init.sh\"<\/code><\/pre>\n<p>SDKMAN! kurulduktan sonra, Spring Boot CLI&#8217;yi kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sdk install springboot<\/code><\/pre>\n<p>Bu komut, Spring Boot CLI&#8217;nin en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc indirip kuracak ve PATH ortam de\u011fi\u015fkeninizi otomatik olarak ayarlayacakt\u0131r.<\/p>\n<h5>Manuel Kurulum<\/h5>\n<p>Manuel kurulum i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<p>1.  <strong>ZIP Dosyas\u0131n\u0131 \u0130ndirme:<\/strong> Spring Boot CLI&#8217;nin ZIP dosyas\u0131n\u0131 Spring&#8217;in resmi deposundan indirin.<br \/>\n2.  <strong>Dosyay\u0131 \u00c7\u0131karma:<\/strong> \u0130ndirdi\u011finiz ZIP dosyas\u0131n\u0131 <code>\/opt\/spring-boot-cli<\/code> gibi bir konuma \u00e7\u0131kar\u0131n.<br \/>\n3.  <strong>Ortam De\u011fi\u015fkeni (PATH) Ayarlama:<\/strong> \u00c7\u0131kar\u0131lan dizinin <code>bin<\/code> klas\u00f6r\u00fcn\u00fc sisteminizin <code>PATH<\/code> ortam de\u011fi\u015fkenine eklemeniz gerekir. Terminal&#8217;i a\u00e7\u0131n ve genellikle <code>~\/.bashrc<\/code> veya <code>~\/.profile<\/code> dosyan\u0131z\u0131 d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">echo 'export PATH=\"\/opt\/spring-boot-cli\/bin:$PATH\"' >> ~\/.bashrc\n    source ~\/.bashrc<\/code><\/pre>\n<p>    Bu komutlar, PATH de\u011fi\u015fkeninize Spring Boot CLI&#8217;nin <code>bin<\/code> dizinini ekleyecek ve de\u011fi\u015fikli\u011fi mevcut oturumunuzda etkinle\u015ftirecektir.<\/p>\n<h4>Kurulum Do\u011frulama<\/h4>\n<p>Kurulum tamamland\u0131ktan sonra, Spring Boot CLI&#8217;nin do\u011fru \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in komut istemcisini (terminal veya PowerShell) a\u00e7arak a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">spring --version<\/code><\/pre>\n<p>Bu komut, kurulu Spring Boot CLI versiyonunu g\u00f6stermelidir. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-\">Spring Boot CLI 3.2.5<\/code><\/pre>\n<p>E\u011fer versiyon bilgisi g\u00f6r\u00fcn\u00fcyorsa, Spring Boot CLI ba\u015far\u0131yla kurulmu\u015f demektir ve kullan\u0131ma haz\u0131rd\u0131r.<\/p>\n<h3>Spring Boot CLI Komutlar\u0131na Genel Bak\u0131\u015f<\/h3>\n<p>Spring Boot CLI, geli\u015ftiricilere \u00e7e\u015fitli g\u00f6revleri yerine getirmeleri i\u00e7in bir dizi kullan\u0131\u015fl\u0131 komut sunar. En s\u0131k kullan\u0131lan komutlara h\u0131zl\u0131ca g\u00f6z atal\u0131m:<\/p>\n<p>*   <code>spring run <file(s)><\/code>: Bir veya daha fazla Groovy veya Java kaynak dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. CLI, gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 otomatik olarak \u00e7\u00f6zer, kodu derler ve uygulamay\u0131 ba\u015flat\u0131r. Bu, CLI&#8217;nin en s\u0131k kullan\u0131lan komutudur.<br \/>\n*   <code>spring init [options] [location]<\/code>: Spring Initializr&#8217;\u0131 kullanarak yeni bir Spring Boot projesi olu\u015fturur. Bu komut, Maven veya Gradle tabanl\u0131, Java veya Kotlin dilinde, \u00e7e\u015fitli ba\u011f\u0131ml\u0131l\u0131klarla dolu bir proje iskeleti olu\u015fturabilir.<br \/>\n*   <code>spring jar <jar-file-name> <file(s)><\/code>: Verilen Groovy veya Java kaynak dosyalar\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131labilir (executable) bir JAR dosyas\u0131 olu\u015fturur. Bu JAR, daha sonra <code>java -jar <jar-file-name><\/code> komutuyla \u00e7al\u0131\u015ft\u0131r\u0131labilir.<br \/>\n*   <code>spring test <file(s)><\/code>: Verilen Groovy veya Java test dosyalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <code>spring help [command]<\/code>: Belirli bir komut hakk\u0131nda yard\u0131m veya t\u00fcm komutlar\u0131n listesini g\u00f6sterir.<br \/>\n*   <code>spring get <dependency-id><\/code>: Belirli bir Spring Boot starter ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 veya di\u011fer ba\u011f\u0131ml\u0131l\u0131klar\u0131 indirir.<br \/>\n*   <code>spring install <dependency-id><\/code>: Belirli bir ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 CLI&#8217;nin yerel deposuna kurar.<br \/>\n*   <code>spring uninstall <dependency-id><\/code>: Kurulmu\u015f bir ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 kald\u0131r\u0131r.<\/p>\n<p>Bu komutlar, Spring Boot CLI&#8217;nin esnekli\u011fini ve geli\u015ftirme s\u00fcrecini ne kadar h\u0131zland\u0131rabilece\u011fini g\u00f6stermektedir.<\/p>\n<h3>HelloWorld \u00d6rne\u011fi<\/h3>\n<p>\u015eimdi Spring Boot CLI kullanarak basit bir &#8220;HelloWorld&#8221; uygulamas\u0131n\u0131 nas\u0131l olu\u015fturup \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131za bakal\u0131m. \u00d6ncelikle Groovy ile ba\u015flay\u0131p, ard\u0131ndan Java ile nas\u0131l yap\u0131labilece\u011fini g\u00f6sterece\u011fiz.<\/p>\n<h4>Groovy ile HelloWorld<\/h4>\n<p>Groovy, Java platformu i\u00e7in dinamik bir dildir ve Java ile tam uyumludur. Spring Boot CLI, Groovy betiklerini do\u011frudan \u00e7al\u0131\u015ft\u0131rabilme yetene\u011fi sayesinde geli\u015ftirme s\u00fcrecini olduk\u00e7a basitle\u015ftirir.<\/p>\n<p>1.  <strong>\u00c7al\u0131\u015fma Dizini Olu\u015fturma:<\/strong> \u0130lk olarak, projeniz i\u00e7in yeni bir klas\u00f6r olu\u015fturun ve i\u00e7ine girin:<\/p>\n<pre><code class=\"language-bash\">mkdir spring-cli-helloworld\n    cd spring-cli-helloworld<\/code><\/pre>\n<p>2.  <strong>Groovy Beti\u011fi Olu\u015fturma:<\/strong> <code>app.groovy<\/code> ad\u0131nda yeni bir dosya olu\u015fturun ve i\u00e7ine a\u015fa\u011f\u0131daki kodu yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-groovy\">@RestController\n    class HelloWorldApp {\n\n        @RequestMapping(\"\/\")\n        String home() {\n            \"Merhaba, Spring Boot CLI!\"\n        }\n\n        @RequestMapping(\"\/hello\")\n        String hello() {\n            \"Merhaba D\u00fcnya!\"\n        }\n    }<\/code><\/pre>\n<p>    Bu kod par\u00e7as\u0131, standart bir Spring Boot web uygulamas\u0131d\u0131r. <code>@RestController<\/code> annotation&#8217;\u0131, bu s\u0131n\u0131f\u0131n bir REST kontrolc\u00fcs\u00fc oldu\u011funu belirtir ve y\u00f6ntemlerin HTTP isteklerine yan\u0131t verece\u011fini g\u00f6sterir. <code>@RequestMapping(\"\/\")<\/code> ve <code>@RequestMapping(\"\/hello\")<\/code> annotation&#8217;lar\u0131, ilgili y\u00f6ntemlerin belirli URL yollar\u0131na (paths) e\u015flendi\u011fini belirtir.<\/p>\n<p>    <strong>\u00d6nemli Not:<\/strong> Bu Groovy beti\u011finde, <code>import<\/code> ifadelerini veya <code>main<\/code> metodunu g\u00f6rm\u00fcyorsunuz. Spring Boot CLI, Groovy betiklerini \u00e7al\u0131\u015ft\u0131r\u0131rken bu boilerplate (tekrar eden) kodlar\u0131 otomatik olarak ekler. <code>@RestController<\/code> veya <code>@RequestMapping<\/code> gibi Spring annotation&#8217;lar\u0131n\u0131 g\u00f6rd\u00fc\u011f\u00fcnde, CLI otomatik olarak <code>spring-boot-starter-web<\/code> ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 indirir ve projenize ekler. Ayr\u0131ca, bir <code>main<\/code> metodu i\u00e7eren ve uygulamay\u0131 ba\u015flatan bir <code>SpringApplication<\/code> s\u0131n\u0131f\u0131n\u0131 da otomatik olarak olu\u015fturur.<\/p>\n<p>3.  <strong>Uygulamay\u0131 \u00c7al\u0131\u015ft\u0131rma:<\/strong> \u015eimdi, terminalinizde ayn\u0131 dizinde oldu\u011funuzdan emin olarak a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">spring run app.groovy<\/code><\/pre>\n<p>    CLI, gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 (ilk \u00e7al\u0131\u015ft\u0131rmada biraz zaman alabilir), kodu derleyecek ve uygulamay\u0131 g\u00f6m\u00fcl\u00fc bir Tomcat sunucusu \u00fczerinde 8080 portunda ba\u015flatacakt\u0131r. Konsolda a\u015fa\u011f\u0131daki gibi bir \u00e7\u0131kt\u0131 g\u00f6rmelisiniz:<\/p>\n<pre><code class=\"language-\">...\n    Tomcat initialized with port(s): 8080 (http)\n    ...\n    Started HelloWorldApp in X.XXX seconds (JVM running for X.XXX)\n    ...<\/code><\/pre>\n<p>4.  <strong>Uygulamay\u0131 Test Etme:<\/strong> Uygulama \u00e7al\u0131\u015ft\u0131ktan sonra, web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki adreslere gidin:<\/p>\n<p>    *   <code>http:\/\/localhost:8080\/<\/code><br \/>\n    *   <code>http:\/\/localhost:8080\/hello<\/code><\/p>\n<p>    \u0130lk adreste &#8220;Merhaba, Spring Boot CLI!&#8221; mesaj\u0131n\u0131, ikinci adreste ise &#8220;Merhaba D\u00fcnya!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>5.  <strong>Uygulamay\u0131 Durdurma:<\/strong> Uygulamay\u0131 durdurmak i\u00e7in terminalde <code>Ctrl+C<\/code> tu\u015f kombinasyonuna basman\u0131z yeterlidir.<\/p>\n<h4>Java ile HelloWorld<\/h4>\n<p>Spring Boot CLI, sadece Groovy betiklerini de\u011fil, ayn\u0131 zamanda Java kaynak dosyalar\u0131n\u0131 da \u00e7al\u0131\u015ft\u0131rabilir. Ancak Java i\u00e7in CLI kullan\u0131m\u0131, Groovy&#8217;ye k\u0131yasla baz\u0131 ek ad\u0131mlar gerektirebilir veya daha az &#8220;sihirli&#8221; hissettirebilir, \u00e7\u00fcnk\u00fc Java projeleri genellikle Maven veya Gradle gibi derleme ara\u00e7lar\u0131yla daha iyi y\u00f6netilir. Yine de, CLI&#8217;nin Java dosyalar\u0131n\u0131 nas\u0131l i\u015fledi\u011fini g\u00f6rmek faydal\u0131d\u0131r.<\/p>\n<p>1.  <strong>\u00c7al\u0131\u015fma Dizini Olu\u015fturma:<\/strong> Yine yeni bir klas\u00f6r olu\u015fturun veya \u00f6nceki klas\u00f6r\u00fc kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">mkdir spring-cli-java-helloworld\n    cd spring-cli-java-helloworld<\/code><\/pre>\n<p>2.  <strong>Java Kaynak Dosyas\u0131 Olu\u015fturma:<\/strong> <code>HelloWorldApplication.java<\/code> ad\u0131nda yeni bir dosya olu\u015fturun ve i\u00e7ine a\u015fa\u011f\u0131daki kodu yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-java\">import org.springframework.boot.SpringApplication;\n    import org.springframework.boot.autoconfigure.SpringBootApplication;\n    import org.springframework.web.bind.annotation.RequestMapping;\n    import org.springframework.web.bind.annotation.RestController;\n\n    @SpringBootApplication\n    @RestController\n    public class HelloWorldApplication {\n\n        public static void main(String[] args) {\n            SpringApplication.run(HelloWorldApplication.class, args);\n        }\n\n        @RequestMapping(\"\/\")\n        public String home() {\n            return \"Merhaba, Spring Boot CLI (Java)!\";\n        }\n\n        @RequestMapping(\"\/java-hello\")\n        public String javaHello() {\n            return \"Merhaba D\u00fcnya (Java)!\";\n        }\n    }<\/code><\/pre>\n<p>    Bu Java kodu, Groovy \u00f6rne\u011finin Java kar\u015f\u0131l\u0131\u011f\u0131d\u0131r. Java&#8217;da <code>import<\/code> ifadelerini ve <code>main<\/code> metodunu a\u00e7\u0131k\u00e7a belirtmeniz gerekir. <code>@SpringBootApplication<\/code> annotation&#8217;\u0131, Spring Boot uygulamas\u0131n\u0131n ana s\u0131n\u0131f\u0131n\u0131 i\u015faret eder ve otomatik yap\u0131land\u0131rma, bile\u015fen taramas\u0131 gibi \u00f6zellikleri etkinle\u015ftirir.<\/p>\n<p>3.  <strong>Uygulamay\u0131 \u00c7al\u0131\u015ft\u0131rma:<\/strong> Terminalinizde ayn\u0131 dizinde oldu\u011funuzdan emin olarak a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">spring run HelloWorldApplication.java<\/code><\/pre>\n<p>    CLI, Java dosyas\u0131n\u0131 derleyecek, gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 (yine <code>spring-boot-starter-web<\/code> gibi) \u00e7\u00f6zecek ve uygulamay\u0131 ba\u015flatacakt\u0131r. \u00c7\u0131kt\u0131, Groovy \u00f6rne\u011fine benzer olacakt\u0131r.<\/p>\n<p>4.  <strong>Uygulamay\u0131 Test Etme:<\/strong> Web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki adreslere gidin:<\/p>\n<p>    *   <code>http:\/\/localhost:8080\/<\/code><br \/>\n    *   <code>http:\/\/localhost:8080\/java-hello<\/code><\/p>\n<p>    \u0130lgili mesajlar\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>Detayl\u0131 A\u00e7\u0131klamalar<\/h4>\n<p>Her iki \u00f6rnekte de Spring Boot CLI&#8217;nin arkas\u0131ndaki &#8220;sihri&#8221; anlamak \u00f6nemlidir:<\/p>\n<p>*   <strong>Otomatik Yap\u0131land\u0131rma (Auto-configuration):<\/strong> Spring Boot, classpath&#8217;inizdeki JAR ba\u011f\u0131ml\u0131l\u0131klar\u0131na, tan\u0131mlad\u0131\u011f\u0131n\u0131z bean&#8217;lere ve di\u011fer yap\u0131land\u0131rma ayarlar\u0131na bakarak uygulaman\u0131z\u0131 otomatik olarak yap\u0131land\u0131rmaya \u00e7al\u0131\u015f\u0131r. \u00d6rne\u011fin, <code>spring-boot-starter-web<\/code> ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 classpath&#8217;te oldu\u011funda, Spring Boot otomatik olarak bir g\u00f6m\u00fcl\u00fc Tomcat sunucusu, Spring MVC ve di\u011fer web ile ilgili bile\u015fenleri yap\u0131land\u0131r\u0131r.<br \/>\n*   <strong>Starter Ba\u011f\u0131ml\u0131l\u0131klar\u0131:<\/strong> <code>spring-boot-starter-web<\/code> gibi starter&#8217;lar, belirli bir teknoloji y\u0131\u011f\u0131n\u0131 (\u00f6rne\u011fin, web geli\u015ftirme) i\u00e7in gerekli t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 bir araya getiren kullan\u0131\u015fl\u0131 ba\u011f\u0131ml\u0131l\u0131k tan\u0131mlay\u0131c\u0131lar\u0131d\u0131r. Bu, ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015ftirir. CLI, kodunuzdaki annotation&#8217;lar\u0131 veya s\u0131n\u0131flar\u0131 analiz ederek bu starter&#8217;lar\u0131 otomatik olarak ekler.<br \/>\n*   <strong>G\u00f6m\u00fcl\u00fc Sunucu (Embedded Server):<\/strong> Spring Boot uygulamalar\u0131, harici bir uygulama sunucusuna (\u00f6rne\u011fin, standalone Tomcat) ihtiya\u00e7 duymaz. Kendi i\u00e7lerinde bir sunucu (varsay\u0131lan olarak Tomcat) bar\u0131nd\u0131r\u0131r. Bu, uygulamalar\u0131n tek bir JAR dosyas\u0131 olarak paketlenip her yerde \u00e7al\u0131\u015ft\u0131r\u0131labilmesini sa\u011flar.<br \/>\n*   <strong>Groovy&#8217;nin Avantajlar\u0131:<\/strong> Groovy, Java&#8217;ya g\u00f6re daha az boilerplate kod gerektirir. <code>import<\/code> ifadeleri veya <code>main<\/code> metodu gibi standart Java yap\u0131lar\u0131, Spring Boot CLI taraf\u0131ndan otomatik olarak eklenir. Bu, Groovy&#8217;yi h\u0131zl\u0131 prototipleme ve CLI ile kullan\u0131m i\u00e7in m\u00fckemmel bir se\u00e7im yapar.<br \/>\n*   <strong>CLI&#8217;nin Arka Planda Yapt\u0131\u011f\u0131 \u0130\u015fler:<\/strong> <code>spring run<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, CLI \u015funlar\u0131 yapar:<br \/>\n    1.  <strong>Ba\u011f\u0131ml\u0131l\u0131k \u00c7\u00f6zme:<\/strong> Kaynak kodunuzu tarar ve <code>@RestController<\/code>, <code>@Service<\/code> gibi Spring annotation&#8217;lar\u0131n\u0131 veya belirli s\u0131n\u0131flar\u0131 buldu\u011funda, ilgili Spring Boot starter ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (\u00f6rne\u011fin, <code>spring-boot-starter-web<\/code>, <code>spring-boot-starter-data-jpa<\/code>) otomatik olarak Maven Central&#8217;dan indirir ve classpath&#8217;e ekler.<br \/>\n    2.  <strong>Derleme:<\/strong> Groovy veya Java kaynak kodunu derler.<br \/>\n    3.  <strong>Uygulama Ba\u015flatma:<\/strong> Derlenmi\u015f kodu ve \u00e7\u00f6z\u00fclm\u00fc\u015f ba\u011f\u0131ml\u0131l\u0131klar\u0131 kullanarak Spring Boot uygulamas\u0131n\u0131 ba\u015flat\u0131r. Bu, genellikle g\u00f6m\u00fcl\u00fc bir web sunucusunun (varsay\u0131lan olarak Tomcat) ba\u015flat\u0131lmas\u0131n\u0131 i\u00e7erir.<\/p>\n<h3>Geli\u015fmi\u015f Kullan\u0131m \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p>Spring Boot CLI, temel kullan\u0131m\u0131n \u00f6tesinde baz\u0131 geli\u015fmi\u015f yetenekler sunar ve belirli senaryolarda daha verimli kullan\u0131labilir.<\/p>\n<h4>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Manuel Ekleme (<code>@Grab<\/code>)<\/h4>\n<p>CLI&#8217;nin otomatik ba\u011f\u0131ml\u0131l\u0131k \u00e7\u00f6z\u00fcm\u00fc harika olsa da, bazen belirli bir ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 manuel olarak eklemek isteyebilirsiniz. Groovy betikleri i\u00e7inde <code>@Grab<\/code> annotation&#8217;\u0131n\u0131 kullanarak bunu yapabilirsiniz:<\/p>\n<pre><code class=\"language-groovy\">@RestController\n@Grab('spring-boot-starter-data-jpa') \/\/ JPA deste\u011fi ekler\n@Grab('h2') \/\/ H2 veritaban\u0131 ekler\nclass DataApp {\n    \/\/ ... JPA repositories, entities, etc.\n}<\/code><\/pre>\n<p>Bu, CLI&#8217;ye <code>spring-boot-starter-data-jpa<\/code> ve <code>h2<\/code> ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 uygulaman\u0131za dahil etmesini s\u00f6yler.<\/p>\n<h4>Profil Tan\u0131mlama<\/h4>\n<p>Spring Boot, farkl\u0131 ortamlar (geli\u015ftirme, test, \u00fcretim) i\u00e7in farkl\u0131 yap\u0131land\u0131rmalar tan\u0131mlaman\u0131za olanak tan\u0131yan &#8220;profiller&#8221; kavram\u0131n\u0131 destekler. CLI ile bir uygulama \u00e7al\u0131\u015ft\u0131r\u0131rken belirli bir profili etkinle\u015ftirebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">spring run app.groovy -- --spring.profiles.active=dev<\/code><\/pre>\n<p>Bu komut, <code>app.groovy<\/code> uygulamas\u0131n\u0131 <code>dev<\/code> (geli\u015ftirme) profilini etkinle\u015ftirerek \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<h4>Harici Yap\u0131land\u0131rma<\/h4>\n<p>Spring Boot, harici yap\u0131land\u0131rmay\u0131 (\u00f6rne\u011fin, <code>application.properties<\/code> veya <code>application.yml<\/code> dosyalar\u0131) destekler. CLI ile \u00e7al\u0131\u015f\u0131rken de bu dosyalar\u0131 kullanabilirsiniz. Sadece <code>app.groovy<\/code> veya <code>HelloWorldApplication.java<\/code> dosyan\u0131z\u0131n bulundu\u011fu dizine bir <code>application.properties<\/code> dosyas\u0131 ekleyin:<\/p>\n<pre><code class=\"language-properties\"># application.properties\nserver.port=9090\nmy.greeting=Merhaba CLI!<\/code><\/pre>\n<p>Ard\u0131ndan, uygulaman\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, bu \u00f6zellikler otomatik olarak y\u00fcklenecektir.<\/p>\n<pre><code class=\"language-groovy\">@RestController\nclass CustomConfigApp {\n\n    @Value('${my.greeting:Default Greeting}')\n    String greeting;\n\n    @RequestMapping(\"\/greeting\")\n    String getGreeting() {\n        greeting\n    }\n}<\/code><\/pre>\n<p>Uygulamay\u0131 \u00e7al\u0131\u015ft\u0131r\u0131p <code>http:\/\/localhost:9090\/greeting<\/code> adresine gitti\u011finizde &#8220;Merhaba CLI!&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>CLI&#8217;nin \u00dcretim Ortam\u0131nda Kullan\u0131m\u0131<\/h4>\n<p>Spring Boot CLI, h\u0131zl\u0131 prototipleme ve geli\u015ftirme i\u00e7in m\u00fckemmel olsa da, genellikle \u00fcretim ortam\u0131nda kullan\u0131lmaz. \u00dcretim ortam\u0131nda, Maven veya Gradle gibi derleme ara\u00e7lar\u0131 taraf\u0131ndan olu\u015fturulan tam te\u015fekk\u00fcll\u00fc, ba\u011f\u0131ms\u0131z JAR dosyalar\u0131 tercih edilir. Bu JAR&#8217;lar, ba\u011f\u0131ml\u0131l\u0131klar\u0131 a\u00e7\u0131k\u00e7a tan\u0131mlar, daha sa\u011flam derleme s\u00fcre\u00e7leri sunar ve CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) boru hatlar\u0131na daha iyi entegre olur.<\/p>\n<p>CLI, bir Java veya Groovy dosyas\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131labilir bir JAR olu\u015fturma yetene\u011fine sahiptir:<\/p>\n<pre><code class=\"language-bash\">spring jar myapp.jar app.groovy<\/code><\/pre>\n<p>Bu komut, <code>app.groovy<\/code> dosyas\u0131ndan <code>myapp.jar<\/code> ad\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131labilir bir JAR olu\u015fturur. Daha sonra bu JAR&#8217;\u0131 <code>java -jar myapp.jar<\/code> komutuyla \u00e7al\u0131\u015ft\u0131rabilirsiniz. Ancak, bu JAR dosyas\u0131, Maven\/Gradle taraf\u0131ndan olu\u015fturulan bir JAR kadar yap\u0131land\u0131r\u0131labilir veya \u00f6zelle\u015ftirilebilir olmayabilir.<\/p>\n<h4>CLI&#8217;nin Prototipleme ve \u00d6\u011frenme Arac\u0131 Olarak \u00d6nemi<\/h4>\n<p>CLI&#8217;nin as\u0131l g\u00fcc\u00fc, Spring Boot&#8217;u \u00f6\u011frenmek ve h\u0131zl\u0131ca fikirleri test etmek isteyen geli\u015ftiriciler i\u00e7in sa\u011flad\u0131\u011f\u0131 kolayl\u0131ktad\u0131r. Karma\u015f\u0131k proje yap\u0131land\u0131rmalar\u0131yla u\u011fra\u015fmadan do\u011frudan i\u015f mant\u0131\u011f\u0131na odaklanman\u0131z\u0131 sa\u011flar. Yeni bir Spring Boot \u00f6zelli\u011fini veya bir k\u00fct\u00fcphaneyi denemek istedi\u011finizde, birka\u00e7 sat\u0131r Groovy kodu yaz\u0131p <code>spring run<\/code> komutuyla an\u0131nda sonu\u00e7lar\u0131 g\u00f6rebilirsiniz. Bu, \u00f6\u011frenme e\u011frisini d\u00fc\u015f\u00fcr\u00fcr ve geli\u015ftiricilerin daha h\u0131zl\u0131 deneyim kazanmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>Spring Boot CLI ile Maven\/Gradle aras\u0131ndaki fark nedir?<\/h4>\n<p>Spring Boot CLI, h\u0131zl\u0131 prototipleme ve tek dosya uygulamalar\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in tasarlanm\u0131\u015f bir komut sat\u0131r\u0131 arac\u0131d\u0131r. Ba\u011f\u0131ml\u0131l\u0131klar\u0131 otomatik olarak \u00e7\u00f6zer ve Groovy betiklerini do\u011frudan \u00e7al\u0131\u015ft\u0131rabilir. Maven ve Gradle ise daha b\u00fcy\u00fck, \u00e7ok mod\u00fcll\u00fc projelerin derlemesi, paketlemesi, test edilmesi ve ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimini sa\u011flamak i\u00e7in kullan\u0131lan tam te\u015fekk\u00fcll\u00fc proje derleme ara\u00e7lar\u0131d\u0131r. CLI, arka planda Maven veya Gradle&#8217;\u0131n baz\u0131 i\u015flevlerini taklit etse de, bir derleme arac\u0131 de\u011fildir; daha \u00e7ok bir &#8220;ko\u015fucu&#8221; ve &#8220;prototipleme&#8221; arac\u0131d\u0131r. \u00dcretim projelerinde Maven veya Gradle kullanmak standart ve \u00f6nerilen yakla\u015f\u0131md\u0131r.<\/p>\n<h4>CLI&#8217;yi ne zaman kullanmal\u0131y\u0131m?<\/h4>\n<p>*   H\u0131zl\u0131 prototipler olu\u015ftururken.<br \/>\n*   Spring Boot&#8217;u \u00f6\u011frenirken veya yeni bir \u00f6zelli\u011fi test ederken.<br \/>\n*   K\u00fc\u00e7\u00fck, tek dosya veya minimal ba\u011f\u0131ml\u0131l\u0131\u011fa sahip uygulamalar geli\u015ftirirken.<br \/>\n*   IDE a\u00e7maya gerek kalmadan an\u0131nda geri bildirim almak istedi\u011finizde.<br \/>\n*   Groovy&#8217;nin sundu\u011fu dinamik dil \u00f6zelliklerinden faydalanmak istedi\u011finizde.<\/p>\n<h4>Hata ay\u0131klama (Debugging) nas\u0131l yap\u0131l\u0131r?<\/h4>\n<p>Spring Boot CLI ile \u00e7al\u0131\u015fan bir uygulamada hata ay\u0131klamak i\u00e7in, Java&#8217;n\u0131n uzaktan hata ay\u0131klama (remote debugging) yetene\u011fini kullanabilirsiniz. <code>spring run<\/code> komutuna Java hata ay\u0131klama parametrelerini eklemeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">spring run --debug app.groovy<\/code><\/pre>\n<p>Bu komut, uygulamay\u0131 8000 portunda hata ay\u0131klama modunda ba\u015flat\u0131r. Daha sonra bir IDE&#8217;den (IntelliJ IDEA, Eclipse, VS Code) bu porta ba\u011flanarak hata ay\u0131klama yapabilirsiniz.<\/p>\n<h4>Farkl\u0131 Spring Boot versiyonlar\u0131n\u0131 nas\u0131l y\u00f6netirim?<\/h4>\n<p>E\u011fer SDKMAN! ile Spring Boot CLI&#8217;yi kurduysan\u0131z, farkl\u0131 versiyonlar\u0131 y\u00f6netmek olduk\u00e7a kolayd\u0131r:<\/p>\n<pre><code class=\"language-bash\">sdk list springboot # Mevcut versiyonlar\u0131 listeler\nsdk install springboot <version> # Belirli bir versiyonu kurar\nsdk use springboot <version> # Belirli bir versiyonu kullan\u0131r\nsdk default springboot <version> # Varsay\u0131lan versiyonu ayarlar<\/code><\/pre>\n<p>Manuel kurulum yapt\u0131ysan\u0131z, farkl\u0131 versiyonlar\u0131 farkl\u0131 dizinlere kurup PATH ortam de\u011fi\u015fkeninizi manuel olarak de\u011fi\u015ftirmeniz veya sembolik ba\u011flant\u0131lar kullanman\u0131z gerekebilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Spring Boot CLI, Spring Boot ekosisteminin geli\u015ftirici verimlili\u011fine yapt\u0131\u011f\u0131 \u00f6nemli katk\u0131lardan biridir. H\u0131zl\u0131 prototipleme, kolay \u00f6\u011frenme ve an\u0131nda geri bildirim sa\u011flama yetenekleriyle, \u00f6zellikle yeni ba\u015flayanlar ve h\u0131zl\u0131 deneyler yapmak isteyen deneyimli geli\u015ftiriciler i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. Groovy&#8217;nin esnekli\u011fiyle birle\u015fti\u011finde, minimal kodla tam te\u015fekk\u00fcll\u00fc Spring Boot uygulamalar\u0131 olu\u015fturma ve \u00e7al\u0131\u015ft\u0131rma imkan\u0131 sunar.<\/p>\n<p>Bu makalede, Spring Boot CLI&#8217;nin kurulumundan, temel komutlar\u0131na, Groovy ve Java ile &#8220;HelloWorld&#8221; \u00f6rneklerinin geli\u015ftirilmesine kadar geni\u015f bir yelpazeyi ele ald\u0131k. CLI&#8217;nin arkas\u0131ndaki otomatik yap\u0131land\u0131rma ve ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi gibi mekanizmalar\u0131 anlayarak, bu g\u00fc\u00e7l\u00fc arac\u0131 daha verimli bir \u015fekilde kullanabilirsiniz. Unutmay\u0131n ki CLI, prototipleme ve \u00f6\u011frenme arac\u0131 olarak \u00f6ne \u00e7\u0131ksa da, b\u00fcy\u00fck \u00f6l\u00e7ekli ve \u00fcretim odakl\u0131 projelerde Maven veya Gradle gibi derleme ara\u00e7lar\u0131n\u0131n sa\u011flad\u0131\u011f\u0131 esneklik ve kontrol genellikle tercih edilir. Ancak her geli\u015ftiricinin ara\u00e7 kutusunda bulunmas\u0131 gereken de\u011ferli bir par\u00e7ad\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi\nSpring Boot, g\u00fcn\u00fcm\u00fcz\u00fcn en pop\u00fcler Java tabanl\u0131 uygulama geli\u015ftirme \u00e7er\u00e7evelerinden biridir.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-32259","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi\" \/>\n<meta property=\"og:description\" content=\"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi Spring Boot, g\u00fcn\u00fcm\u00fcz\u00fcn en pop\u00fcler Java tabanl\u0131 uygulama geli\u015ftirme \u00e7er\u00e7evelerinden biridir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-19T12:41:00+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi\",\"datePublished\":\"2025-10-19T12:41:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/\"},\"wordCount\":3539,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/\",\"name\":\"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-19T12:41:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/","og_locale":"tr_TR","og_type":"article","og_title":"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi","og_description":"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi Spring Boot, g\u00fcn\u00fcm\u00fcz\u00fcn en pop\u00fcler Java tabanl\u0131 uygulama geli\u015ftirme \u00e7er\u00e7evelerinden biridir.","og_url":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-19T12:41:00+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi","datePublished":"2025-10-19T12:41:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/"},"wordCount":3539,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/","url":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/","name":"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-19T12:41:00+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/spring-boot-cli-kurulumu-ve-helloworld-ornegi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Spring Boot CLI Kurulumu ve HelloWorld \u00d6rne\u011fi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32259"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32259\/revisions"}],"predecessor-version":[{"id":32260,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32259\/revisions\/32260"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}