Annotation pada Spring yang perlu diketahui

Home / Java / Annotation pada Spring yang perlu diketahui

Annotation merupakan informasi data tentang kode program tetapi tidak akan berdampak secara langsung pada kode, atau lebih dikenal dengan nama meta tag. Lalu apa kegunaan dari annotation ?

  1. Memberikan informasi kepada compiler – Annotation dapat digunakan oleh compiler untuk mendeteksi error atau suppress warning.
  2. Compiler-time dan deployment-time processing – Software tools dapat memproses informasi dari annotation untuk men-generate code, XML file, dan masih banyak lagi.
  3. Runtime processing – Beberapa annotation akan diperiksa pada waktu runtime.

Annotation dapat diaplikasikan pada class, field, method, dan elemen program yang lain

1. @Controller

Controller adalah anotasi yang digunakan untuk menunjukkan bahwa sebuah class adalah controller, yang terdiri dari   method method atau fungsi fungsi  yang akan melayani dan berhubungan langsung dengan http request dan request mapping. Pada Controller pertama kali data data yang dikirim dari form atau browser untuk diolah dan dikirim kelevel berikutnya pada spring MVC. Berikut contoh kasus implementasi annotation @Controller

@Controller
public class JSONController {

@RequestMapping(value = "/kfc/brands/{name}", method = RequestMethod.GET)
public @ResponseBody
Shop getShopInJSON(@PathVariable String name) {
contactsDAO.test();
validator.printTestDao();

Shop shop = new Shop();
shop.setName(name);
shop.setStaffName(new String[]{"mkyong1", "mkyong2"});
return shop;
}
}

2. @Services

Annotasi @service digunakan untuk menunjukkan sebuah class yang akan digunakan sebagai pusat service dari aplikasi yang akan dibangun. Pusat service yang dimaksud adalah semua proses yang berhubungan dengan business logic akan dilakukan pada class ini bukan pada controller ataupun DAO. Berikut sample code class service :

@Service
public class CustomerServiceImpl  {
    private CustomerDao customerDao;

    @Override
    @Transactional
    public Customer getCustomerById(String id) {
	Customer customer = null;
	try {
	    customer = customerDao.getCustomerById(id);
	} catch (Exception e) {
	    e.printStackTrace();
	}
	return customer;
    }

    @Autowired
    @Qualifier("customerDao")
    public void setCustomerDao(CustomerDao customerDao) {
	this.customerDao = customerDao;
    }
}

3. @Repository

Repository adalah anotasi yang digunakan untuk menunjukkan sebuah class akan dijadian DAO, pada class ini proses query logic seharusnya dibuat. contoh class Repository :

@Repository
public class Pegawai {

public void InsertData(){
System.out.println("Here Create your Query Logic");
}
}

4. @Autowire

Sebenarnya ini agak sudah kalau diartikan dalam bahasa indonesia, tapi biasanya anotasi ini saya gunakan untuk proses dependency injection, untuk menyederhanakan penggunaa setter method untuk memanggil sebuah class pada depedency inejction.

Contoh penggunaan AutoWire

@Autowired
private Pegawai contactsDAO;

@Autowired
private TestDao validator;

5. @Qualifier

Adalah anotasi yang digunakan bersama dengan AutorWire yang digunakan sebagai discrimantor.

Contoh penggunaan Qualifier :

@Autowired
@Qualifier("customerDao")
public void setCustomerDao(CustomerDao customerDao) {
this.customerDao = customerDao;
}

6. @Component

Adalah Annotation umum yang digunakan untuk memanagement component2 spring. penggunaannya sebenarnya hampir sama dengan @repository, @service dan @controller tapi dengan fungsi yang  lebih umum artinya ketika membuat sebuah class yang bukan ditujukan sebagai controller ataupun service maka @component lebih pas untuk digunakan.

Contoh :

@Component
public class COnnectionUtil {

public void getConnction(){
System.out.println("Here global method used to make a connection to     database not specific for business logic, database logic");
}
}

Leave a Reply

Your email address will not be published. Required fields are marked *