Java 是否可以使用BeanValidation为方法验证的接口添加注释?
我在学习JavaEE7的项目中使用了以下结构: 豆子: 接口:Java 是否可以使用BeanValidation为方法验证的接口添加注释?,java,bean-validation,wildfly-8,java-ee-7,Java,Bean Validation,Wildfly 8,Java Ee 7,我在学习JavaEE7的项目中使用了以下结构: 豆子: 接口: public interface MyInterface { public String lookup(@NotNull String text); } 还有第二个bean: public class HelloWorld { @Inject private MyInterface bean; public String getMessage() { return bean.lookup
public interface MyInterface {
public String lookup(@NotNull String text);
}
还有第二个bean:
public class HelloWorld {
@Inject
private MyInterface bean;
public String getMessage() {
return bean.lookup(null);
}
}
我的服务器是WildFly 8.2
我希望在调用lookup方法时对其进行验证,因此我对参数进行了注释,使其不接受null
问题是,当我调用HelloWorld.getMessages()时,该代码运行正常(我得到返回值“found3”)
如果我将验证表单MyInterface复制到MyBean,我会得到我想要的validaiton异常
可以在接口中声明验证吗?我该怎么做?好的,这就是答案。你能把它转换成一个答案,这样我就可以标记它吗?事实上,我认为还有更多。根据Bean验证规范,正确的方法是注释接口。另请参见。由于Liskov替换原理,我我们甚至可以预期,在MyBean方法中对参数设置约束会引发配置异常。中建议的注释继承在这里不起作用。奇怪……这意味着我上面的代码应该可以工作……如果我将接口更改为抽象类,它就可以工作,因此“基础结构”可以正在正常工作。检查bean时,我能够检查注释是否不存在。关于如何解决这个问题,我有什么想法吗?顺便说一句:我在注释实现类时没有异常。不,这对我来说似乎很奇怪。没有更多上下文,很难判断出哪里出了问题。也许你可以提取一个测试用例并在这里报告它-
public class HelloWorld {
@Inject
private MyInterface bean;
public String getMessage() {
return bean.lookup(null);
}
}