Dokumen tersebut membahas tentang Spring Framework, yang merupakan framework open source berbasis Java untuk membangun aplikasi enterprise. Spring menyediakan berbagai fitur seperti dependency injection, aspect-oriented programming, dan transaction management yang memudahkan pengembang fokus pada logika bisnis. Dokumen ini juga menjelaskan konsep-konsep inti Spring seperti inversion of control, dependency injection, dan aspect oriented programming beserta contoh kode.
3. ABOUT ME
Here you could describe the
topic of the section
Spring and Java EE
Here you could describe the
topic of the section
Spring Framework
Here you could describe the
topic of the section
Basic Spring
Here you could describe the
topic of the section
02
01
04
03
4. Spring DI and IOC
Here you could describe the
topic of the section
Spring AOP
Here you could describe the
topic of the section
Spring Data
Here you could describe the
topic of the section
Transaction
Management
Here you could describe the
topic of the section
07
05
08
06
5. Spring Boot
Here you could describe the
topic of the section
Spring Advance
Here you could describe the
topic of the section
Spring In Real
World
Here you could describe the
topic of the section
Closing
Here you could describe the
topic of the section
11
09
12
10
8. What is
Spring Spring adalah salah satu framework di java
programing memiliki sifat lightweight atau
ringan tapi powerfull dan mudah digunakan.
Dibuat untuk developer dari developer.
01
9. Spring framework adalah framework open source dan berbasis java platform yang
menyediakan infrastruktur yang lengkap untuk mengembangkan java enterprise
aplikasi. Dengan spring framework developer tidak perlu khawatir mengenai
infrastruktur dari aplikasi, cukup fokus pada pengembangan business logic dan
bahkan minim kebutuhan konfigurasi.
HAMPIR SEMUA KEBUTUHAN SUDAH DISEDIAKAN OLEH SPRING FRAMEWORK
17. Spring Core Container
Agar dapat mengaktifkan DI (dependency injection) , kita memerlukan cara
menyatukan object-object sehingga dapat bekerja secara kolaborasi mengeksekusi
proses bisnis.
Semua aplikasi berbasis spring, object-object ini akan berada pada spring container.
1. Creation Object (bean dan Xml config)
2. Hold and maintenance in memory
3. Inject to other object
4. Destroy Object
19. Core container dari spring terbagi kedalam beberapa sub komponen seperti berikut.
Spring Core:
Modul utama ini akan menyediakan semua komponen utama termasuk di dalam nya IoC
(Inversion of Control) dan DI (Dependency Injection)
Spring Bean:
Modul ini menyediakan layanan terhadap Pembuatan (Instance java bean). Spring Bean ini lebih
tepatnya BeanFactory.
Spring Context:
Modul context menyediakan layanan di atas Core dan Bean sehingga dapat lebih mudah di akses
dari code apa-apa yang telah kita configurasi.
Spring Expression Languages (SpEL):
Modul ini menyediakan layanan cara akses ke object java (graph) bisa dalam xml atau anotasi.
22. Spring IOC
1.
IOC atau Injection of control adalah proses injeksi object atau bagian dari program ke container
atau wadah dalam hal ini adalah spring container. Dengan demikian, semua proses di atur oleh
framework.
Kelebihan IOC
1. Decoupling antar proses eksekusi task dan cara implementasinya.
2. Modularitas
3. Bisa memilih dan merubah implementasi dengan mudah
4. Memudahkan proses testing pada program
IOC dapat dicapai dengan cara: Strategi design pattern, service locator, factory dan DI.
23. Tanggung Jawab IOC container
1. Instantiating Bean
2. Menghubungkan semua bean
3. Konfigurasi Bean
4. Memanage life cycle semua bean
Dua package dalam spring yang mendasari IOC container
org.springframework.beans
Org.springframework.context
Class utama dari dua container tersebut adalah : BeanFactory dan ApplicationContext.
25. Meta Data Konfigurasi
1. Xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="helloWorld" class="net.javaguides.spring.ioc.HelloWorld">
<property name="message" value="Hello World!" />
</bean>
</beans>
26. 2. Annotation
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:context = "http://www.springframework.org/schema/context"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config/>
<!-- bean definitions go here -->
</beans>
@Required
@Autowired
@Qualifier
@Primary
@Resource
@PostConstruct and @PreDestroy (These are JSR-250 annotations)
28. Dependency Injection, adalah proses atau cara memberikan object atau inject object java secara
dinamik dalam waktu runtime.Jenis DI
1. Setter Injection
2. Constructor Injection
Dalam spring framework IOC = ApplicationContext Merupakan sebuah interface
org.springframework.context.ApplicationContext;
33. Spring IOC Container
Mercury is the smallest
planet in our Solar System
Venus has a beautiful
name, but its terribly hot
Saturn is composed of
hydrogen and helium
Manual Injection Object
DI
IOC
34. Spring Core Annotation
1. @Requared, digunakan untuk menyatakan bahwa bean yang kita registrasikan wajib di inisialisasi
dan di isi parameter-parameter yang diperlukannya. Diterapkan dengan bean setter injection
2. @Autowired, digunakan untuk menyambungkan dan meng inject object lewat setter injection atau
constructor injection
3. @Qualifier, untuk menentukan kecocokan bean yang di inject bisa berdasarkan nama atau type.
4. @Configuration, digunakan pada class tempat kita mendefinisikan semua bean. Fungsinya sama
dengan xml konfigurasi tetapi dalam bentuk java class.
5. @Bean, digunakan untuk mendaftarkan class pada spring container/ ioc container. Disimpan pada
level method yang berada pada class konfigurasi.
6. @lazy, digunakan untuk membuat bean kita hanya di inisialisasi ketika di perlukan atau di panggil.
Karena secara default semua komponen dependency akan di inisialisasi ketika start up system.
Dapat digunakan pada class atau bean.
7. @value, digunakan sama seperti autowired tetapi pada level parameter
8. @Componentscan, untuk mendaftarkan bean pada lokasi tertentu biasnaya berupa package
dengan settingan basePackage atau basePackageClass.
35. 9. @Component, digunakan untuk meregistrasikan suatu class ke dalam spring container. Akan di scan
apabila package telah didaftarkan.
10. @Repository digunakan seperti @Component tetapi khusus untuk class-class yang menangani
access data.
11. @Service, digunakan sama seperti @Component tetapi khusus untuk class-class yang berfungsi
sebagai service layer untuk mendefinisikan business logic.
12. @Controller, digunakan sama seperti @component tetapi khusus untuk class-class yang berfungsi
sebagai spring controller dalam pattern MVC. Digunakan pada spring mvc atau spring webflux.
36. Spring Bean Scope
1. Singleton, hanya ada satu object instance.
2. Prototype, membuat object setiap access.
3. RequestScope, akan membuat object baru setiap ada http request
4. SessionScope satu object per-session http.
37. Spring AOP
Spring AOP atau dikenal sebagai Spring Aspect Oriented Programming adalah
implementasi AOP dengan menggunakan framework spring. AOP sendiri
adalah cara pemrograman berbasiskan aspect sebagai pelengkap dari OOP
(object oriented programming) dan posisi AOP bukan untuk menggantikan
OOP.
38. Bargain-Bagian AOP
Aspect, adalah bagian code yang akan kita masukan ke dalam code
utama. Aspect diimplementasikan menggunakan class java yang
dipasang anotasi @Aspect.
Join Point, adalah bagian atau point tempat aspect dieksekusi.
Pada spring AOP joinpoint ini berupa method tempat aspect akan
dieksekusi.
Advice, adalah bagian utama dan terpenting dari AOP. Advice
adalah tempat aksi yang diambil oleh aspect pada join point.
Advice bisa terletak sebelum joint point, sesudah, atau pada ketika
joint point dieksekusi. Umumnya advice berupa interceptor yang
mengatur semua intercept pada join point
39. Bagian-Bagian AOP
Pointcut, adalah ekpresion atau predicate yang cocok dengan joint
point. Biasanya berupa regex. Advice akan dikaitkan dengan
ekspresi pointcut dan dijalankan pada join point.
Target Object, adalah objek yang dikenakan advice. Khusus pada
spring aop mengimplementasikan menggunakan runtime proxies.
Dengan demikian object ini selalu berupa proxy object. Pada
contoh pointcut diatas maka EmployeeService adalah target
object.
AOP Proxy, Object yang dibuat oleh AOP framework untuk
mengimplementasikan aspect kontrak. Pada spring framework
AOP berupa JDK dynamic proxy atau CGLIB proxy.
40. Jenis-Jenis Advice
Before Advice, advice yang dijalankan sebelum code yang ada pada join
point. Advice ini tidak memiliki kemampuan untuk mencegah flow proses
dieksekusi. @Before adalah anotasi yang digunakan untuk menyatakan
advice ini.
After Returning Advice, advice ini akan dieksekusi jika method pada joint
point dieksekusi dengan hasil sukses. Jadi, aspect akan dieksekusi jika code
utama tidak ada error. @AfterReturning adalah anotasi yang digunakan.
After Throwing Advice, advice ini akan dieksekusi jika method pada join
point menghasilkan error.@AfterThrowing digunakan untuk menyatakan
jenis advice ini.
After Advice, advice ini akan dieksekusi setelah join point baik error atau
success. @After adalah anotasi yang digunakan.
Around Advice, advice ini dieksekusi di sekeliling join point yaitu sebelum
method dan sesudah method. @Around adalah anotasi yang digunakan.
42. CREDITS: This presentation template was created by 際際滷sgo, including
icons by Flaticon, and infographics & images by Freepik.
THANKS!
Do you have any questions?
dhfr123@gmail.com
082117419014
https://microservice-pattern.com
https://medium.com/the-legend
Please keep this slide for attribution.