小编kru*_*und的帖子

Hibernate验证"无法初始化javax.el.E​​xpressionFactory"错误

我正在尝试使用hibernate验证,代码编译,但在启动时失败并出现错误: Exception in thread "main" javax.validation.ValidationException: HV000183: Unable to initialize 'javax.el.ExpressionFactory'. Check that you have the EL dependencies on the classpath, or use ParameterMessageInterpolator instead

码:

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

public class Run {
    public static void main(String[] args) {    
    User u = new User();
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator v = factory.getValidator();
    Set<ConstraintViolation<User>> result = v.validate(u);
    System.out.println(result.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

用户类:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;

public class User …
Run Code Online (Sandbox Code Playgroud)

dependencies hibernate-validator

7
推荐指数
1
解决办法
2万
查看次数

为什么自调用不适用于 Spring 代理(例如使用 AOP)?

请解释一下,为什么在目标上执行代理上的自调用而不是代理?如果是故意的,那又是为什么呢?如果通过子类创建代理,则可以在每次方法调用之前执行一些代码,即使在自调用时也是如此。我试过了,我有自我调用的代理

public class DummyPrinter {
    public void print1() {
        System.out.println("print1");
    }

    public void print2() {
        System.out.println("print2");
    }

    public void printBoth() {
        print1();
        print2();
    }
}
Run Code Online (Sandbox Code Playgroud)
public class PrinterProxy extends DummyPrinter {
    @Override
    public void print1() {
        System.out.println("Before print1");
        super.print1();
    }

    @Override
    public void print2() {
        System.out.println("Before print2");
        super.print2();
    }

    @Override
    public void printBoth() {
        System.out.println("Before print both");
        super.printBoth();
    }
}
Run Code Online (Sandbox Code Playgroud)
public class Main {
    public static void main(String[] args) {
        DummyPrinter p = new PrinterProxy();
        p.printBoth();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Before …
Run Code Online (Sandbox Code Playgroud)

proxy spring spring-aop

7
推荐指数
1
解决办法
2180
查看次数