java etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
java etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Haziran 2020 Salı

JHipster-3 (Controller, Service, Language ve Entity oluşturma)

Merhaba, bu yazımda sizlere JHipster projelerinize servis, controller, language ve entity eklemenin nasıl yapılacağını paylaşacağım.

JHipster ile proje oluşturduktan sonra terminali açıp projenin kök(root) dizinine gidin.
 $ cd ./demoJHipster

Foo adında bir controller oluşturmak için aşağıdaki komutu çalıştırın(https://www.jhipster.tech/creating-a-spring-controller/).
 $ jhipster spring-controller Foo

Komut satırındaki wizard ile sorulan soruları  aşağıdaki şekilde yanıtlayın.
? Do you want to add an action to your controller? Yes
? What is the name of your action? getInfo
? What is the HTTP method of your action? GET
? Do you want to add an action to your controller? No

Bu işlemler sonunda hem FooResource adında bir controller hemde FooResourceIT adında bu controller'ın class'ı oluşturulacaktır. Ayrıca controller'a getInfo methodu eklenecektir.

Bar adında bir spring service oluşturmak için aşağıdaki komutu terminalden çalıştırın(https://www.jhipster.tech/creating-a-spring-service/)
 $ jhipster spring-service Bar

Burada Interface eklemeden devam edilmiştir. Siz interface eklemek isterseniz yanıtı "yes" olarak işaretleyin.
 ? (1/1) Do you want to use an interface for your service? No

Bu işlemler sonrunda BarService adında bir spring service oluşturulacaktır.

JHipster projenize dil desteği eklemek için aşağıdaki komutu terminalden çalıştırın(https://www.jhipster.tech/installing-new-languages/)
 $ jhipster languages

Eklemek istediğiniz dil seçimlerini yaparak projenize hem UI(frontend) hemde backend tarafına dil desteği ve dosyalarını eklemiş olacaksınız.

Projenize entity eklemek için aşağıdaki komutu çalıştırın (https://www.jhipster.tech/creating-an-entity/)
 $ jhipster entity student

Yine wizard ile gelen soruları aşağıdaki şekilde yanıtlayın.
? Do you want to add a field to your entity? Yes
? What is the name of your field? name
? What is the type of your field? String
? Do you want to add validation rules to your field? Yes
? Which validation rules do you want to add? Required, Minimum length, Maximum length
? What is the minimum length of your field? 2
? What is the maximum length of your field? 20

? Do you want to add a field to your entity? Yes
? What is the name of your field? age
? What is the type of your field? Integer
? Do you want to add validation rules to your field? No

? Do you want to add a field to your entity? No
? Do you want to add a relationship to another entity? No

================= Student =================
Fields
name (String) required minlength='2' maxlength='20'
age (Integer)

? Do you want to use separate service class for your business logic? No, the REST controller should use the repository directly
? Is this entity read-only? No
? Do you want pagination on your entity? No

Aşağıdaki mesajşarı gördüğünüzde işlem başarılı demektir

Everything is configured, generating the entity...
Entity Student generated successfully.

Bu işlemler sonunda jhipster aşağıdaki adımları uygulayacaktır.
- name ve age alanlarına sahip Student adında bir entity oluşturulur.
- liquebase ile Student tablosu create edilir.
- Bu entity'nin ihtiyaç duyacağı controller,repository  ve servis katmanları eklenir.
- Yine bu entity nin kullanılacağı CRUD ekranlarını  Forntend tarafında oluşturur.
- Sayfalama var ise pagingModeller oluşturulur
- Entity leri frontend tarafına  taşımak için DTO lar oluşturulur.
- CRUD ekranları dummy datalarla birlikte gelecektir. Bu veriler üzerinden değişiklikler yaparak ekranları inceleyebilirsiniz.

oluşturduğunuz entity'e ait ekranları görüntülemek ve incelemek için browser üzerinden aşağıdaki adresi ziyaret edebilirsiniz.

WEB : http://localhost:8080/student

JHipster-2 (Kurulum ve Proje oluşturma)

Merhaba, bu yazımda sizlere JHipster kurulumunu ve JHipster ile bir spring projesinin nasıl oluşturulacağını paylaşacağım.
ilk olarak JHipster'ın çalışabilmesi için kendi işletim siteminize uygun olan  Java'yı bilgisayarnıza indirip kurun (https://www.oracle.com/java/technologies/javase-downloads.html).
JHipster kurulumdan sonra projenizi git'te tutacağınızı varsayarak git tanımlamasını yaparak projedeki tüm dosyaları intial commit ile local repoda commitler. Bunun için git'i de bilgisayarnınıza kurmanız gerekmektedir(https://git-scm.com/).
Diğer bir zorunlulta nodeJs tir. NodeJS'i de bilgisayarınıza kurun (https://nodejs.org/).

Java, NodeJS ve Git kurulumundan sonra bilgisayarnızdan terminal'i açarak aşağıdaki komutu çalıştırarak JHipster kurulumunu başlatırn.

$ npm install -g generator-jhipster 

 

işlem tamamalandıktan sonra yeni jhipster projesi için bilgisarınızda bir dizin oluşrurun ve bu dizine gidin.

$ mkdir jhipster-demo && cd jhipster-demo 

 

jhipster komutuyla proje oluşturmaya başlayın
$ jhipster 

 

Ekrandaki sorulara ihtiyacınız doğrultusunda cevaplar verin. Tüm adımlar tamamlandıktan sonra projeyi bilgisayarınızda çalıştırip inceleyebilirsiniz.

NOT: Frontend tarafının da create edilmesi için "Which type of application would you like to create?" sorusunu "Monolithic application" olarak yanıtlayın. Bu sayede oluşturacağınız projenin bir ekranı olur ve bu ekranlar üzerinde işlemler yapabilirsiniz.

Backend(springboot) tarafını ayağa kaldırmak için aşağıdaki maven komutunu çalıştırın

$ ./mvnw 


Frontend tarafını ayağa kaldırmak için npm start komutunu kullanın

 $ npm start

 

uygulama ayağa kalktıktan sonra browser üzerinden aşağıdaki url leri inceleyebilirsiniz.

root: http://localhost:9000/
kullanıcı yönetimi : http://localhost:9000/admin/user-management
metrikler : http://localhost:9000/admin/metrics
kofigürasyonlar : http://localhost:9000/admin/configuration
swagger API : http://localhost:9000/admin/docs
Database : http://localhost:9000/h2-console

JHipster-1 (JHipster nedir ? Ne işe yarar ?)

Merhaba,
bu yazımda JHipster(Java Hipster) hakkında bir kaç bilgi aktaracağım. Esasen şirket içi eğitim için aldığım kısa notları derleyerek  buradan paylaşacağım.

JHipster bir java geliştirme platformudur. Bir çok geliştirici(developer) aynı şeyleri tekrar tekrar yazmayım diye kendine bir şablon proje(boilerplate) oluşturmayı denemiştir. Github üzerinde beğenilen(star) ve indirme  oranı yüksek olan   birçok dil ve library ile temelleri oluşturulmuş çokça tepmplate proje de bulunmaktadır.  Bu çalışmaların yapılmasında ve bu repoların oluşturulmasındaki maksat ayrnı işleri tekrarlı bir şekilde yapmaktan kaçmaktır. Özetle amaç zaman kaybının önüne geçmektir.

JHipster community de buradaki ihtiyaca çözüm üretmek adına Java ile geliştirme yapan developer'ların sıfırdan proje yaparken ilk adımları hızlı olması adına belli teknolojileri ve kofigurasyonları bir araya getirerek bir şablon proje  hazırlamışlardır. Buradaki paketin içinden ihtiyacınız olanları seçerek kendinize bir geliştirme ortamı hazırlayabilmektesiniz.

Nasıl bir şablon projeden bahsediyorum  örnek olarak açıklamaya çalışayım; mesela oluşturacağınız bir çok yeni projede bir login ekranı kullanmak isteyebilirsiniz. Yada projede  database kullanacaksanız bir migration(değiişikliklerin uygulanması) yapısına ihtiyacınız olacaktır. Yine bir loglama alt yapısına ihtiyac duymanız kuvvetle muhtemeldir. Dolayısıyla bu ve benzeri kofigürasyonlar için her projede yeniden efor sarfetmemek adına kendiniz bir boilerplate proje oluşturabilirsiniz yada bu işi bir standart üzerine inşa etmiş JHipster tan faydalanabilirsiniz. JHipster tam olarak üstte bahsettğim teknolojileri bir araya getirerek size ilk ayarları yapılmış bir proje sunmaktadır.

JHipster üstte paylaştıklarıma ek olarak şağıdaki tanım ve teknolojileri de destekler.

Core
- Java 
- SpringBoot
- SpringSecurity
- SpringMVCRest
- Jackson
- internationalization
- profile(dev,prod)

Frontend
- React With Redux (Redux ile birlikte)
- Angular
- Vue
- Sass
- css
- bootstrap

Database
- mongoDB
- Couchbase 
- Relational DB(H2,MySQL,..)

Cache
- Ehcache
- Hazelcast
- Caffeine

Deployment
- heroku
- openshift
- aws

Build
- maven
- gradle
- grunt
- yeoman
- webpack
- git

JHipster bu kadar teknolojinin hepsini kullanabilir. Ancak CLI üzerinden proje olulturmak istediğinizde veya web arayüzü üzerinden ilerlerken ihtiyacınıza göre üstteki listeden eleme yada ekleme yapabilirsiniz. ÖRN: Microservis için bir frontend framework'e ihtiyacınız olmayacağı gibi monolitic uygulamada da sadece angular'ı veya react'ı seçerek te ilerleyebilmektesiniz.

JHipster ile çalışmaya başlamak için bilgisayarnızda aşağıdaki programların kurulu olması gerekmektedir.
- Java
- NodeJs
- JHipster (npm install -g generator-jhipster)

31 Ekim 2016 Pazartesi

Manuel Olarak Gradle Kurulumu (MAC/Linux)

Merhaba,
bu yazımda sizlere gradle'in manuel olarak nasıl kurulacağından bahsedeceğim.
 Öncelikle gradle'i kullanmak için  Java'nın 7 den sonraki sürümleri sistemde kurulu olması gerektiğini hatırlatarak  adım adım bu işlemin nasıl gerçekleştirileceğini paylaşıyorum;

1-) Gradle'ı indirin
https://gradle.org/gradle-download/

2-) Dosyayı arşivden çıkarıp kurmak istediğiniz dizine taşıyın.
örn: /Users/levent.yildiz/DEVELOPMENT/TOOLS/GRADLE

3-) bash_profile dosyasını açın
# vi /Users/levent.yildiz/.bash_profile

4-) GRADLE_HOME değişkenini aşağıdaki gibi tanımlayın
#export GRADLE_HOME=/Users/levent.yildiz/DEVELOPMENT/TOOLS/GRADLE

5-)Yine bash_profile dosyası içinde  PATH değişkenine GRADLE_HOME'u alattaki şekilde ekleyin ekleyin
#export PATH=$PATH:$GRADLE_HOME/bin

6-) sistemin bash_profile daki değişiklikleri algılaması için yeniden yükleyin
#source ~/.bash_profile

7-) PATH değişkenini ekrana yazdırarak içinde gradle'in da olduğundan emin olun
#echo $PATH

6-) Son olarak Sürüm kontrolü yaparak yükleme işlemini doğrulayın
#gradle –version


17 Mart 2016 Perşembe

Java-logback entegrasyonu

Merhaba bu yazımda sizlere Java-logback entegrasyonundan bahsedeceğim.
Logback  Ceki Gülcü tarafından tasarlanan ve log4j mimarisinin devamı olan bir loglama sistemidir.  Logback  şuan için  popüler ve kullanımı kolaydır.

Logback’i projelerimizde kullanabilmemiz için slf4j-api, logback-core ve logback-classic jar dosyalarını Java projemize dahil etmemiz gerekiyor.  Ben bu işlemi yine maven aracılığıyla yaptım. dependency tanımları aşağıdadır:


Slf4j-api
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
</dependency>


logback-classic
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.3</version>
</dependency>


logback-core
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.3</version>
</dependency>


üstteki dependency leri  projemizdeki pom.xml dosyasına dahil  ettikten sonra logback’i konfigüre etmeye başlayabiliriz. Logback,  classpath te varsayılan durumda  logback.xml yada logback-test.xml dosyası arayacaktır.  Bu dosyaları oluşturarak içerisinde logları nereye yazacağımızı ve hangi seviyede loglama yapacağımızı belirtiyoruz.



Yukarıdkai işlemleri yaptıktan sonra geriye logback’i kullanmak kalıyor.
Loglama yapmak istediğimiz class’a giderk
private static final Logger logger = LoggerFactory.getLogger(Run.class);

şeklinde tanımlama yapıyoruz. getLogger methoduna hangi class'ı loglamak istediğimizi yazıyoruz.  Bu tanımlamadan sonra  logger.[log-level]  şeklinde istediğimiz logları yazdırabiliriz.

Örnek:
logger.info("info");

logger.debug("debug");

logger.error("error");

logger.warn("warning");

logger.trace("trace");


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





Javada Bilinmeyen Tiplerdeki Parametrelerle Çalışmak- Varargs(Variable Arguments)

Merhaba,
Bu yazımda sizlere javada varargs kullanımından bahsedeceğim.
Diyelim ki  bir method tanımlamak istiyorsunuz ve bu method bazen String bazen Integer parametre ile çağrılacak. Hatta bazı durumlarda hem String hem Integer parametreyi aynı anda göndermek isteyeceksiniz.  Yani metodun hangi tipteki parametre ile çağrılacağını bilmiyorsunuz. Eğer sadece bir bilinmeyen tipte sadece  bir  parametre yollayacak olsaydık bu  durumda yapmamız gereken işlem metodu Object tipinde bir parametre ile  çağırmak olacaktı.  Ancak birden fazla ve farklı tiplerdeki parametre(String,Integer,boolean.. vs aynı anda) ile aynı anda göndermek istediğimizde bu tanımlama işimize yaramayacaktı.   İşte tam elimiz kolumuz bağlandı mı diye düşünürken  varargs kullanımı  yardımımıza konuşuyor.   Object... (üç nokta array olduğunu belirtiyor) tipinde bir parametre alan foo adında bir method tanımlıyoruz.  Ve bu metodu istediğimiz tiple çağırıp kullanabiliyoruz. Aşağıda örnek bir kodlama yaptım incelemenizi tavsiye ederim. Bir  çok projede bu kullanım işinize yarayacaktır.

Kod örneği:
package com.lvt;

/**
 * Created by leventyildiz on 17/03/16.
 */

public class Run {

    public static void main(String[] args) {

        foo("Levent", 123, true);
    }

    public static void foo(Object... objects) {

        for (Object s : objects) {

            System.out.println(s.toString());

        }
    }
}

çıktı:
Levent
123
true


javada String class’ı içerisinde kullanımı.
public static String format(Locale l, String format, Object... args) {
   
return new Formatter(l).format(format, args).toString();
}


Formatter class’ında ki kullanımından bir örnek:
public Formatter format(String format, Object ... args) {

    return format(l, format, args);

}


String classıyla bir örnek yapalım:
String str = String.format("integer values: %d - %s", 5,"aliveli");

System.out.println(str);

Burada String class’ı içindeki format methoduna hem String hem Integer parametreyi aynı anda gönderdik.

Çıktı:
integer values: 5 - aliveli