首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Spring AOP的服务中注入相同的服务实例的最佳方式是什么

在Spring AOP的服务中注入相同的服务实例的最佳方式是什么
EN

Stack Overflow用户
提问于 2011-02-23 20:53:37
回答 2查看 1.2K关注 0票数 3

我的一个ServiceImpl用Spring的@Service构造型进行了注解,其中有两个方法,每个方法都用自定义注解注解,由Spring截获。

代码语言:javascript
运行
复制
@Service    
public class ServiceImpl implements Service{

       @CustomAnnotation
       public void method1(){
       ...
       }

       @AnotherCustomAnnotation
       public void method2(){
        this.method1();   
        ...
       }
    }
}

现在Spring使用基于代理的面向方面编程方法,因此当我使用@CustomAnnotation的this.method1()拦截器时,将无法拦截此调用,我们曾在另一个FactoryClass中注入此服务,通过这种方式,我们能够获得代理实例,如-

代码语言:javascript
运行
复制
  @AnotherCustomAnnotation
    public void method2(){
        someFactory.getService().method1();   
        ...
    }

我现在使用的是Spring3.0.x,获取代理实例的最佳方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-23 21:21:22

另一种选择是使用AspectJ和@Configurable。这几天春天似乎要来了。

如果你使用Spring3,我会研究一下它,因为它比基于代理的aop更快(性能)和更灵活。

票数 3
EN

Stack Overflow用户

发布于 2011-02-23 21:06:05

多亏了提供的bean工厂,您可以让ServiceImpl类实现BeanFactoryAware接口,并查找自身。但这不再是依赖注入了。

最好的解决方案是将method1放在另一个服务bean中,该服务bean将被注入到现有的服务bean中,并且将委托给现有的服务bean。

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

https://stackoverflow.com/questions/5091187

复制
相关文章

相似问题

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