Spring – Ders 8 Spring Expression Language (SpEL) – 2
Merhaba Arkadaslar,
Spring derslerimize , bir onceki derste kaldigimiz yerden SpEL (Spring Expression Language) konusundan devam ediyoruz. SpEL in bir cok ise yaradigindan bahsetmistik bu dersimizde aritmetik, iliskisel (relational , mantiksal(logical ) gibi islemlerin SpEL ile kullanimini inceleyecegiz.
Operations.java
package erguder.levent_08.spel.operations; public class Operations { private double PI; private double randomNumber; private double circle; private int total; private String str3; private boolean equal; private boolean less; private boolean andOperation; //getter setter public void write() { System.out.println(randomNumber + " "+ PI + " " +circle + " " + total +" "+str3 + " "+equal + " "+ less + " "+andOperation + " "+ternaryOperation); } }
Operations ve Values sinifimizda bol miktarda degisken mevcut hepsini tek tek inceleyecegiz insallah 🙂
Values.java
package erguder.levent_08.spel.operations; public class Values { private double radius; private int number1; private int number2; private String str1; private String str2; //getter setter }
xml dosyamiz uzerinden adim adim ilerleyelim…
tutorial_08.xml
<bean id="operations"> <property name="PI" value="#{T(java.lang.Math).PI}" /> <property name="randomNumber" value="#{T(java.lang.Math).random()}" /> <property name="circle" value="#{2*T(java.lang.Math).PI*values.radius}" /> <property name="total" value="#{values.number1+values.number2}" /> <property name="str3" value="#{values.str1+values.str2}" /> <property name="equal" value="#{values.number1 == 10}" /> <property name="less" value="#{values.number2 le 20}" /> <property name="andOperation" value="#{values.number1 le 10 and values.number2 le 20}" /> <property name="ternaryOperation" value="#{values.number1 == 15?10:25 }" /z </bean> <bean id="values"> <property name="radius" value="#{2.5}" /> <property name="number1" value="#{10}" /> <property name="number2" value="#{20}" /> <property name="str1" value="#{'injava'}" /> <property name="str2" value="#{'wetrust'}" /> </bean>
- SpEL bize Java kutuphanelerini kullanmamiza olanak saglar, java.lang.Math sinifinda bulunan PI degiskenine ulasabiliyoruz. Burada #{} isaretine ek olarak T harfini de kullaniyoruz. PI degiskenimize java.lang.Math sinifinda bulunan PI degiskenini atadik.
- randomNumber degiskenimize java.lang.Math sinifi altinda bulunan random() metodu araciligiyla deger atamasinda bulunabiliriz.
- circle degiskenimize deger atarken hem * isleminden , hem java.lang.Math.PI degiskeninden hem de diger bean e ulasarak atanan degerden yararlandik.
- total degiskenimize deger atarken values beanimizde bulunan number1 ve number 2 degiskenimizin toplamini atadik.
SpEL ile + ,- ,* , / ,%, ^ gibi aritmetik operatorler kullanabiliriz. - String degiskenler de + operatoru ile birlestirilebilir ve atanabilir.
- SpEL relational (iliskisel) operatorleri de destekler. number1 10 oldugu icin burada equal degiskenimize true degeri atanacaktir.
Java da bulunan <= >= gibi operatorleri kullanmamiz burada mumkun degil cunku, bu xml dosyasi ve < > gibi karekterlerin ozel anlamlari var. Bunun yerine== eq
< lt
<= le
> gt
>= ge olacak sekilde kullanilabilir. - less degiskenimiz icin le operatorunu kullandik. Sonuc true olarak donecektir.
- SpEL mantiksal operatorler kullanmamiza da olanak saglar.
and , or , not , ! - Javada bulunan ternary yapisi SpEL dilinde de kullanilabilir. Ternary (? : ) operatoru birlesimidir. Soru isaretinden onceki sart dogru ise 10 degeri atanir eger sart saglanmazsa iki noktadan sonraki ifade calisir yani 25 atanir.
Test sinifimizi calistirali ve sonucu gorelim…
SpELOperatorsTest.java
Operations op = (Operations) context.getBean("operations"); op.write();
0.22714459322757907 3.141592653589793 15.707963267948966 30 injavawetrust true true true 25
Kaynak Kodlar: SpringProject_v8
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust
Leave a Reply