Spring Aopの応用
こんにちは、今回はSpring Aopのいくつかのよくある応用について話します. まず、Spring Aopを理解してみましょう.なぜそれがあるのか、OOPの代わりにできますか?開発に何を持ってきてくれますか?またどんな応用がありますか?これらの疑問を持ってSpring Aopの知識を検討します. 第一に、使用前に該当するSpringパッケージとSpring依存パッケージを追加する必要があります. メインバッグ:org.springframe ewark.aop-3.5.RELEASE.jarとorg.springframe ebook.aspects-3.5.RELEASE.jar 依存パック:comp.springsource.org.aopalliance-1.00.jarとcome.springsource.net.s.cglib-2.20.jar ここでは、comp.sprigsource.net.sf.cglib-2.2.jarを使って、cglibの中のクラスを使って、具体的な種類を阻止することができます.インタフェースだけではなく、例えばController類です.jdkの反射メカニズムはみんな知っています.cglibの機能はそれと似ています.それよりもっと強いです. 第二に、異常処理の実現:
ステップ1:Springプロファイルにコメントを入れる
第五に、事務管理
ステップ1:Springプロファイルを修正し、以下のコードを追加します.
第二ステップ:自動事務処理の注釈を追加する
今日はこれを書きます.また、Spring Aopはまだたくさんの応用があります.みんなで進歩して、いい使い方があって、一緒に進歩してほしいです.
public class MyException1 implements HandlerExceptionResolver
{
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object arg2, Exception ex) {
System.out.println(" ......");
if (ex instanceof ArrayIndexOutOfBoundsException) {
System.out.println(ex);
request.setAttribute("error", " ....");
return new ModelAndView("/SpringAop/exception/error.jsp");
} else if (ex instanceof RuntimeException) {
System.out.println(ex);
request.setAttribute("error", " ....");
return new ModelAndView("/SpringAop/exception/error.jsp");
}
return null;
}
}
第三に、基本ブロックの実装:public class MyInterceptor implements HandlerInterceptor {
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println(" ....");
}
public void postHandle(HttpServletRequest arg0,
HttpServletResponse arg1,Object arg2, ModelAndView arg3)
throws Exception {
System.out.println(" ......");
}
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2) throws Exception {
System.out.println(" ....");
return false;
}
第四:ログを例にとって、注釈を使ってAOPを実現する.ステップ1:Springプロファイルにコメントを入れる
<aop:aspectj-autoproxy />
ステップ2:ログエージェントを書く@Before("pointCut()")
public void before(JoinPoint jp) {
//
String className = jp.getTarget().getClass().toString();
className = className.substring(className.indexOf("com"));
//
String signature = jp.getSignature().toString();
//
String methodName = signature.substring(signature.lastIndexOf(".") + 1,signature.indexOf("("));
//
Object[] args = jp.getArgs();
if (args != null) {
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "] =" + args[i]);
}
}
System.out.println(" " + className);
System.out.println(" " + signature);
System.out.println(" " + methodName);
}
第五に、事務管理
ステップ1:Springプロファイルを修正し、以下のコードを追加します.
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
主にデータベースsession Factoryと関連しています.第二ステップ:自動事務処理の注釈を追加する
<tx:annotation-driven transaction-manager="transactionManager" />
サービス層でSpring事務管理を必要とするクラスや方法に@Transation注釈を加えることで、データベース処理を行うと自動的にデータベースと一致します.今日はこれを書きます.また、Spring Aopはまだたくさんの応用があります.みんなで進歩して、いい使い方があって、一緒に進歩してほしいです.