经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
Solon2 常用注解之 @ProxyComponent 用法说明
来源:cnblogs  作者:带刺的坐椅  时间:2023/4/19 9:02:00  对本文有异议

在 Solon 提倡“克制”的原则下,托管组件分为:

之所以需要代理,是为了能拦截函数;之所以需要拦截函数,是为了让函数上的注解生效。也算是 AOP 的基础。(如果没有拦截需求,改用 @Component)

如何使用 @ProxyComponent 注解?

1、从替代的角度、或语义的角度使用

原来使用 @Service、@Dao、@Repository 这三个注解的,或者有这三种语义的类,都用 “@ProxyComponent” 注解。这些类经常会用到事务、或者缓存注解,就会需要函数拦截。使用示例:

  1. @ProxyComponent
  2. public class UserService{
  3. //...
  4. }
  5. @ProxyComponent
  6. public class UserDao{
  7. //...
  8. }
  9. @ProxyComponent
  10. public class UserRepository{
  11. //...
  12. }

从团队执行规范的管理角度,这个方式比较好,简单:语义对上,就用。

2、从技术的角度使用

如果一个类的函数上,使用了“用于拦截的注解”,则使用 “@ProxyComponent” ;如果没有,则使用 “@Component”。比如:

  1. //这个类,虽然也叫 Service,但是函数没有使用“用于拦截的注解”就使用普通组件注解即可。
  2. @Component
  3. public class ToolService{
  4. public bool isEmpty(String str){
  5. return str=null || str.length()==0;
  6. }
  7. }
  8. //这个类,使用了“用于拦截的注解”,需要使用 "@ProxyComponent"(在函数上加注解,基本上都是拦截目的)
  9. @ProxyComponent
  10. public class UserService{
  11. @Tran
  12. public void addUser(UserDo user){
  13. //...
  14. }
  15. }

从高性能与克制角度,这个方式好。但团队的话,因人员素质差异,可能不好把控细节。

3、补充

为什么 “@Controller、@Remoting” 不是动态代理类,也支持函数拦截?因为它们的 Method 被提取并包装成了 MethodWrap。而,所有的函数拦截最终都是由 MethodWrap 执行。

原文链接:https://www.cnblogs.com/noear/p/17331940.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号