Solon2 常用注解之 @ProxyComponent 用法说明

这篇具有很好参考价值的文章主要介绍了Solon2 常用注解之 @ProxyComponent 用法说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

  • 普通组件
  • 代理组件(即 @ProxyComponent 注解的类)。代理的细节可以看下《动态代理的本质》 。

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

如何使用 @ProxyComponent 注解?

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

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

@ProxyComponent
public class UserService{
    //...
}

@ProxyComponent
public class UserDao{
    //...
}

@ProxyComponent
public class UserRepository{
    //...
}

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

2、从技术的角度使用

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

//这个类,虽然也叫 Service,但是函数没有使用“用于拦截的注解”就使用普通组件注解即可。
@Component
public class ToolService{
    public bool isEmpty(String str){
        return str=null || str.length()==0;
    }
}

//这个类,使用了“用于拦截的注解”,需要使用 "@ProxyComponent"(在函数上加注解,基本上都是拦截目的)
@ProxyComponent
public class UserService{
    @Tran
    public void addUser(UserDo user){
        //...
    }
}

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

3、补充

为什么 “@Controller、@Remoting” 不是动态代理类,也支持函数拦截?因为它们的 Method 被提取并包装成了 MethodWrap。而,所有的函数拦截最终都是由 MethodWrap 执行。文章来源地址https://www.toymoban.com/news/detail-418125.html

到了这里,关于Solon2 常用注解之 @ProxyComponent 用法说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaEE进阶】SpringMVC中的常用注解和用法

    目录 学习Spring MVC 建立连接 @RequestMapping 注解介绍 @RequestMapping 使用 传参介绍 传递单个参数 传递多个参数 传递对象 后端参数重命名(后端参数映射)@RequestParam 非必传参数设置 传递数组 传递集合 传递JSON数据 获取URL中参数@PathVariable 上传文件@RequestPart 获取Cookie/Session 响应

    2024年04月14日
    浏览(86)
  • springboot 集成 Swagger2 配置以及常用注解的说明和使用 ( 超详细)

    一、注解的使用 和 说明 结构化说明如下: @Api:用在请求的类上,表示对类的说明      tags=\\\"说明该类的作用,可以在UI界面上看到的注解\\\"    (也就是给类取别名)     value=\\\"该参数没什么意义,在UI界面上也看到,所以不需要配置\\\"    @ApiOperation:用在请求的方法上,说

    2024年02月03日
    浏览(47)
  • SpringBoot框架——8.MybatisPlus常见用法(常用注解+内置方法+分页查询)

    1.MybatisPlus常用注解:         1.1 当数据库、表名和字段名和实体类完全一致时无需加注解,不一致时:         @TableName指定库名         @TableId指定表名         @TableField指定字段名         1.2 自增主键:         @TableId(type=IdType.AUTO)         private Long id;        

    2024年04月26日
    浏览(41)
  • @Lazy注解使用说明

    在Spring框架中,@Lazy注解是一个重要的注解,用于控制bean的延迟加载。本文将详细介绍@Lazy注解的作用和使用场景,并提供示例以便更好地理解其用法。 作用 @Lazy注解主要用于控制Spring容器中的bean的加载时机。默认情况下,Spring容器在启动时会初始化所有的bean,这可能会导

    2024年02月06日
    浏览(47)
  • Mybatis拦截器注解@Intercepts与@Signature注解属性说明

    可能有些新手使用mybatis拦截器的时候可能没太懂@Signature注解中type,method,args的用法 首先mybatis拦截器可以拦截如下4中类型 Executor sql的内部执行器 ParameterHandler 拦截参数的处理 StatementHandler 拦截sql的构建 ResultSetHandler 拦截结果的处理 type:就是指定拦截器类型(ParameterHandl

    2024年02月05日
    浏览(46)
  • Springboot @Validated注解详细说明

    在Spring Boot中,@Validated注解用于验证请求参数。它可以应用在Controller类或方法上 1、引入依赖 2、参数说明与使用示例 注解 验证的数据类型 描述 @NotNull 任意类型 验证属性不能为null @NotBlank 字符串 验证字符串属性不能为空且长度必须大于0 @Size(min,max ) CharSequence Collection Map

    2024年02月14日
    浏览(38)
  • SpringMVC中@RequestMapping注解的详细说明

    @RequestMapping 是Spring MVC中一个用于映射HTTP请求和控制器方法之间关系的注解。它用于定义控制器方法如何响应特定的HTTP请求,包括GET、POST、PUT、DELETE等。以下是 @RequestMapping 注解的详细说明: 基本用法: @RequestMapping 用于注解一个控制器方法,指定该方法应该处理的请求路径

    2024年02月07日
    浏览(43)
  • @SpringBootApplication注解说明(InsCode AI 创作助手)

    @SpringBootApplication 是 Spring Boot 中的一个关键注解,用于标识一个类是 Spring Boot 应用程序的主应用程序类。在这篇文章中,我们将详细解释 @SpringBootApplication 注解以及它在 Spring Boot 应用程序中的作用。 @SpringBootApplication 注解是 Spring Boot 中的一个复合注解,它包含了以下三个重

    2024年02月07日
    浏览(80)
  • 注解@RestControllerAdvice用法途

    @RestControllerAdvice 是一个组合注解,由 @ControllerAdvice 、 @ResponseBody 组成,而 @ControllerAdvice 继承了@Component,因此 @RestControllerAdvice 本质上是个 Component ,用于定义 @ExceptionHandler , @InitBinder 和 @ModelAttribute 方法,适用于所有使用 @RequestMapping 方法。 通过 @ControllerAdvice 注解可以将对

    2024年02月07日
    浏览(39)
  • @Nullable 注解的详细用法

    最近发现之前写的代码生成器(entity、dao、service、controller、vue) 有点bug,在Service层判断空的时候,少了一部分条件。所以补充上了,随后又同事问我在代码中发下了@Nullable注解不知道怎么用?脑子是个好东西,可以审核没带啊!哪有广告? 起初,以为这么简单的一个常用

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包