Tuesday, September 16, 2014

Spring Boot


Pada tutorial kali ini kita akan membahas tentang Spring-Boot. Spring boot digunakan untuk membuat standalone application berbasis Spring Framework.
Kelebihan spring boot antara lain :
  • Dapat membuat aplikasi spring secara cepat.
  • Tidak perlu menggunakan XML configuration.  Konfigurasi dapat langsung diinject di java class nya. Konfigurasi cukup dilakukan di pom.xml saja
  • Tidak perlu menggunakan server (seperti Tomcat atau jetty). Running menggunakan file jar hasil packing

Sekarang akan kita coba membuat contoh aplikasi Spring MVC menggunakan spring-boot.
Untuk mempermudah compiling dan packaging dapat menggunakan Maven atau Gradle.
Karena saya lebih familiar, maka digunakan maven saja.

di pom.xml tambahkan dependency spring-boot
 <parent>  
   <groupId>org.springframework.boot</groupId>  
   <artifactId>spring-boot-starter-parent</artifactId>  
   <version>1.1.6.RELEASE</version>  
 </parent>  
 <dependencies>  
   <dependency>  
     <groupId>org.springframework.boot</groupId>  
     <artifactId>spring-boot-starter-web</artifactId>  
   </dependency>  
 </dependencies>  

Kemudian tambahkan dependency actuator module. Modul ini berisi embbeded tomcat/jetty.
     <dependency>  
       <groupId>org.springframework.boot</groupId>  
       <artifactId>spring-boot-starter-actuator</artifactId>  
     </dependency>  

Seperti biasa di spring mvc pattern kita buat class class berikut (model, service, controller).

Model
 package com.nostratech.app;  
 import java.io.Serializable;  
 public class Person implements Serializable {  
   private Integer id;  
   private String name;  
   private String address;  
   public Person() {}  
   public Person(Integer id, String name, String address) {  
     this.id = id;  
     this.name = name;  
     this.address = address;  
   }  
   public Integer getId() {  
     return id;  
   }  
   public void setId(Integer id) {  
     this.id = id;  
   }  
   public String getName() {  
     return name;  
   }  
   public void setName(String name) {  
     this.name = name;  
   }  
   public String getAddress() {  
     return address;  
   }  
   public void setAddress(String address) {  
     this.address = address;  
   }  
   @Override  
   public String toString() {  
     final StringBuffer sb = new StringBuffer("Person{");  
     sb.append("id=").append(id);  
     sb.append(", name='").append(name).append('\'');  
     sb.append(", address='").append(address).append('\'');  
     sb.append('}');  
     return sb.toString();  
   }  
 }  

Service
 package com.nostratech.app;  
 import org.springframework.stereotype.Service;  
 import java.util.ArrayList;  
 import java.util.List;  
 @Service  
 public class PersonService {  
   private List<Person> personList;  
   public PersonService(){  
     if(personList == null) personList = new ArrayList<Person>();  
     personList.add(new Person(1, "andri", "jakarta"));  
     personList.add(new Person(2, "budi", "bandung"));  
   }  
   public Integer getId(){  
     return 10;  
   }  
   public List<Person> findAllPerson(){  
     return personList;  
   }  
 }  

Controller
 package com.nostratech.app;  
 import org.springframework.beans.factory.annotation.Autowired;  
 import org.springframework.stereotype.Controller;  
 import org.springframework.web.bind.annotation.RestController;  
 import org.springframework.web.bind.annotation.RequestMapping;  
 @RestController  
 @RequestMapping(value = "/persons")  
 public class PersonController {  
   @Autowired  
   private PersonService personService;  
   @RequestMapping("/")  
   public String index() {  
     return "hello person controlller "+personService.getId();  
   }  
   @RequestMapping("/findAll")  
   public String findAll() {  
     return "Find all person : \n"+personService.findAllPerson();  
   }  
 }  

Kemudian buat class Application.
Untuk running aplikasi spring nya class ini harus memanggil SpringApplication.run().
 package com.nostratech.app;  
 import java.util.Arrays;  
 import org.springframework.boot.SpringApplication;  
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;  
 import org.springframework.context.ApplicationContext;  
 import org.springframework.context.annotation.ComponentScan;  
 import org.springframework.context.annotation.Configuration;  
 @Configuration  
 @EnableAutoConfiguration  
 @ComponentScan  
 public class Application {  
   public static void main(String[] args) {  
     ApplicationContext ctx = SpringApplication.run(Application.class, args);  
   }  
 }  

Tambahkan tag berikut :
@Configuration : menunjukkan bahwa class tersebut didefinisikan di application context.
@EnabledAutoConfiguration : meload semua bean bean yang sudah didefinisikan
@ComponentScan : scan semua component, configuration, service yang berada dalam satu package

tambahkan definisi class tersebut di pom.xml
 <properties>  
     <start-class>com.nostratech.app.Application</start-class>  
   </properties>  
class Application ini yang akan otomatis distart ketika aplikasi spring nya sudah running.

Compile aplikasinya dengan menjalankan : mvn clean install
semua class dan library akan dipackaging dalam satu file jar.

Sekarang jalankan aplikasinya lewat command java -jar
java -jar target/sample-spring-boot-1.0.0.jar
Berikut ini tampilan di Console ketika start aplikasi

Begitu spring boot sudah distart maka embeded tomcat akan otomatis running. default port 8080
Kemudian kita coba panggil controllernya localhost:8080/persons (panggil controller person)



Sekian tutorial dari saya.

Terima kasih




1 comment:

  1. Mas, bukannya spring-boot-starter-actuator itu seperti module tambahan untuk support di production ya?
    misalnya seperti mengetahui berapa thread yang sedang berjalan.

    http://docs.spring.io/spring-boot/docs/1.2.5.RELEASE/reference/htmlsingle/#production-ready

    Dan untuk embedded Tomcat/Jetty ada di dalam module spring-boot-starter-web, CMIIW.

    ReplyDelete