Showing posts with label spring. Show all posts
Showing posts with label spring. Show all posts

Monday, November 02, 2015

Implementasi AOP dengan Spring

Dengan membuat kelas untuk Aspect yang sangat sederhana, misalnya :

package id.web.mige.wlsp.bbs;


import org.aspectj.lang.ProceedingJoinPoint;


public class SecurityAspect {
 
 
    public Object aroundFunction(ProceedingJoinPoint pjp) throws Throwable {
     System.out.println("Before " + pjp.getSignature().getName());
        Object retVal = pjp.proceed();
        System.out.println("After " + pjp.getSignature().getName());
        return retVal;
    }

}

Setting untuk AOP bisa di masukkan ke dalam berkas XML untuk servlet context, misalnya :


<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:beans="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  http://www.springframework.org/schema/aop 
      http://www.springframework.org/schema/aop/spring-aop.xsd">

 <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
 
 <!-- Enables the Spring MVC @Controller programming model -->
 <annotation-driven />

 <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
 <resources mapping="/resources/**" location="/resources/" />

 <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
 <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <beans:property name="prefix" value="/WEB-INF/views/" />
  <beans:property name="suffix" value=".jsp" />
 </beans:bean>
 
  <context:component-scan base-package="id.web.mige.wlsp.bbs" />
 
    <beans:bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <beans:property name="jndiName" value="jdbc/localtestdb"/>
    </beans:bean>
 
    <beans:bean id="articleJDBCTemplate" 
       class="id.web.mige.wlsp.bbs.ArticleJDBCTemplate">
       <beans:property name="dataSource"  ref="dataSource" />    
    </beans:bean>
           <aop:aspectj-autoproxy/>
    
    <beans:bean id="articleController" class="id.web.mige.wlsp.bbs.ArticleController"/>
    
    <beans:bean id="myAspect" class="id.web.mige.wlsp.bbs.SecurityAspect">
     <!-- configure properties of aspect here as normal -->
  </beans:bean>
  
  <aop:config proxy-target-class="true">
        <aop:aspect ref="myAspect">

            <aop:pointcut id="mypointcut"
                expression="execution(* id.web.mige.wlsp.bbs.ArticleController.*(..))"/>

            <aop:around pointcut-ref="mypointcut"
                method="aroundFunction"/>  
   
   
   

        </aop:aspect>
     </aop:config>
  
</beans:beans> 

Atau jika lebih menyukai bentuk annotation, kelas Aspect dapat diubah menjadi seperti ini :

@Aspect
public class SecurityAspect {
 
 @Around("execution(* id.web.mige.wlsp.bbs.ArticleController.*(..))")
    public Object aroundFunction(ProceedingJoinPoint pjp) throws Throwable {
     System.out.println("Before " + pjp.getSignature().getName());
        Object retVal = pjp.proceed();
        System.out.println("After " + pjp.getSignature().getName());
        return retVal;
    }

}

dan setting/config XML untuk tag <aop:aspect ... > ...  </aop:aspect> dapat dihilangkan.

Thursday, October 22, 2015

Memulai Membangun Aplikasi dengan Spring untuk WebLogic Server

Tutorial ini menggunakan :
- Microsoft Windows 8

- MySQL Server

- Spring versi 4.2.2
Berkas jar Spring Bisa diunduh di
http://maven.springframework.org/release/org/springframework/spring/4.2.2.RELEASE/

- Oracle Fusion Middleware WebLogic 12.1.3
Bisa diunduh di
http://www.oracle.com/technetwork/middleware/fusion-middleware/downloads/index.html
Pilih "Windows 32 installer including OEPE". Installer ini berukuran cukup besar, sekitar 2 GB. OEPE adalah Oracle Enterprise Pack for Eclipse. Jadi paket installer ini sudah ada Eclipse yang sudah siap untuk membangun aplikasi untuk WebLogic.

Untuk memudahkah pengembangan Spring di Eclipse telah tersedia Spring IDE plugin. Silahkan memasang plugin ini. Bisa melalui Eclipse Marketplace



Gambar: Spring IDE plugin di Eclipse


Sebelum tutorial ini dapat berjalan. Harus ada WebLogic Server yang telah siap dijalankan. Untuk menyiapkan WebLogic Server dapat mengikuti tutorial berikut (link).

Mulai dengan membuat proyek baru di Eclipse. Pilih menu File > New > Other ...

Gambar: New Project di Eclipse


Akan muncul dialog :

Gambar: New Dialog di Eclipse


Pilih "Spring Project", klik tombol "Next".

Gambar: New Spring Project Dialog


Isi "WLSpringTutorial" sebagai Project Name. Pilih "Spring MVC Project" sebagai Template. Klik tombol "Next".

Gambar: Project Settings


Isi nama package : id.web.harimurti . Boleh diubah sesuai dengan kebutuhan. Klik tombol "Finnish". Tunggu sampai Eclipse selasai menyiapkan proyek ini.

Gambar: Struktur proyek



Jika kita buka proyek ini akan tampak seperti gambar diatas. Proyek ini sudah dapat kita jalankan di WebLogic Server. Klik kanan di nama proyek.

Gambar: Menu "Run on Server"


Setelah itu akan muncul dialog untuk memilih di Server mana kita akan jalankan aplikasi web ini.

Gambar: Pilih Server


Klik tombol Next, akan muncul dialog untuk memilih resources (aplikasi) yang dijalankan di Server.

Gambar: Pilih aplikasi


Pilih proyek kita dan pindahkan ke kolom kanan dan pindahkan aplikasi lain yang tidak diperlukan (jika ada) ke kolom kiri. Klik tombol Finish.
Tunggulah sampai Eclipse selesai melakukan deployment dan membuka browser untuk menampilkan halaman web dari aplikasi ini.

Gambar: Tampilan default aplikasi di browser.