24 Ağustos 2014 Pazar

Spring ile kaynak(resources) dosyalardan değer dosyalarını okuma

Merhaba, daha önceki bir yazımda jsp ile resource dosyalarının nasıl okunacağını paylaşmıştım. Ancak o yazının içindede bahsettiğim üzere bu yöntem önerilen yöntem değildi. Sadece yeni başlayanlara yol göstermek için adım adım bu işin mantığına nasıl gideceğini göremeleri ve kendilerini geliştirme aşamalarında bilgi  halkalarında eksiklik olmaması adına böyle bir paylaşımda bulunmuştum.

Parantez içinde belirtmem gereken birşey var:  Ben hep uzun soluklu yazıları okurken sıkılırdım. Dolayısıyla ne olursa olsun kısa yazacağım düşüncesi hep aklımın bir köşesinde durur ve  bazen bocalama hatta iyice uzatmama neden oluyor gibi. Anlatmak istediğimi tam olarak yansıtamamış olabilirim düşüncesiyle yazıyı  uzattıkça uzatıyorum sanki :) neyse  ilerleyen zamanlarda yazdıkça düzelir ve gelişir herhalde  :)

Hemen konuya dönerek size kulağı kısa yoldan göstermeyi anlatacağım.
kullanılan teknolojiler:
- intellij idea
- Java
- Spring framework

Öncelikli olarak intellij ile spring MVC tabanlı web projemizi oluşturuyoruz.
projenin son hali aşağıdaki hiyerarşik  yapıda olacaktır


src/main dizininin altında resources adında bir dizin oluşturuyoruz(spring varsayılan olarak buraya bakar). yine değerleri okumak için bu dizinin altında conf.properties adında bir dosya oluşturuyoruz.

src\main\conf.properties
 #mysql
db.url = localhost:3306
db.user = root
db.pass = 123456

  
Burada kalıcı ve anlaşılır olması için anlamlı dosyalar ve değerler yazmaya çalıştım. Yani yapacağımız işlemlerle  MySQL connection bilgilerini tutan ayar dosyasındaki değerleri okuyormuşsunuz gibi düşünün.

mvc-dispatcher-servlet.xml dosyasına aşağıdaki parametreyi ekliyoruz.  bunun anlamı spring ayağa kalkarken resources dizinindeki conf.properties dosyasının değerini okuyup akılda tutar.

mvc-dispatcher-servlet.xml
     <context:property-placeholder location="classpath:conf.properties"/>
  

Bu işlemlerden sonra com.company.controller paketinin altında DefaultController adında bir controller oluşturalım
com.company.controller / DefaultController
 package com.company.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/")
public class DefaultController {

    @Value("${db.url}")
    public String dbUrl;


    @Value("${db.user}")
    public String dbUser;


    @Value("${db.pass}")
    public String dbPass;


    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
        model.addAttribute("message", "Hello world!");

        model.addAttribute("url", this.dbUrl); // url bilgisini ekle
        model.addAttribute("user", this.dbUser); // user bilgisini ekle
        model.addAttribute("pass", this.dbPass); // pass bilgisini ekle

        return "index";
    }
}


    @Value("${db.url}")  tanımlamasıyla String tipinde dbUrl değişkeninin değerini  kaynak dosyadaki  db.url ile eşleştirdik.

    @Value("${db.user}") yine aynı mantıkla kaynaktaki db.user değerini aldık.

    @Value("${db.pass}") kaynaktaki db.pass değerini aldık.


son olarak ta okuduğumuz değerleri ekrana basmak için index.jsp sayfasını aşağıdaki şekilde düzenlenir.

src\main\webapp\WEB-INF\pages\index.jsp
 <html>
<body>
<h5>${message}</h5>

<hr/>
<b> URL : </b> ${url}

<hr/>
<b> Username : </b> ${user}

<hr/>
<b> Password : </b> ${pass}

</body>
</html>



Projeyi derleyip çalıştırınca(http://localhost:8080/) ekran çıktısı aşağıdaki gibi olacaktır:


kaynak dosyalar(github) : indirmek için tıklayın

Hiç yorum yok:

Yorum Gönder