I'm creating a framework, it automatically creates proxy for special interface by "org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator".
There is another framework, it can create the auto proxy for the same interface by the same technology too.
If the user use both of them, I hope the priority of my interceptor is lower. Howerver, all the AutoProxyCreator use the same order: "org.springframework.core.Ordered.LOWEST_PRECEDENCE", so it's impossible to specify the lower order such as "Ordered.LOWEST_PRECEDENCE + 1" for my auto proxy creator.
I tried to use this ugly solution
@Component
class MyAutoProxyCreator(
// spring consider the "?" of kotlin type as optional dependency
otherAutoProxyCreator: OtherAutoProxyCreator?
): AbstractAutoProxyCreator() {
init {
otherAutoProxyCreator?.let {
// Improve the order of another auto proxy creator if it exists
it.order = order - 1
}
}
override fun getAdvicesAndAdvisorsForBean(
beanClass: Class<*>,
beanName: String,
customTargetSource: TargetSource?
): Array<Any> = TODO()
}
This works, but it's really ungly, and I don't know whether it has some side effects.
Is there any better solution, such as "declare precedence" of aspectj?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…