AspectJ+Springプログラミング(オリジナル)


多くのネット上の文章がSpring Aopといえば、一つの方法を描いています.Springが提供する動的エージェントインタフェースを用いて,接面プログラミングを実現する.springでAopを使うにはSpringのダイナミックエージェントインタフェースを使わないようです.Springは本当に幸せで、こんなに多くの人が彼のダイナミックエージェントのために広告をしています.実はAopは独立した技術で、Springで実現することができて、彼の外でも実現することができて、他のどこでも実現することができます.Springが提供する動的エージェントは、その中の1つの選択にすぎません.Spring以外のaopテクノロジーとは独立した、より柔軟で拡張性があり、互換性も優れています.Eclipseに詳しい人は、EclipseにAspectjというプラグインがあることを知っているはずです.このプラグインは、Aspectjのコードを作成してコンパイルするのに便利です.私たちはこの機能をSpringフレームワークと結びつけなければなりません.
まず簡単なSpring mvcのフレームワークを構築することから始め,このフレームワークで断面プログラミングを行います.この単純なフレームワークの流れは、home-servlet->HelloC->helloV
次に、このmvcプロセスの構築手順を簡単に説明します.
1、プロジェクトの作成:dynamic web projectを作成し、名前はTestWebと呼びましょう.
2、web.xmlにSpring Listenerとhome-servletをロードします.
    
   <context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>home</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>home</servlet-name>
		<url-pattern>/home/*</url-pattern>
	</servlet-mapping>

3、home-servletを作成する.xml、コード:
<?xml version="1.0" encoding="UTF-8"?>
<beans
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"
	xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context">
  <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
  </bean>
  <context:component-scan base-package="web"/>
</beans>

4、webを作成する.HelloCクラス、コード:
package web;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestC {
	@RequestMapping("/hello")
	public String helloHandler(Model model) {
		return "hello";
	}
	

}

5、helloを作成する.jsp、これはどんなコードを使ってもいいです.jspファイルであればいいです.正しいパスに置いてください.ここは/WEB-INF/viewsの下に置いてください.
テストしてみてください.あなたのプロセスは動作するはずです.
6、このプロセスにAopコードを追加します.私たちはwebにいます.HelloC.helloHandlerに強化を加えます.その前に、プロジェクト変換をAspectjにサポートします.右クリック項目選択Aspectj Tools->Convert to Aspectj Project.
7、今はカットにコードを書いて、Aopを作ります.TestAspectクラス.コード:
package aop;

public aspect TestAspect {
	pointcut hello():execution(* web.TestC.helloHandler(..));
	before():hello(){
		System.out.println("Before say hello!!!");
	}
}

8、今からプロジェクトを実行して、あなたが/TestWeb/home/helloにアクセスするたびに、あなたのconsoleには「Before say hello!!」があることに気づきました.を行ないます.なぜなら、home-servlet->HelloC->helloC->helloVというプロセスのHelloCのhelloHandler関数の前に、7の簡単な数行のコードである強化を加えたからです.次のことは、Aspectjの文法を熟知することです.このプロジェクトはSpring環境でAopだけでなく、javaプロジェクトでもAopができます.あなたがしなければならないのは
右クリック項目選択Aspectj Tools->Convert to Aspectj Project.