學習筆記-AOP的優點

來源:互聯網
上載者:User
筆記 面對方法編程並不是要取代面對對象編程,而是要提高它。AOP程式員一般來說都是90%使用OOP來解決問題
而10%是用AOP來解決OOP不能解決的問題。

橫切關注點(Cross-cutting Concerns)
很多時候你發現你的類並不能十分清晰和明白的表到你所想表達的功能意義,因為你真正的代碼
大多被其它代碼所包圍了。如果你想很好的擴充或整合你所想表達的功能意義,你最好就用方面
的思想來考慮它了。

開發中的分層(Layering Based on Deployment)
AOP另外一個很有用的地方就是可以用來為你的應用程式分層。很多時候你希望的一些特殊應用或
類是可以很好的配置的,但同時也希望這些東西是不臃腫和可以擴充的。AOP提供了很好的途徑來
分層這些複雜的東西。JBOSS AOP提供了XML配置的機制來配置每個方面的開發。最好的例子就是
快取服務,它提供了不同的鎖機制。這些緩衝鎖機制可以很好的織入你的內,而不影響你的類的
代碼,這樣你的類就是很好的擴充性了。

透明性(Transparency)
很多時候你都想把你的程式的焦點集中在商務應用和應用邏輯上,而不是關注於中介軟體的開發。
AOP允許你透明的應用中介軟體而不再使你的代碼收到汙染。一個很好的例子就是JBOSS AOP中的
使用者認證上面。


異常處理
處理異常是AOP提供給我們另外一個很有用的東西。例如,SQLException異常包含了SQL語句的
異常資訊或者資料庫的死結等資訊,但這些資訊卻使用不同錯誤碼和資訊。AOP可以讓你攔截
SQL語句資訊,並分類處理資料庫死結資訊。

public class InvalidSQlException extends SQLException
{
InvalidSQLException(SQLException ex)
{
super(ex.getMessage(), ex.getSQLState(), ex.getErrorCode());
}
}


使用的方面
public class SQLExceptionAspect
{
public Object handleSqlException(Invocation invocation) throws Throwable
{
try
{
return invocation.invokeNext();
}
catch (SQLException ex)
{
if (isVendorInvalidSqlErrorCode(ex.getErrorCode())) throw new InvalidSQLException(ex);
if (isVendorDeadlockErrorCode(ex.getErrorCode()) throw new SQLDeadlockException(ex);
... and so on ...
}
}
... impl of isVendor methods ...
}

使用的配置
<aspect class="SQLExceptionAspect" scope="PER_VM"/>
<bind pointcut="call(* $instanceof{java.sql.Statement}->execute*(..))">
<advice name="handleSqlException" aspect="SQLExceptionAspect"/>
</bind>




相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。