将动态代理应用于应用程序中的所有类
我想将我创建的动态代理应用到属于我的应用程序的所有类。但是,我也希望能够使用依赖注入(Spring)而不是编写类似 MyDynamicProxy.newInstance(new Account()); 的内容。
newInstance 的位置:
public static Object newInstance(Object object) {
return Proxy.newProxyInstance(object.getClass().getClassLoader(),object.getClass().getInterfaces(),new LoggingProxy(object));
}
如何将依赖注入和动态代理应用于应用程序中的所有类?
I want to apply the Dynamic Proxy I created to all the classes that are part of my application. But, I also want to be able to use dependency injection (Spring) instead of writing something like MyDynamicProxy.newInstance(new Account());
Where newInstance is:
public static Object newInstance(Object object) {
return Proxy.newProxyInstance(object.getClass().getClassLoader(),object.getClass().getInterfaces(),new LoggingProxy(object));
}
How can I apply Dependency Injection and Dynamic Proxy to all the classes in my application?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以尝试使用 org.springframework.beans.factory.config.BeanPostProcessor.postProcessAfterInitialization(Object, String) 并返回代理实例而不是原始 bean。
注意,如果您只是记录日志,那么使用 Spring 的 AOP 支持可能会更简单,这将允许您在所有 Spring 托管 bean 上定义一个简单的日志记录方面。
You could try using
org.springframework.beans.factory.config.BeanPostProcessor.postProcessAfterInitialization(Object, String)
and returning your proxy instance instead of the original bean.NB if it's just logging you're after, it might be simpler to look into using Spring's AOP support which will allow you to define a simple logging aspect on all Spring managed beans.
不要手动创建代理,请使用 Spring AOP 创建您的日志代理。
创建一个简单的方面:
现在在 Spring 中连接方面:
现在所有 Spring Bean 将成为代理,并且它们的所有方法执行(至少是由接口支持的方法执行)都将被记录。
Don't create your proxies manually, use Spring AOP to create your Logging Proxy.
Create a simple Aspect:
Now wire the aspect in Spring:
Now all your Spring Beans will be proxies and all of their method executions (at leaast those backed by an interface) will be logged.