Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将AOP建议应用于ConstraintValidator<;A、 T>;春天?_Java_Spring_Spring Aop_Hibernate Validator_Bean Validation - Fatal编程技术网

Java 如何将AOP建议应用于ConstraintValidator<;A、 T>;春天?

Java 如何将AOP建议应用于ConstraintValidator<;A、 T>;春天?,java,spring,spring-aop,hibernate-validator,bean-validation,Java,Spring,Spring Aop,Hibernate Validator,Bean Validation,我正试图在Spring3.0.x下编写自己的验证器(根据JSR-303规范) 我用@Transactional注释了isValid(Serializable,CosntraintValidatorContext)方法,但似乎没有将事务性建议应用于此方法-调用isValid()方法时,调用sessionFactory.getCurrentSession()会创建异常: hibernate.HibernateException:没有绑定到线程的hibernate会话,并且配置不允许在此创建非事务会话

我正试图在Spring3.0.x下编写自己的
验证器
(根据JSR-303规范)

我用
@Transactional
注释了
isValid(Serializable,CosntraintValidatorContext)
方法,但似乎没有将事务性建议应用于此方法-调用
isValid()
方法时,调用
sessionFactory.getCurrentSession()
会创建异常:

hibernate.HibernateException:没有绑定到线程的hibernate会话,并且配置不允许在此创建非事务会话

我在同一个
验证器
bean中有一个
@Autowired
sessionFactory
,注入时没有问题。我目前的解决方法是使用
openSession()
而不是
getCurrentSession()
,但这涉及到手动事务管理,我希望避免这种情况

在我的验证程序bean的构造函数中进行堆栈跟踪时,我的
验证程序
bean似乎是通过调用
o.s.b.f.s.AbstractAutowireCapableBeanFactory.createBean()来构造的。我假设这意味着工厂能够在我的
验证器中填充
@Autowired
字段,但它似乎没有应用任何事务性建议

提前感谢您对此事的帮助

编辑:如果有任何帮助,我已经包含了一个部分堆栈跟踪(通过
createnewexception()
)记录在构造函数中:

at com.mydomain.validators.UniqueValidator.<init>(UniqueValidator.java:49) ~[UniqueValidator.class:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [na:1.6.0_20]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [na:1.6.0_20]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [na:1.6.0_20]
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [na:1.6.0_20]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:74) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:286) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.validation.beanvalidation.SpringConstraintValidatorFactory.getInstance(SpringConstraintValidatorFactory.java:50) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.hibernate.validator.engine.ConstraintTree.createAndInitializeValidator(ConstraintTree.java:192) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.hibernate.validator.engine.ConstraintTree.getInitializedValidator(ConstraintTree.java:171) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:113) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.hibernate.validator.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:121) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:334) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForRedefinedDefaultGroup(ValidatorImpl.java:278) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:260) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:213) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:119) [hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:86) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.validation.DataBinder.validate(DataBinder.java:692) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:807) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) [spring-webmvc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) [spring-webmvc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
在com.mydomain.validators.UniqueValidator.(UniqueValidator.java:49)~[UniqueValidator.class:na]
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)[na:1.6.0\u 20]
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)[na:1.6.0\u 20]
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)[na:1.6.020]
在java.lang.reflect.Constructor.newInstance(Constructor.java:513)[na:1.6.0_20]
在org.springframework.beans.BeanUtils.instanceClass(BeanUtils.java:126)[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.beans.factory.support.simpleinstationstrategy.instantiate(simpleinstationstrategy.java:74)[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceBean(AbstractAutowireCapableBeanFactory.java:958)[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:286)[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.validation.beanvalidation.SpringConstraintValidatorFactory.getInstance(SpringConstraintValidatorFactory.java:50)[spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
在org.hibernate.validator.engine.ConstraintTree.createAndInitializeValidator(ConstraintTree.java:192)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.hibernate.validator.engine.ConstraintTree.getInitializedValidator(ConstraintTree.java:171)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:113)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.hibernate.validator.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:121)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.hibernate.validator.engine.validateImpl.validateConstraint(validateImpl.java:334)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.hibernate.validator.engine.validateImpl.validateConstraintsForRedefinedDefaultGroup(validateImpl.java:278)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.hibernate.validator.engine.validateImpl.validateConstraintsForCurrentGroup(validateImpl.java:260)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.hibernate.validator.engine.validateImpl.validateInContext(validateImpl.java:213)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:119)[hibernate-validator-4.0.2.GA.jar:4.0.2.GA]
在org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:86)[spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
在org.springframework.validation.DataBinder.validate(DataBinder.java:692)[spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:807)[spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359)[spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)[spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)[spring-webmvc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)[spring-webmvc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
事务性配置似乎不可用
<tx:annotation-driven/>