RSS

Make Swagger with XML Config on Spring 3 MVC

Pada tulisan saya sebelumnya mengenai pembuatan Swagger dengan menggunakan javaConfig. Sekarang saya akan mencoba mengutak-atik dengan cara menggunakan XML Config. Untuk pom.xml sama seperti pada tulisan sebelumnya

Bean Servlet Config
Yang membedakan antara Java Config dengan XML Config adalah pada discpatcher servlet ini. Saya akan meletakan semua configurasi ada disini. Berikut settinganya


        
        
        
        
            
        
        
        
            
            
            
            
            
            
        
        
            
            
        

Configurasi diatas memerlukan sedikit manipulasi. Karena setelah saya cermati pada swagger version ini tidaklah support jika kita ingin melakukanya dengan cara XML Config.
  1. context:component-scan
    Component diatas melakukan scanning terhadap component-component atau annotation yang akan dibaca oleh spring. Pada program saya ini hanya pada package com.test.controller dan com.test.model yang memiliki annotation yang harus dibaca oleh Spring Framework. Controller digunakan untuk Business logic dan Model digunakan untuk data entity getter setter.
  2. mvc:annotation-driven
    Jika pada java config sintax ini digunakan untuk @EnableWebMvc. Karena pada program yang saya gunakan adalah REST yang akan melakukan Request dan response berupa json maka saya butuh ini.
  3. mvc:resources mapping
    Resource mapping digunakan untuk meletakan file-file static pada contoh disini digunakan untuk template dari swagger nya. Didalamnya hanya berupa file static seperti html, javascript, images dan css. Bisa didownload disini
  4. Bean id:swaggerConfig
    Karena kita akan melakukan configurasi menggunakan XML Config. Maka kita akan bermain dengan XML Bean. Class com.test.model.Swagger merupakan class yang digunakan untuk melakukan getter dan setter untuk class com.mangofactory.swagger.configuration.SpringSwaggerConfig. Oleh sebab itu kita perlu melakukan depedency injection com.mangofactory.swagger.configuration.SpringSwaggerConfig kedalam class ini.
  5. Bean id:swagConf
    Pada bean ini terdapat class com.mangofactory.swagger.configuration.SpringSwaggerConfig. Digunakan untuk autowired agar swagger kita bisa di configurasi dan class ini merupakan depedency dari com.test.model.swagger.
  6. Bean id:apiinf
    Pada bean ini kita akan melakukan configurasi dari Api info. Untuk contructor argument pertama digunakan untuk Title dari API Swagger, Argument yang kedua untuk description, yang ketiga untuk terms of service URL, yang keempat merupakan contact yang bisa dihubungi, yang kelima merupakan licence dari Applikasi ini, yang terakhir adalah alamat licence URL.
  7. Bean id:customImplementation
    CustomImplementation merupakan main configurasinya. Dengan adanya bean ini kita bisa melakukan configurasi swagger dengan Api Info yang kita inginkan. Inti dari bean ini sebenarnya adalah SwaggerSpringMvcPluggin. Akan tetapi karena class tersebut tidak support untuk XML Configuration oleh sebab itu pada bean ini saya perlu melakukan sedikit tricky dan saya jelaskan dibawah. Pada Constructor yang diinginkan adalah springSwaggerConfig. Kita sudah buat beanya diatas pada com.test.model.swagger. untuk mendapatkan springSwaggerConfig maka kita masukan contructor-arg nya #{SprngSwaggerConfig.getSpringSwaggerConfig()} artinya memanggil model getSpringSwaggerConfig pada class ber id SpringSwaggerConfig. Kemudia kita perlu set apiInfo nya dan kita pun sudah meng-custome nya dengan nama apiinf.


Tricky di Class com.test.configuration.ApiInfo
public class ApiInfo extends SwaggerSpringMvcPlugin {
    public ApiInfo(SpringSwaggerConfig springSwaggerConfig) {
        super(springSwaggerConfig);
    }
    public SwaggerSpringMvcPlugin getApiInfo(){
        return this;
    }
    public void setApiInfo(com.wordnik.swagger.model.ApiInfo api){
        apiInfo(api);
    }
}
Class disana saya melakukan extends terhadap SwaggerSpringMvcPlugin. Saya lakukan ini karena pada class SwaggerSpringMvcPlugin tidak ada getter dan setter untuk ApiInfo. Sehingga akan timbul pesan error jika kita coba jalankan.

Buat Class com.test.model.Swagger
public class Swagger {
    private SpringSwaggerConfig springSwaggerConfig;
    
    @Autowired
    public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig){
        this.springSwaggerConfig=springSwaggerConfig;
    }
    public SpringSwaggerConfig getSpringSwaggerConfig(){
        return this.springSwaggerConfig;
    }
}
Ini digunakan hanya untuk getter dan setter pada springSwaggerConfig yang dibutuhkan oleh framework spring untuk menghandle configurasi dari swagger.

0 comments:

Posting Komentar

Please copy and share it, if it helps you
 
Copyright 2009 My Note All rights reserved.
Free Blogger Templates by DeluxeTemplates.net
Wordpress Theme by EZwpthemes
Blogger Templates