gpt4 book ai didi

java - 如何为ProxyFactoryBean设置多个目标?

转载 作者:行者123 更新时间:2023-12-02 04:49:22 25 4
gpt4 key购买 nike

我正在使用 Spring 4 AOP,现在,我的 ProxyFactoryBean 配置如下:

@Bean
@Primary
public ProxyFactoryBean proxyFactoryBean() {
ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
proxyFactoryBean.setTarget(new ClientService());
proxyFactoryBean.addAdvice(new LoggingAdvice());
proxyFactoryBean.addAdvice(new DebugInterceptor());
return proxyFactoryBean;
}

这可行,但目标只是 ClientService 对象。

是否可以设定多个目标而不仅仅是一个?如果可能的话,我想将这些建议设置为整个包。否则,设定具体目标,但同样,不仅仅是一个目标。你怎么能做到这一点 ?提前致谢

最佳答案

使用 Spring 的 AutoProxy-Facility 可以最轻松地代理应用程序上下文中符合特定条件的所有 bean。 。唉,切入点 api 在基于 java 的配置中使用起来有点麻烦;我通常将 AbstractAutoProxyCreator 进行子类化这样我就可以用java代码表达切入点了。

例如,我会这样做:

@Bean
AbstractAutoProxyCreator autoProxyCreator() {
return new AbstractAutoProxyCreator() {
@Override
protected Object[] getAdvicesAndAdvisorsForBean(Class<?> beanClass, String beanName, TargetSource customTargetSource) {
if (BusinessService.class.isAssignableFrom(beanClass)) {
return new Object[] {loggingAdvice()};
} else {
return DO_NOT_PROXY;
}
}
};
}

@Bean
LoggingAdvice loggingAdvice() {
return new LoggingAdvice();
}

@Bean
public PersonService personService() {
return new PersonService();
}

此代码未经测试,因为我手头没有带有 Spring(或 Maven)的 IDE,但要点应该可以工作。

关于java - 如何为ProxyFactoryBean设置多个目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29375690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com