使用AspectJ在java中进行声明性参数验证

时间:2014-07-03 07:56:31

标签: java validation annotations aspectj

是否有任何现有的库用于使用AspectJ进行声明性参数验证?

我现在正在使用的一些示例代码:

public void someFunction(Object first, Object second){
    condition(notEqual(first,second), "exception message");
    //...
}

condition()是抛出异常的唯一方法,所有其他验证方法都返回booleans ... somehting类似于spring或apache验证工具...

现在有了像AspectJ这样的技术,我想用注释删除所有类似代码的出现......就像这样:

@Validate({
      "not equal : first, second",
      "not null or empty : first"
})
public void someFunction(Object first, String second){
    //...
}

是否有任何方便的实现,或者我应该创建一个?

2 个答案:

答案 0 :(得分:1)

intellij有一个静态分析库

http://www.jetbrains.com/idea/webhelp/@contract-annotations.html

我不知道它是否是开源的(它可能是,它们的代码库的很大一部分是),以及你是否可以在你的建议中使用它,或者它是否值得(滚动你自己) )。

当然还有古老的javax.validation包,它是javaEE6 / 7的一部分。应该有很多开源实现。你应该能够注释实际的方法参数。你必须写自己的建议,但可以进行验证。

答案 1 :(得分:0)

实际上,因为我找不到任何接近我所描述的内容所以我自己写了并在github https://github.com/vach/valida上发布了,我会在我的域名上尽快将它发布到maven central repo上准备就绪。

现在可能想要尝试的人:

  1. this下载并解压缩到您当地的仓库
  2. 将依赖项添加到pom.xml

    <dependency>
        <groupId>com.vach</groupId>
        <artifactId>valida</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    
  3. 确保启用aspectj编织