首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringAOP与AspectJ的介绍

SpringAOP与AspectJ的介绍
EN

Stack Overflow用户
提问于 2013-06-18 18:25:06
回答 1查看 602关注 0票数 4

我是SpringAOP的新手。我想编写介绍的简单示例,但不清楚它是如何工作的。

在文件中,我发现:

http://static.springsource.org/spring/docs/3.0.x/reference/aop.html

我写了一个简单的例子:我用一个方法编写简单的类。

代码语言:javascript
复制
public class Test {
    public void test1(){
        System.out.println("Test1");
    }
}

然后编写实现此接口的接口和类。

代码语言:javascript
复制
public interface ITest2 {
    void test2();
}

public class Test2Impl implements ITest2{
    @Override
    public void test2() {
        System.out.println("Test2");
    }
}

最后是我的面容

代码语言:javascript
复制
@Aspect
public class AspectClass {

    @DeclareParents(
            value = "by.bulgak.test.Test+",
            defaultImpl = Test2Impl.class
    )
    public static ITest2 test2;
}

我的spring配置文件如下所示:

代码语言:javascript
复制
<aop:aspectj-autoproxy/>
<bean id="aspect" class="by.bulgak.aspect.AspectClass" />

所以我的问题是:我现在该怎么做?我需要写什么在我的主课到海上的结果?也许我需要写一些其他的类。(在我读过的关于SpringAOP的书中,我找不到完整的例子)。

更新

我的主要方法如下:

代码语言:javascript
复制
public static void main(String[] args) {
    ApplicationContext appContext = new ClassPathXmlApplicationContext("spring-configuration.xml");
    Test test = (Test) appContext.getBean("test");
    test.test1();
    ITest2 test2 = (ITest2) appContext.getBean("test");
    test2.test2();

}

当我执行我的应用程序时,我会得到以下错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy5 cannot be cast to by.bulgak.test.Test

在这一行:

代码语言:javascript
复制
Test test = (Test) appContext.getBean("test");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-18 18:36:29

首先,您需要在配置文件中定义bean Test

代码语言:javascript
复制
<bean id="test" class="Test" />

然后,主要是从ApplicationContext获取这个bean

代码语言:javascript
复制
Test test1 = (Test) context.getBean("test");

现在,从test1引用中,您只能调用Test bean中定义的方法。要使用新引入的行为,需要键入对包含该行为的接口的引用:

代码语言:javascript
复制
ITest2 test2 = (ITest2) context.getBean("test");

然后,您可以从此引用访问Test2方法:

代码语言:javascript
复制
test2.test2();

这将调用在bean中定义的方法,如defaultImpl注释的@DeclareParents属性中指定的那样。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17176169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档