classpath

classpath (büyük resim için tıklayın)

Java uygulamasını çalıştırırken, sınıfların (class), kaynak dosyalarının (resource) ve kütüphanelerin (jar) nerede olduğunu JVM’e (Java Virtual Machine) söyleyen bir yol listesidir.

Başka bir deyişle:
JVM’in arayıp bulacağı yerlerin haritasıdır.

classpath içinde neler olabilir?

.class dosyaları (derlenmiş Java sınıfları)

.jar dosyaları (harici kütüphaneler)

application.properties, log4j.xml gibi config dosyaları

static, templates, META-INF gibi kaynaklar

Spring Boot classpath’i nasıl kullanır?

Spring Boot, classpath'i tarayarak otomatik işler yapar:

Spring ÖzelliğiClasspath Tabanlı Davranış
@ComponentScanClasspath’teki bean sınıflarını tarar
@EnableAutoConfigurationclasspath’teki jar’lara göre config yükler (örneğin: spring-boot-starter-web)
application.propertiesclasspath:/application.properties dosyasını arar
Thymeleaf, Freemarker gibi şablon motorlarıclasspath:/templates/ içinde HTML dosyaları arar
Statik dosyalar (CSS, JS, img)classpath:/static/, classpath:/public/ gibi yerlerde arar

classpath’e nasıl dosya eklenir?

1. Maven / Gradle kullanıyorsan

<!-- Maven örneği -->

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-web</artifactId>

</dependency>

2. src/main/resources ➝ otomatik classpath'tedir

src/

└── main/

    ├── java/              --> Kodlar

    └── resources/         --> Classpath dosyaları (otomatik)

        ├── application.yml

        ├── logback.xml

        └── static/

Yani src/main/resources/application.yml dosyasını şöyle yüklersin:

@Value("${my.property}")

private String myProperty;

Sonuç olarak:

classpath, Java'da JVM’in, senin kodlarını ve kaynaklarını bulduğu yollar kümesidir.
Spring Boot, bu yolu çok aktif ve akıllıca kullanır. Bu sayede birçok iş "otomatik" görünür.

*Gönderi ve görsel chatgpt ile oluşturulmuştur.

omurs

Ö S, 30 Ağustos 2018 Perşembe 15:30 tarihinde kayıt oldu

Etiketler

Beğeni


Yıllara Göre Gönderiler








LombokLoglamaB2C (Business-to-Consumer)B2B (Business-to-Business)İçerik Yönetim Sistemi - CMS (Content Management System)Pagination (Sayfalama)Sanal Özel Ağ - VPN (Virtual Private Network)Cronjob (Zamanlanmış Görevler)Printer-YazıcıJava'daki İlkel Veri Tipleri ve Alabilecekleri DeğerlerBit & Byte ve Hafıza Boyutlarındaki Ölçüm BirimleriSanallaştırma (Virtualization)DNS KayıtlarıE-Fatura ve E-ArşivYazılım Lisans TürleriAudit (Denetim) Açık Kaynak (Open Source)Monitoring (İzleme)Sitemap & Robots.txtKilometretaşı (Milestone)BSMV (Banka ve Sigorta Muameleleri Vergisi)KKDF (Kaynak Kullanımı Destekleme Fonu)Siber Pazartesi (Cyber Monday)Black Friday (Kara Cuma)Hotlink.htaccessCryptoLockerMalwareTrojanWormDependency (Yazılım Geliştirme Sürecinde Paket Bağımlılığı)Configuration (Yazılım Geliştirme Sürecinde Yapılandırma)Yahoo ve Yahoo'nun Başarısızlık NedenleriArchiving (Yazılım Geliştirme Sürecinde Arşivleme)Görsel Dosya Türleri (Image Types)ReleaseVersioning & Tagging (Versiyonlama ve Etiketleme)BuildJob (Yazılım Geliştirme Sürecinde Görevler)SonarQubeCDATA (Character Data)Alan Adı Uzantıları (Domain Name Extensions)Regresyon Kara Kutu (Black-Box) TestBeyaz Kutu (White-box) TestGri Kutu (Grey-box) TestYazılım Geliştirme Sürecindeki Temel Test TürleriKod gözden geçirme (Code Review)Birim Testi (Unit Testing)Yazılım Sürecinde EntegrasyonJAR & WAREager & Lazy Fetch TypeMaskelemeKPI (Key Performance Indicator)KII (Key Impact Indicator)Projenin JAR Dosyasını Oluştur - JAR PathSunucu için Linux dağıtım SeçimiKonyteynerler (container technologies)Runtime & Compile Time (Çalışma ve Derleme Zamanı)@Anotasyonlar (@Annotations)