有没有办法用 guice 注入最后一堂课?

发布于 2024-09-11 00:16:27 字数 281 浏览 8 评论 0原文

我有一个提供程序,应该将 javax.mail.Session (提供程序在 tomcat 的环境上下文中查找它)作为单例注入。当我在代码中的某处使用字段注入时出现问题:

java.lang.IllegalArgumentException: Cannot subclass final class class javax.mail.Session

有没有办法解决这个问题?我发现的唯一线索指向 Spring AOP/Proxies。

谢谢&&问候

I have provider which should inject javax.mail.Session (provider looks it up in env. context of tomcat) as singleton. There is a problem when I use field injection somewhere in code:

java.lang.IllegalArgumentException: Cannot subclass final class class javax.mail.Session

Is there a way to go round this? Only clues that I've found point to Spring AOP/Proxies.

Thanks && regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

养猫人 2024-09-18 00:16:27

看看这个 http://code.google.com/p/google-guice /wiki/AOP。似乎有一些限制:

限制

在幕后,方法拦截是通过生成来实现的
运行时的字节码。 Guice 动态创建一个适用的子类
通过覆盖方法拦截器。如果您所在的平台
不支持字节码生成(例如Android),你应该使用
Guice 没有 AOP 支持。

这种方法对类和方法的范围施加了限制
拦截:

类必须是公共的或包私有的。课程必须是非最终课程
方法必须是公共的、包私有的或受保护的方法必须是
非最终实例必须由 Guice 通过 @Inject 注释创建
或无参构造函数

Look at this http://code.google.com/p/google-guice/wiki/AOP. It seems that there is some limitations:

Limitations

Behind the scenes, method interception is implemented by generating
bytecode at runtime. Guice dynamically creates a subclass that applies
interceptors by overriding methods. If you are on a platform that
doesn't support bytecode generation (such as Android), you should use
Guice without AOP support.

This approach imposes limits on what classes and methods can be
intercepted:

Classes must be public or package-private. Classes must be non-final
Methods must be public, package-private or protected Methods must be
non-final Instances must be created by Guice by an @Inject-annotated
or no-argument constructor

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文