当前位置: 首页 > 知识库问答 >
问题:

使用Spring AOP调用自定义注释

公西姚石
2023-03-14

我在网上搜索了一个关于如何使用Spring AOP调用自定义方法注释的清晰示例,但没有找到一个清晰的示例。

我正在构建一个框架,以便在调用任何POJO上的某些方法时在上下文中注入用户配置文件

框架API应该通过自定义方法注释调用,例如@RunAsAdmin。我可以构建注释部分和解析器,我的问题是在调用带注释的方法时调用我的解析器的最佳方式是什么。

我们正在使用Spring 3.0,想知道配置Spring框架以理解那些用特定注释注释的方法并调用我的注释处理程序(解析器)的最佳实践是什么。

任何示例或指导都将不胜感激。

共有1个答案

通鸿风
2023-03-14

拦截对任何带注释的SpringBean方法的调用非常简单,请参见下面的示例<根据定义,拦截POJO上的调用是不可能的-您必须返回一个代理<也就是说,您应该为这些POJO实现一个工厂,该工厂将返回代理,而不是真正的POJO。您可以使用ProxyFactoryBeanhttp://docs.spring.io/autorepo/docs/spring-framework/3.2.0.BUILD-SNAPSHOT/api/org/springframework/aop/framework/ProxyFactoryBean.html为了这个

//intercepting a call to any method annotated with @com.yours.RunAsAdmin of any Spring-managed bean
@Component @Aspect class RunAsAdminAspect {
    @Autowired 
    private YourRunAsAdminHandler handler;

    @Before("@annotation(com.yours.RunAsAdmin)")
    public void doRunAsAdmin() {
        handler.grantAdminRightsToCurrentUser(); //your real stuff
    } 
}
 类似资料:
  • 在我的Spring Boot项目中,我创建了一个自定义注释,其中validator扩展了ConstraintValidator,以验证RequestBody中的一些字段。注释对于非嵌套字段可以很好地工作,但对于嵌套字段不调用验证器。 我的注释如下所示: 我的验证类: 它在这样的情况下工作正常: 但是当放在嵌套对象上时,不会调用验证器: 类在我的中的用法: 关于如何解决这个问题有什么想法吗?我已经尝

  • 我发现了几个与此相关的(不是重复的)问题,但它们不能让我满意。 我无法理解在哪里以及为什么要使用? 我在一本书中读到了一个自定义注释的示例,但没有详细解释。 myMeth()内的输出与预期一致。 关于这个例子,我有几个问题。 1-如何在此程序中使用和?或

  • 我正在尝试使用Spring安全注释,如@PreAuthorize和@安全,但我希望评估用户不是在一个角色上,而是他们是否拥有对特定实体的权限,在这种情况下是一家公司。在我的控制器中,我收到一个超文本传输协议请求,其中包含一个firmId作为参数,我想确保这个用户被允许进入这家公司。是否可以使用当前的Spring安全注释?。我正在寻找一个优雅的解决方案,我一直在寻找自定义约束验证器作为jsr303规

  • 目前,我将辅助注射与命名参数一起使用,如下所示: 这很棒。但是我认为使用字符串作为参数的标识符有点难看。我想做的是以下内容: 所以本质上我想要自定义辅助注释。有办法做到这一点吗?

  • $this->db->call_function(); 这个方法用于执行一些 CodeIgniter 中没有定义的 PHP 数据库函数,而且 使用了一种平台独立的方式。举个例子,假设你要调用 mysql_get_client_info() 函数,这个函数 CodeIgniter 并不是原生支持的,你可以这样做: $this->db->call_function('get_client_info')

  • 我正在测试DynamoDB表,希望使用关键字“dev”为prod和dev环境设置不同的表名,用于开发,用于生产。 我有一个POJO 在Prod上,我希望它的名字是abc_xy_Prod_MyProjectName_Employee。 所以,我写了一个TableNameResolver 这是通过创建一个名为abc_xy_prod_MyProjectName_Employee in productio