Derinlemesine Spring Boot Cloud
By Onder Teker
()
About this ebook
Bilgi
Bu kitap Spring Cloud, MicroServices & Event-Driven Architecture konularını içermektedir. Başlangıçta Environment & Config Server işlemleri gösterilmektedir. Eureka & Feign ile service discovery içerilmektedir. OpenAPI / Swager ile API documentation & testing kapsamdadır. Actuator ile management anlatımaktadır. Redis ile memory database & cache konuları içerilmiştir. Events, Async & Schedule içerikte yer almaktadır. Cloud Function da kapsam içindedir. RabbitMQ ile queue & Kafka ile streaming içeriğine koyulmuştur. Docker ile deployment gösterilmektedir.
Yazar
Kitabın yazarı bilgisayar mühendisi Önder Teker, yazılım geliştirme alanında 1990'lı yılların sonlarından beri projeler geliştirmekte, 2000'li yılların başından beri eğitimler vermekte, 2010'lu yılların başından beri de kitap ve eğitim setleri üretmektedir.
Read more from Onder Teker
Derinlemesine Spring Boot Fundamentals Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Object-Oriented Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Python Rating: 0 out of 5 stars0 ratingsDerinlemesine İngilizce Dilbilgisi Rating: 5 out of 5 stars5/5Derinlemesine Spring Boot Web Rating: 0 out of 5 stars0 ratingsDerinlemesine C Fundamentals ve Functional Programming Rating: 3 out of 5 stars3/5Derinlemesine PHP Fundamentals Web Database Services Rating: 0 out of 5 stars0 ratingsDerinlemesine Python AI Machine Learning Rating: 0 out of 5 stars0 ratingsDerinlemesine Android Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine SQL Rating: 0 out of 5 stars0 ratingsDerinlemesine Python AI Natural Language Processing Rating: 0 out of 5 stars0 ratingsDerinlemesine HTML & CSS Rating: 0 out of 5 stars0 ratingsDerinlemesine C ++ ve Object-Oriented Programming Rating: 0 out of 5 stars0 ratingsDoğrudan Database Back-End Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Python Data Science Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - ORM, JPA & Hibernate Rating: 0 out of 5 stars0 ratingsDerinlemesine NoSQL Rating: 0 out of 5 stars0 ratingsDerinlemesine Python AI Computer Vision Rating: 0 out of 5 stars0 ratingsDerinlemesine JavaScript Rating: 5 out of 5 stars5/5Derinlemesine React Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - MVC, JSF & Primefaces Rating: 0 out of 5 stars0 ratingsDerinlemesine Android UI Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Web Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - EJB, JMS ve Web Services Rating: 0 out of 5 stars0 ratingsDerinlemesine JavaScript Language Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Desktop Programming Rating: 0 out of 5 stars0 ratings
Related to Derinlemesine Spring Boot Cloud
Related ebooks
Derinlemesine React Rating: 0 out of 5 stars0 ratingsDoğrudan Java Web Enterprise Mobile Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - EJB, JMS ve Web Services Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - MVC, JSF & Primefaces Rating: 0 out of 5 stars0 ratingsDerinlemesine Android Data Programming Rating: 0 out of 5 stars0 ratingsFlutter için Dart Programlama Rating: 0 out of 5 stars0 ratingsDerinlemesine Android UI Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - ORM, JPA & Hibernate Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Desktop Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Android Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Java - Patterns, CDI ve Spring Rating: 0 out of 5 stars0 ratingsDerinlemesine Spring Boot Data Rating: 0 out of 5 stars0 ratingsDoğrudan Java Eclipse Rating: 0 out of 5 stars0 ratingsDoğrudan Java Fundamentals Database Desktop Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine SQL Rating: 0 out of 5 stars0 ratingsDerinlemesine PHP Fundamentals Web Database Services Rating: 0 out of 5 stars0 ratingsDerinlemesine C ++ ve Object-Oriented Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Python AI Computer Vision Rating: 0 out of 5 stars0 ratingsDerinlemesine JavaScript Rating: 5 out of 5 stars5/5Derinlemesine Java Web Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine NoSQL Rating: 0 out of 5 stars0 ratingsDerinlemesine Java Database Programming Rating: 0 out of 5 stars0 ratingsDerinlemesine Python AI Machine Learning Rating: 0 out of 5 stars0 ratingsDoğrudan Web Front-End Programming Rating: 0 out of 5 stars0 ratingsInternet Nasıl Çalışır?: Education Rating: 0 out of 5 stars0 ratingsDerinlemesine React UI Rating: 0 out of 5 stars0 ratingsRapid Miner ile Veri Madenciliği Rating: 0 out of 5 stars0 ratingsDerinlemesine Linux For Developers Rating: 0 out of 5 stars0 ratingsDerinlemesine JavaScript UI Rating: 0 out of 5 stars0 ratingsDoğrudan C#.NET Rating: 0 out of 5 stars0 ratings
Reviews for Derinlemesine Spring Boot Cloud
0 ratings0 reviews
Book preview
Derinlemesine Spring Boot Cloud - Onder Teker
Derinlemesine
Spring
Boot
Cloud
Önder Teker
Godoro Yayıncılık
GODORO YAYINCILIK
Yayıncı Sertifikası No: 40946
Kitabın Adı:
Derinlemesine Spring Boot Cloud
Copyright © 2023 Godoro Yayıncılık
Kitabın Yazarı:
Önder Teker
Birinci Basım, Mayıs 2023, İstanbul
ISBN:
978-605-71725-6-3
Kapak Tasarımı ve Mizanpaj:
Önder Teker
Baskı ve Ciltleme:
Godoro
Özel Baskı Çözümleri
Atikali Mah. Fatih Cad. No: 81 D: 2
Fatih / İstanbul
Telefon : (533) 561-2435
http://www.godoro.com
GODORO YAYINCILIK
Atikali Mah. Fatih Cad. No: 81 D: 2
Fatih / İstanbul
Telefon : (533) 561-2435
Çevre (Environment)
Bu bölümde çevre (environment) ile uygulama ilişkisi gösterilmektedir. Aşağıdaki içerikte buyruk çizgisi (command line) ya da uçbirim (terminal) işlemleriyle takmalar (settings) ve yapılandırma (configuration) gibi konular anlatılmaktadır.
Bohçalama (Packaging)
Bu bölümde Maven aracını kullanarak geliştirilen bir projenin konuşlandırılabilir ve çalıştırılabilir bir uygulamaya dönüştürülmesi anlatılmaktadır.
Java Evi (Java Home)
Bir buyruk çizgisi (command line) ya da uçbirim (terminal) çevresinde Java uygulamalarının çalışması için JAVA_HOME (Java Evi) adlı çevre değişkeni (environment variable) değerinin bir JDK ya da JRE uygulamasının yolak (path) değerine atanması gerekir. Başka bir uygulamaca işletim düzeninin yoksama değeri atanmış olabilir. Bu öğrenmek için uçbirimde echo (yankıla) buyruğu kullanılabilir:
echo %JAVA_HOME%
Ekranda bir yazı basılmıyorsa ya da basılanlarda geçerli bir Java yolağı yoksa atama yapmak gerekir. Daha önce yapılmadıysa Windows için aşağıdaki gibi, set (tak) adlı buyrukla Java evi belirlenebilir:
set JAVA_HOME=C:\Program Files\Java\jdk-17.0.5
Linux için de, daha önce atama yapılıp yapılmadığı echo (yankıla) buyruğuyla sınanabilir:
echo $JAVA_HOME
Linux için de aşağıdaki gibi, export (dışaver) adlı buyrukla bir giriş yapılır:
export $JAVA_HOME=/usr/lib/jvm/java-17-openjdk.
MVN & MVNW Araçları
Maven altyapısının yürütümlenebilir aracı mvnw (Maven Wrapper Maven Sarıcı), temel araç olan mvn (Maven) aracınının daha önce Maven kurmadan, gerektiğinde kurulmasıyla işlemleri yapabilmek için kullanılmaktadır. Bunu dışında mvnw aracı, mvn aracıyla yapılan işlemleri belli bir proje için yapılması için kullanılır. Spring projesinin kökünde bulunur ve geliştirilen projenin kendisiyle ilgili işlemler gerçekleştirir.
Buyruklar (Commands)
Bir geliştirme çevresi (development environment) üzerinde yapılan derleme (compile), temizleme (clean), yapılama (build), bohçalama (package) ve kurulumla (install) gibi işlemleri gerçekleştirir. Bir projeyi çalıştırılabilir duruma getirmek için clean (temizle) ve install (kurulumla) tartışımları birlikte verilir. Örneğin, bir projenin kökünde aşağıdaki gibi
mvnw clean install
biçminde bir çağrı yapılırsa target (erek) klasörünün altında uygulamanın JAR dosyası oluşur. Çalışma zamanında gerekli olan özkaynaklar bu dosyanın içinde bulur.
JAR
Bir projenin kurulumlama (install) aşamasından sonra oluşan JAR dosyası aşağıdaki gibi konumda bulunur:
./target/myproject-0.0.1-SNAPSHOT.jar
Burada target (erek) klasörü, projenin kökünde, kurulumlama sonrasında oluşturulmuştur.
JAR dosyasının adı yapaylık (artifact) adının sonuna sürüm (version) adı verilerek oluşturulmaktadır. Söz konusu değerler pom.xml dosyasında project (izdüşü) adlı öğenin içinde yer alırlar:
Proje belli bir aşamaya gelince buradaki sürüm sayısının artırılması ve sondaki SNAPSHOT (Şipşak) adının silinmesi gerekir. Ancak, doğru olmasa da, hep aynı adla kullanmayı sürdürebilir.
Koşturma (Run)
Bir projeyi kurulumlama (install) aşamasından sonra çalıştırılmak için JDK ya da JRE ile birlikte kurulan java.exe programından yararlanılır. Bunar, JAR üzerinden çalıştırmak içi -jar diye bir tartışım verilir ve JAR dosyasının konumu bildirilir. Örnek:
java -jar ./target/myproject-0.0.1-SNAPSHOT.jar
Burada yapılan oluşturulan JAR dosyasının ölçün Java araçlarıyla yürütümlenmesinden oluşmaktadır.
Bir projeyi kurulumlamadan çalıştırmak da olanaklıdır. Bunun için spring-boot:run biçiminde bir buyruk kullanılır. Örnek:
mvnw spring-boot:run
Bu buyruk, projenin kökünde çalıştırılır ve sonuna herhangi bir ad verilmez. JAR dosyasından değil, derlenmiş .class dosyalarından çalıştırma yapılmış olur. Buradaki yürütümleme, geliştirme çevresindeki Run (Koştur) düğmeleriyle aynı işlevi görür. Daha sonra üretim ortamında yürütümleme gibi çalışmaz.
Buyruk Koşturma (Command Run)
Bir örün uygulaması (web application) yapıldıktan sonra belli bir giriş kapısı (port) üzerinden HTTP önkurallığıyla ulaşılabilir duruma gelir. Bir gözatıcı (browser) ya da HTTP üzerinden bir istemci (client) ile uygulamaya erişilip bir takım işlemler gerçekleştirilebilir.
Spring Boot uygulamaları içerisinde Tomcat gibi bir örün işgörücü (web server) ya da uygulama işgörücü (application server) gömülür. Bunu çalıştırma için buyruk çizgisi (command line) ya da uçbirim (terminal) çevre kullanılır. Bu yüzden konsol (console) uygulamaları gibi çalıştırma yapılmış olur. Konsol uygulamaları için geçerli olan çevreden tartışım (argument) alma gibi konular da yapılabilecekler arasında yer alır.
CommandLineRunner (Buyruk Çizgisi Koşucu)
Spring açısından bir çekirdek (bean) olan bir sınıf CommandLineRunner (Buyruk Çizgisi Koşucu) adlı arayüzü gerçekleştirip run() (koştur) yöntemini ezerse uygulama bir uçbirim çalıştırıldığında belli işlemlerin yapılması sağlanır. Sınıfın yapılandırma (configuration) ya da bileşen (component) gibi bir nitelik taşması gerekir. Örnek bir gerçekleştirim aşağıdaki gibi yapılabilir:
@Component
public class ApplicationRunner
implements CommandLineRunner {
@Override
public void run(String... args) {
System.out.println(Buyruk Koşucu
);
}
}
Uçbirimde aşağıdaki gibi buyruklar girilebilir:
mvnw install
java -jar ./target/command-0.0.1-SNAPSHOT.jar
Konsola aşağıdaki yazı basılır:
Buyruk Koşucu
Uygulama Sınıfı (Application Class)
Uygulamanın temel, main() (ana) içeren sınıfı da bir buyruk koşturucu olabilir.
@SpringBootApplication
public class Spring15CommandApplication
implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(
Spring15CommandApplication.class, args);
}
@Override
public void run(String... args) {
System.out.println(Uygulama Koşucu
);
}
}
Tartışımlar
Bir buyruk koşucu, uygulamaya uçbirimden aktarılan tartışım (argument) değerlerine erişebilir. Bu değerler çoktan run() (koştur) yöntemine aktarılmış durumdadır. Örnek bir kullanım aşağıdaki gibi ya
@Override
public void run(String... args) {
for (String argument : args) {
System.out.println(argument);
}
}
Örnek
Aşağıdaki örnekte CommandLineRunner (Buyruk Çizgisi Koşucu) arayüzünü gerçekleştiren bir bileşen yer almaktadır:
@Component
public class ApplicationRunner
implements CommandLineRunner {
@Override
public void run(String... args) {
System.out.println(Buyruk Koşucu
);
System.out.println(Tartışımlar:
);
for (String argument : args) {
System.out.println( *
+ argument);
}
}
}
Uygulamanın yapaylık özdeşliği (artifact id) değerinin command (buyruk) olduğunu varsayalım. Uçbirimde aşağıdaki gibi buyruklar girilebilir:
mvnw install
java -jar ./target/command-0.0.1-SNAPSHOT.jar
Konsola aşağıdaki yazı basılır:
Buyruk Koşucu
Uçbirimde tartışımlar (arguments) aşağıdaki gibi girilebilir:
java -jar
./target/command-0.0.1-SNAPSHOT.jar Bir İki Üç
Bu durumda konsola aşağıdaki yazılar basılır:
Buyruk Koşucu
Tartışımlar:
* Bir
* İki
* Üç
Çevre Değişkenler (Environment Variables)
Bir uygulama, çevre değişkenleri (environment variables) adı verilen, uygulamanın çalıştığı bilgisayar ya da işletim düzeni (operating system) üzerinde tanımlı değerlere erişebilir. Söz konusu değerler uygulamalara arasında veri alışverişi ya da bir uygulamaya bilgilendirme aktarımı için kullanılabilir.
Düzen Sınıfı (System Class)
Java düzlemindeki System sınıfında getProperty() (özellik edin) ya da getenv() (get environment - çevre edin) adlı yöntemler kullanılabilir. Bunlardan özellik (property) adını taşıyanlar daha çok uygulamaya yönelik değerlerken çevre (environment) adını taşıyanlar daha genel niteliktedir.
Bir çevre değişkeni aşağıdaki gibi edinilebilir:
String myValue=System.getenv(MY_NAME
);
Herhangi bir açar (key) verilmezse tüm değerleri içeren Map (Eşlem) eld edilir:
Map<String,String> values==System.getenv();
Çevre Sınıfı (Environment Class)
Spring çatımlamasında Environment (Çevre) adı verilen bir arayüzden çevre değişkenlerine erişilebilir. Bu arayüzü gerçekleştiren bir nesne @Autowired (Kendi Tellenmiş) açımlaması gibi bir seçenek kullanılarak içitme (injection) yoluyla edinilebilir. Örnek:
@Autowired
private Environment environment;
Buradaki nesneye bir ad (name) verilerek çevre değişkenlerin değerine erişilebilir. Örnek
String myValue=environment.getProperty(MY_NAME
);
Söz konusu sınıfta System (Düzen) sınıfından edinilenlere göre kimi gelişmiş özellikler bulunmaktadır. Örneğin System sınıfındakiler yalnızca sicim (string) türünü tanırken, Environment (Çevre) sınıfındakiler erek türü (target type) verilerek belli bir türde edinilebililer. Örnek:
Long myValue=environment
.getProperty(MY_NAME
,Long.class);
Environment (Çevre) adlı arayüzü kullanmanın bir yararı da uygulamanın çalıştığı; üretim, sınama, yerel gibi yanay (profile) bilgilendirmesiyle ilgili özellikler içermesidir.
Yapılandırma Özellikleri (Configuration Properties)
Bir uygulamaya dışarıdan aktarılan değeler application.properties (uygulama özellikleri) ya da application.yml (uygulama YML) gibi takmalar (settings) dosyalarında gelir. Öte yandan kimi değerler hem takmalardan hem de çevreden gelebilir. Kimi durumlarda da takmalardaki değerin çevreden gelmesi sağlanır ve uygulama takmalardan gelen değeri kullanır. Bir takmalar dosyasında çevre değişkeni ${} işleciyle kullanılır. Örneğin YAML dosyasında aşağıdaki gibi
my-prefix:
my-property: ${MY_VARIABLE}
biçiminde bir bildirim yapılabilir. Çevre değişkenini adıyla özellik adının aynı olması gerekmez. Ancak genelde aynı tutulur ki akılda kalsın. Buradaki gibi bildirilen değer Java düzgüsünde olağan bir özellik olarak kullanılabilir. Örneğin aşağıdaki gibi @ConfigurationProperties (Yapılandırma Özellikleri) açımlamasıyla bildirilmiş bir sınıf aşağıdaki gibi yazılmış olsun:
@ConfigurationProperties(prefix = my-prefix
)
@Configuration
public class EnvironmentProperties {
}
Burada dosyadaki özelliği herhangi bir sınıfından aşağıdaki gibi bir bildirimle erişilir:
private String myProperty;
Spring çatımlamasında uylaşım (convention) gereği - (tire - dash) ile, my-property biçiminde bildirilen bir özellik, myProperty gibi deve durumu (camel case) ile kullanılır.
Uyarlı Değişken (Custom Variable)
Gerektiğinde geliştiriciler ya da uygulamayı kuranlar uyarlı değişken (custom variable) tanımlayabilirler. Bu biçimde uygulamayla dışında bulunan çevre arasında bilgilendirme üleşimi gerçekleşir. Örneğin uçbirimde Windows için aşağıdaki gibi
set CUSTOM_VALUE=Uyarlı Değerim
biçiminde, Linux için de aşağıdaki gibi
export $CUSTOM_VALUE=Uyarlı Değerim
biçiminde bir değer bildirilmiş olsun. Bunu bir çevre değişkeni olarak kullanmak olanaklıdır. Örneğin Environment (Çevre) arayüzünden aşağıdaki gibi kullanım yapılabilir:
System.out.println(
environment.getProperty(CUSTOM_VALUE
));
Örnek
Aşağıda örnek bir application.yml dosyası yer almaktadır:
surroundings:
java-home: ${JAVA_HOME}
custom-value: ${CUSTOM_VALUE}
Bunları kullanan bir yapılandırma özellikleri (configuration properties) sınıfı aşağıdaki gibi yazılabilir:
@ConfigurationProperties(prefix = surroundings
)
@Configuration
public class EnvironmentProperties {
private String javaHome;
private String customValue;
// Getters & Setters
}
Gerek yukarıdaki özellikler sınıfından, gerekse doğrudan çevreden olacak biçimde değerleri alan bir koşucu (runner) sınıfı aşağıdaki gibi yazılabilir:
@Component
public class EnvironmentRunner
implements CommandLineRunner {
@Autowired
private Environment environment;
@Autowired
private EnvironmentProperties
environmentProperties;
@Override
public void run(String... args) {
System.out.println(Çevre Koşucu
);
System.out.println(\tDüzenden Java Evi:
+System.getenv(JAVA_HOME
));
System.out.println(\tDüzenden Uyarlı Değer:
+System.getenv(CUSTOM_VALUE
));
System.out.println(\tÇevreden Java Evi:
+environment.getProperty(JAVA_HOME
));
System.out.println(\tÇevreden Uyarlı Değer:
+environment.getProperty(CUSTOM_VALUE
));
System.out.println(\tÖzellikten Java Evi:
+environmentProperties.getJavaHome());
System.out.println(\tÖzellikten Uyarlı Değer:
+environmentProperties.getCustomValue());
}
}
Uçbirimde aşağıdaki satırlardan ilkini Windows, ikincisini Linux için girebiliriz
set CUSTOM_VALUE=Uyarlı Değerim
export $CUSTOM_VALUE=Uyarlı Değerim
Uygulama buyruk çizgisinden çalıştırılınca konsola aşağıdaki gibi çalıştırılabilir:
mvnw install
java -jar ./target/command-0.0.1-SNAPSHOT.jar
Windows düzeninde konsola aşağıdaki gibi yazılar basılır:
Çevre Koşucu
Düzenden Java Evi: C:\Program Files\Java\jdk-17.0.5
Düzenden Uyarlı Değer: Uyarlı Değerim
Çevreden Java Evi: C:\Program Files\Java\jdk-17.0.5
Çevreden Uyarlı Değer: Uyarlı Değerim
Özellikten Java Evi: C:\Program Files\Java\jdk-17.0.5
Özellikten Uyarlı Değer: Uyarlı Değerim
Değer (Value)
Spring Boot çatımlamasında @Value (Değer) açımlamasıyla uygulama takmaları (application settings) dosyalarındaki özellikleri doğrudan bir çekirdek (bean) nesnesinin bir tarla (field) öğesine alabilirler. Böylece özellikleri yüklemek gibi işlemlerle uğraşılmamış olur.
@Value Annotation (Değer Açımlaması)
Bir çekirdek (bean) sınıfının, örneğin bileşen (component), denetleyici (controller) ya da işgörü (service) türü nesnelerin bir tarla (field) öğesine @Value (Değer) açımlamasıyla alınabilir. Buna öznitelik olarak takmalar dosyasındaki özelliğin dolu adı (full name) bir dışavurum (expression) olarak verilir. Örneğin YAML dosyasında
my-prefix:
my-property : Özelliğim
ya da properties (özellikler) uzantlı dosyalarda
my-prefix.my-property : Özelliğim
biçiminde verilen değer bir tarla olarak aşağıdaki gibi alınabilir:
@Value(${my-prefix.my-property
)
private String myField;
Örnek
Uygulamanın application.yml dosyasında aşağıdaki gibi iki özellik bildirilmiş olsun:
parameters:
parameter-one: Değiştirgen Bir
parameter-two: Değiştirgen İki
Bu özellikleri değer olarak bir koşucu (runner) sınıfı aşağıdaki gibi yazılabilir:
@Component
public class ValuesRunner
implements CommandLineRunner {
@Value(${parameters.parameter-one}
)
private String parameterOne;
@Value(${parameters.parameter-two}
)
private String parameterTwo;
@Override
public void run(String... args) {
System.out.println(Değerler Koşucu
);
System.out.println(
\tDeğer Bir:
+ parameterOne);
System.out.println(
\tDeğer İki:
+ parameterTwo);
}
}
Uygulama aşağıdaki gibi çalıştırılabilir:
mvnw install
java -jar ./target/command-0.0.1-SNAPSHOT.jar
Konsol çıktısı aşağıdaki gibi olur:
Değerler Koşucu
Değer Bir: Değiştirgen Bir
Değer İki: Değiştirgen İki
Tartışımlar (Arguments)
Bir uygulamada özellikler (properties) dosyalarından gelen değerler yerine buyruk çizgisi (command line) ya da uçbirim (terminal) çevresinde uygulamaya tartışım (argument) olarak değer verilebilir. Dahası, dosyalardaki özelliklerinde değerler, tartışım değerleriyle ezilerek uygulamanın başka değerlerle çalışması sağlanabilir.
Uygulama Tartışımı (Application Argument)
Bir uygulamaya -- (iki tire - two dashes) ile özellik değerleri verilebilir. Örneğin uçbirimde uygulamayı aşağıdaki gibi çağıralım:
java -jar ./target/command-0.0.1-SNAPSHOT.jar
--parameters.parameter-one=Ayrı Değiştirgen
Yukarıdaki dışavurumların tek satırda girilmesi gerekir. Tartışımın .jar biçimindeki uygulama dosyasından sonra verilmesi gerekir.
Bu durumda dışarıdan alınan iki değiştirgenden birisinin değeri burada verildiği gibi olur. Bu özelliklerle ilgili ekran çıktısı aşağıdaki gibi olur:
Değerler Koşucu
Değer Bir: Ayrı Değiştirgen
Değer İki: Değiştirgen İki
Düzen Özelliği (System Property)
Bir özelliği, JVM çevresindeki düzen özelliği (system property) olarak kullanmak olanaklıdır. Bu tür bir özellik System (Düzen) sınıfındaki getProperties() (özellikler edin) yöntemiyle erişilebilir olur. Spring çatımlaması @Value (Değer) gibi açımlamalarda düzen özelliklerinden de değer alır.
java -jar
-Dparameters.parameter-one=Düzenden
./target/command-0.0.1-SNAPSHOT.jar
Bu durumda çıktı aşağıdaki gibi olur:
Değerler Koşucu
Değer Bir: Düzenden
Değer İki: Değiştirgen İki
Aynı ad (name) ile hem düzen özelliği (system property) hem de uygulama tartışımı (application argument) verilirse öncelik tartışımdadır. Örneğin aşağıdaki gibi bir koşturma yapalım:
java -jar
-Dparameters.parameter-one=Düzenden
./target/command-0.0.1-SNAPSHOT.jar
--parameters.parameter-one=Tartışımdan
Konsola aşağıdaki gibi çıktı basılır:
Değerler Koşucu
Değer Bir: Tartışımdan
Değer İki: Değiştirgen İki
Yapılandırma Konumu (Configuration Location)
Bir uygulamanın temede kullanılan takmalar (settings) değerleri application.properties veya application.yml dosyalarından okunur. Söz konusu dosyalar da projenin kök (root) klasöründe bulunur. Ancak istenirse, sınama amaçlı olarak ya da belli bir durum ya da çevre için uygulamanın ayrı biçimde çalıştırmak için ana özellik dosyalarının ad (name) değerleri ya da konumları ayrı olarak verilebilir. Kökenlilerin silinmesi gerekmez, bu değerler onları ezer. Bunun için -D ile gösterilen JVM tartışımı (JVM argument) değerleri kullanılabilir. Adı spring.config.location (Spring Yapılandırma Konumu) adlı özelliğe başka bir dosya verilebilir. Örneğin aşağıdaki gibi bir konumda bir özellikler dosyası olsun:
D:\MyConf\application2.properties
Bunun içeriği de aşağıdaki gibi olsun:
parameters:
parameter-one: Değiştirgen I.
parameter-two: Değiştirgen II.
Burada konum da dosya adı da