[Spring]Spring AOP学習ノート(1)
4066 ワード
Spring AOP学習ノート(1)
以前はAOPの概念について少し知っていましたが、あるいは理論的な観点からこの概念を考えただけです.最近Springを勉強しています.実践してみました.
いずれにしても、AOPは、面を向いてプログラミングし、その最大の利点は、業務ロジックをより簡単に明瞭にし、一定の冗長性を減らすことである.
簡単な例では、どのような問題を最適化するためにAOPを見てください.
これに対してSpring AOPを導入しました.
接麺類を追加します.
でいいです.
デバッグ中のError
Springフロント通知エラー:error:
Pointcut is mal formed:Pointcut is not well-formed:….
エラーの原因:
@before(value=")のvalueの値が間違っています.
Spring大神さんのご叱正を歓迎します.
以前はAOPの概念について少し知っていましたが、あるいは理論的な観点からこの概念を考えただけです.最近Springを勉強しています.実践してみました.
いずれにしても、AOPは、面を向いてプログラミングし、その最大の利点は、業務ロジックをより簡単に明瞭にし、一定の冗長性を減らすことである.
簡単な例では、どのような問題を最適化するためにAOPを見てください.
package com.spring.aop.test1;
public interface jisuan {
public int add(int i,int j);
public int mul(int i,int j);
public int sub(int i,int j);
public int div(int i,int j);
}
package com.spring.aop.test1;
import org.springframework.stereotype.Component;
@Component(value="sss")
public class jisuanimpl implements jisuan {
@Override
public int add(int i, int j) {
// TODO Auto-generated method stub
int result = i+j;
System.out.println(result);
return result;
}
@Override
public int mul(int i, int j) {
// TODO Auto-generated method stub
int result = i*j;
System.out.println(result);
return result;
}
@Override
public int sub(int i, int j) {
// TODO Auto-generated method stub
int result = i-j;
System.out.println(result);
return result;
}
@Override
public int div(int i, int j) {
// TODO Auto-generated method stub
int result = i/j;
System.out.println(result);
return result;
}
}
package com.spring.aop.test1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-aop.xml");
jisuan js = (jisuan) ctx.getBean("sss");
int res=js.add(4, 3);
js.mul(3,4);
}
}
Springプロファイルの情報は以下の通りです.<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="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-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
<context:component-scan base-package="com.spring.aop.test1"></context:component-scan>
</beans>
現在はビジネスロジックを出していますが、他に追加の内容はありません.しかし、開発者は計算前と計算後に情報を提供する必要があります. public int add(int i, int j) {
// TODO Auto-generated method stub
System.out.println("add is begin..");//mul,sub,div ,(1)
int result = i+j;
System.out.println(result);
System.out.println("add is over..");// (2)
return result;
}
上のコードの(1)(2)は修正が必要であれば、多くの修正が必要です.div、mull、subはこのような操作をする必要があるので、このようなコードは2つの問題があります.第二に、ビジネスロジックがはっきりしていません.これに対してSpring AOPを導入しました.
接麺類を追加します.
package com.spring.aop.test1;
import java.util.Arrays;
import java.util.List;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class testAspect {
@Before("execution(public int com.spring.aop.test1.jisuan.*(int,int))")
public void beforeMethod(JoinPoint joinpoint){
Object name = joinpoint.getSignature().getName();
Object[] list = joinpoint.getArgs();
System.out.println("before.."+name+":"+Arrays.asList(list));
}
// After, Before
@After("execution(public int com.spring.aop.test1.jisuan.*(int,int))")
public void afterMethod(){
System.out.println("after..");
}
}
設定ファイルに追加:デバッグ中のError
Springフロント通知エラー:error:
Pointcut is mal formed:Pointcut is not well-formed:….
エラーの原因:
@before(value=")のvalueの値が間違っています.
Spring大神さんのご叱正を歓迎します.