0

要するに:

a) spring.xml

<aop:aspectj-autoproxy />

<bean id="circle" class="org.tutorial.spring.model.Circle">
    <property name="name" value="Circle name" />
</bean>

<bean id="triangle" class="org.tutorial.spring.model.Triangle">
    <property name="name" value="Triangle name" />
</bean>

<bean id="shapeService" class="org.tutorial.spring.service.ShapeService" autowire="byName" />

<bean class=" org.tutorial.spring.aspect.LoggingAspect" />

b) ShapeService クラス

package org.tutorial.spring.service;

import org.tutorial.spring.model.Circle;

public class ShapeService {

private Triangle triangle;
private Circle circle;

public Triangle getTriangle() {
    return triangle;
}

public void setTriangle(Triangle triangle) {
    this.triangle = triangle;
}

public Circle getCircle() {
    return circle;
}

public void setCircle(Circle circle) {
    this.circle = circle;
}

}

c) サークルクラス

package org.tutorial.spring.model;

public class Circle {

private String name;

public String getName() {
    System.out.println("Circle getName");
    return name;
}

public void setName(String name) {
    System.out.println("Circle setName");
    this.name = name;
}

}

d) LoggingAspect クラス

@Aspect
public class LoggingAspect {

@Before("allCircleMethods()")
public void securityAdvice() {
    System.out.println("Security Advice is executed!");
}

@Pointcut("within(org.tutorial.spring.model.Circle)")
public void allCircleMethods() {
}

}

e) ShapeAOP クラス (実行するメイン クラス)

public class ShapeAOP {

public static void main(String[] args) {
    ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
    ShapeService shapeService = ctx.getBean("shapeService", ShapeService.class);
    System.out.println(shapeService.getCircle().getName());
}

}

出力:

サークル setName
セキュリティ アドバイスが実行されました!
Circle getName
サークル名

サークル Bean のインスタンス化中に、「サークル setName」の前に「セキュリティ アドバイスが実行されました」という出力がないことに注意してください。

Circle クラスのポイントカットが Circle setName メソッドに適用されなかったのはなぜですか?

4

1 に答える 1

0

ユーザー pap がコメント セクションで私の質問に回答しました

于 2013-02-19T19:58:17.043 に答える