SlideShare uma empresa Scribd logo
Spring Is
Easy
Deni Husni Fahri Rizal
Ralali - Telkom University 2020
Spring World
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
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
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
ABOUT
ME
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
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
Maven or Gradle Build
Management
1. <?xml version="1.0" encoding="UTF-8"?>
2. <project xmlns="http://maven.apache.org/POM/4.0.0"
3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5. <modelVersion>4.0.0</modelVersion>
6. <groupId>org.example</groupId>
7. <artifactId>SampleMavenProject</artifactId>
8. <version>1.0-SNAPSHOT</version>
9. <properties>
10. <maven.compiler.target>1.8</maven.compiler.target>
11. <maven.compiler.source>1.8</maven.compiler.source>
12. </properties>
13. <dependencies>
14. <dependency>
15. <groupId>org.springframework</groupId>
16. <artifactId>spring-core</artifactId>
17. <version>5.2.9.RELEASE</version>
18. </dependency>
19. </dependencies>
20. </project>
Spring
History
First Released written by
Road Jonson June 2002
Spring 1st Version
Spring 2.0 Version
Spring 3.0 Version
2004
2006
2009
Spring
History
Spring 4.0 Version 2013
Spring 4.3 Version
Spring 5.0 Version
Spring Reactive and
Microservice
2016
2017
2018
Spring
Core CORE TECHNOLOGY
02
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
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.
Spring Core
Demo Java Bean and Manual Instance
Spring IOC
CORE TECHNOLOGY
03
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.
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.
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>
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)
Spring IOC
Demo
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;
Spring Core
Demo DI
Spring IOC Container
Mercury is the smallest
planet in our Solar System
Venus has a beautiful
name, but it’s terribly hot
Saturn is composed of
hydrogen and helium
Manual Injection Object
DI
IOC
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.
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.
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.
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.
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
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.
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.
Spring AOP
DEMO
CREDITS: This presentation template was created by Slidesgo, 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.
ALTERNATIVE RESOURCES
VECTOR
● https://medium.com/the-legend/spring-aop-68b0c944a0d6
● https://medium.com/the-legend/spring-ioc-54306410a4ed
● https://medium.com/the-legend/spring-ioc-dengan-di-52f8258d1f9e
RESOURCES

Mais conteúdo relacionado

Semelhante a Spring is Easy

150 rahasia pemrograman java
150 rahasia pemrograman java150 rahasia pemrograman java
150 rahasia pemrograman java
Jemy Sidauruk
 
Tugas 4 rekayasa web 0316
Tugas 4 rekayasa web 0316Tugas 4 rekayasa web 0316
Tugas 4 rekayasa web 0316
art david
 
2. prosedur pbo
2. prosedur pbo2. prosedur pbo
2. prosedur pbo
Saprudin Eskom
 
yii-guide-2.0-id.pdf
yii-guide-2.0-id.pdfyii-guide-2.0-id.pdf
yii-guide-2.0-id.pdf
FandiAjiWibowo1
 
tes
testes
Pemrograman berbasis objek
Pemrograman berbasis objekPemrograman berbasis objek
Pemrograman berbasis objek
Rika Pertiwi
 
Tugas java praktektohir
Tugas java praktektohirTugas java praktektohir
Tugas java praktektohir
pencari buku
 
Tugas latihan java tohir 1
Tugas latihan java tohir 1Tugas latihan java tohir 1
Tugas latihan java tohir 1
pencari buku
 
Android Workshop beginner
Android Workshop beginnerAndroid Workshop beginner
Android Workshop beginner
Muhammad Iskandar Dzulqornain
 
Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)
Materi Kuliah Online
 
Tugas 4 rekayasa web 1312510231 rostarina.h
Tugas 4 rekayasa web 1312510231 rostarina.hTugas 4 rekayasa web 1312510231 rostarina.h
Tugas 4 rekayasa web 1312510231 rostarina.h
osta92
 
Membangun aplikasi berbasis web dengan menggunakan framework
Membangun aplikasi berbasis web dengan menggunakan frameworkMembangun aplikasi berbasis web dengan menggunakan framework
Membangun aplikasi berbasis web dengan menggunakan framework
Gst Ayu Indriani
 
Struktur Pemrograman Java
Struktur Pemrograman JavaStruktur Pemrograman Java
Struktur Pemrograman Java
roji muhidin
 
Pengenalan Framework .NET
Pengenalan Framework .NETPengenalan Framework .NET
Pengenalan Framework .NETHelmy Satria
 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
satriahelmy
 
Pengenalan ReactJS
Pengenalan ReactJS Pengenalan ReactJS
Pengenalan ReactJS
Fauzi Hasibuan
 
Java netbeans
Java netbeansJava netbeans
Java netbeans
Muh Randy Mallombasi
 
Jeni Intro1 Bab02 Pengenalan Bahasa Java
Jeni Intro1 Bab02 Pengenalan Bahasa JavaJeni Intro1 Bab02 Pengenalan Bahasa Java
Jeni Intro1 Bab02 Pengenalan Bahasa Java
Individual Consultants
 
Modul2 - Pengenalan Bahasa Java
Modul2 - Pengenalan Bahasa JavaModul2 - Pengenalan Bahasa Java
Modul2 - Pengenalan Bahasa Java
Materi Kuliah Online
 
Jeni intro1-bab02-pengenalan bahasa java
Jeni intro1-bab02-pengenalan bahasa javaJeni intro1-bab02-pengenalan bahasa java
Jeni intro1-bab02-pengenalan bahasa java
Kristanto Wijaya
 

Semelhante a Spring is Easy (20)

150 rahasia pemrograman java
150 rahasia pemrograman java150 rahasia pemrograman java
150 rahasia pemrograman java
 
Tugas 4 rekayasa web 0316
Tugas 4 rekayasa web 0316Tugas 4 rekayasa web 0316
Tugas 4 rekayasa web 0316
 
2. prosedur pbo
2. prosedur pbo2. prosedur pbo
2. prosedur pbo
 
yii-guide-2.0-id.pdf
yii-guide-2.0-id.pdfyii-guide-2.0-id.pdf
yii-guide-2.0-id.pdf
 
tes
testes
tes
 
Pemrograman berbasis objek
Pemrograman berbasis objekPemrograman berbasis objek
Pemrograman berbasis objek
 
Tugas java praktektohir
Tugas java praktektohirTugas java praktektohir
Tugas java praktektohir
 
Tugas latihan java tohir 1
Tugas latihan java tohir 1Tugas latihan java tohir 1
Tugas latihan java tohir 1
 
Android Workshop beginner
Android Workshop beginnerAndroid Workshop beginner
Android Workshop beginner
 
Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)
 
Tugas 4 rekayasa web 1312510231 rostarina.h
Tugas 4 rekayasa web 1312510231 rostarina.hTugas 4 rekayasa web 1312510231 rostarina.h
Tugas 4 rekayasa web 1312510231 rostarina.h
 
Membangun aplikasi berbasis web dengan menggunakan framework
Membangun aplikasi berbasis web dengan menggunakan frameworkMembangun aplikasi berbasis web dengan menggunakan framework
Membangun aplikasi berbasis web dengan menggunakan framework
 
Struktur Pemrograman Java
Struktur Pemrograman JavaStruktur Pemrograman Java
Struktur Pemrograman Java
 
Pengenalan Framework .NET
Pengenalan Framework .NETPengenalan Framework .NET
Pengenalan Framework .NET
 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
 
Pengenalan ReactJS
Pengenalan ReactJS Pengenalan ReactJS
Pengenalan ReactJS
 
Java netbeans
Java netbeansJava netbeans
Java netbeans
 
Jeni Intro1 Bab02 Pengenalan Bahasa Java
Jeni Intro1 Bab02 Pengenalan Bahasa JavaJeni Intro1 Bab02 Pengenalan Bahasa Java
Jeni Intro1 Bab02 Pengenalan Bahasa Java
 
Modul2 - Pengenalan Bahasa Java
Modul2 - Pengenalan Bahasa JavaModul2 - Pengenalan Bahasa Java
Modul2 - Pengenalan Bahasa Java
 
Jeni intro1-bab02-pengenalan bahasa java
Jeni intro1-bab02-pengenalan bahasa javaJeni intro1-bab02-pengenalan bahasa java
Jeni intro1-bab02-pengenalan bahasa java
 

Spring is Easy

  • 1. Spring Is Easy Deni Husni Fahri Rizal Ralali - Telkom University 2020
  • 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
  • 7.
  • 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
  • 10. Maven or Gradle Build Management
  • 11.
  • 12. 1. <?xml version="1.0" encoding="UTF-8"?> 2. <project xmlns="http://maven.apache.org/POM/4.0.0" 3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5. <modelVersion>4.0.0</modelVersion> 6. <groupId>org.example</groupId> 7. <artifactId>SampleMavenProject</artifactId> 8. <version>1.0-SNAPSHOT</version> 9. <properties> 10. <maven.compiler.target>1.8</maven.compiler.target> 11. <maven.compiler.source>1.8</maven.compiler.source> 12. </properties> 13. <dependencies> 14. <dependency> 15. <groupId>org.springframework</groupId> 16. <artifactId>spring-core</artifactId> 17. <version>5.2.9.RELEASE</version> 18. </dependency> 19. </dependencies> 20. </project>
  • 13. Spring History First Released written by Road Jonson June 2002 Spring 1st Version Spring 2.0 Version Spring 3.0 Version 2004 2006 2009
  • 14. Spring History Spring 4.0 Version 2013 Spring 4.3 Version Spring 5.0 Version Spring Reactive and Microservice 2016 2017 2018
  • 16.
  • 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
  • 18.
  • 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.
  • 20. Spring Core Demo Java Bean and Manual Instance
  • 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.
  • 24.
  • 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;
  • 29.
  • 30.
  • 31.
  • 33. Spring IOC Container Mercury is the smallest planet in our Solar System Venus has a beautiful name, but it’s 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 Slidesgo, 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.