這些看似簡單的代碼背后隱藏了很多復雜的處理,比如默默工作的Spring AOP框架,我們甚至不必知道這些概念,一樣可以享用它的結果。Bean myComponent 的定義中創建了一個該EJB組件的代理對象,它實現了業務方法接口。這個EJB組件的 本地Home對象在啟動的時候就被放到了緩存中,所以只需要執行一次JNDI查找即可。 每當EJB組件被調用的時候,這個代理對象就調用本地EJB組件的create方法,并調用 該EJB組件的相應的業務方法。
在Bean myController的定義中,控制器類的屬性 myController的值被設置為上面代理對象。
這樣的EJB組件訪問方式大大簡化了應用程序代碼:Web層(或其他EJB客戶端) 的代碼不再依賴于EJB組件的使用。如果我們想把這個EJB的引用替換為一個POJO, 或者是模擬用的對象或其他測試組件,我們只需要簡單地修改Bean myComponent 的定義中僅僅一行Java代碼,此外,我們也不再需要在應用程序中編寫任何JNDI查找 或其它EJB相關的代碼。