使用注释使用AspectJ的SpringAOP简介

我正在学习Introductions(在AspectJ中称为类型间声明)。我从使用XML的AspectJ的SpringAOP简介中得到了一个示例。我正在尝试使用注释复制相同内容,但我不知道如何进行。我在互联网上做了很多研究,但找不到任何样本。你能帮我这个忙吗?


PerformanceTest.class


@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(classes = ConcertConfig.class)

public class PerformanceTest {


    @Autowired

    public Audience audience;


    @Autowired

    public Performance liveOpera;


    @Autowired

    public EncoreableIntroducer encoreable;


    @Test

    public void testPerformance(){

        liveOpera.perform();

    }

}

LiveOpera.class


public class LiveOpera implements Performance{

    @Override

    public void perform() {

        System.out.println("Live Opera Performance Started");   

    }}

Encoreable.interface


public interface Encoreable {

    public void performEncore();

}

DefaultEncoreable.class


public class DefaultEncoreable implements Encoreable {

    @Override

    public void performEncore() {

        System.out.println("WoW!! What an encore performance!!");

    }

}

ConcertConfig.class


@Configuration

@EnableAspectJAutoProxy

@ComponentScan

public class ConcertConfig {


    @Bean

    public Audience audience(){

        return new Audience();

    }


    @Bean

    public LiveOpera opera(){

        return new LiveOpera();

    }


    @Bean

    public EncoreableIntroducer encoreable(){

        return new EncoreableIntroducer();

    }


}

性能界面


public interface Performance {

    public void perform();

}

EncoreableIntroducer.class


@Aspect

public class EncoreableIntroducer {

    @DeclareParents(value="com.example.introduction.Performance+",

            defaultImpl=DefaultEncoreable.class)

    public static Encoreable encoreable;

}

请让我知道,如何使用AspectJ-Introductions使用EncoreableIntroducer.class中的方面,以便可以使用DefaultEncoreable.class中的perform()方法?



噜噜哒
浏览 118回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java