spring - How to inject(@Autowired) @Service into ConstraintValidator? -


i having userservice makes operations on user entity. created own annotation , constraintvalidator class implementation

i need have userservice injected constraintvalidator. and, spring docs says, after registering bean:

<bean id="validator" class="org.springframework.validation.beanvalidation.localvalidatorfactorybean"/> 

springconstraingvalidatorfactory registered default can @autowired service it. (source: http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/validation.html#validation-beanvalidation-spring-constraints)

unfortunatelly doesnt work me. recieve stacktrace nullpointerexception on field (inside class implements constraintvalidator):

@autowired private userservice userservice; //here 

and on call service

@override public boolean isvalid(string username, constraintvalidatorcontext constraintvalidatorcontext) {     personservice.dosomethingwithservice(); //here     return true; } 

so means, userservice not injected properly. have tried use applicationcontextaware - implement in constraintvalidator class, context , find bean:

(userservice) context.getbean("userservice"); 

but didnt help.. have no idea what's wrong code. , finally, stacktrace, contains lot of exceptions, including nullpointer , rollbackexception.

java.lang.nullpointerexception     com.reportme.model.validation.usernameavailablevalidator.isvalid(usernameavailablevalidator.java:20)     com.reportme.model.validation.usernameavailablevalidator.isvalid(usernameavailablevalidator.java:9)     org.hibernate.validator.internal.engine.constrainttree.validatesingleconstraint(constrainttree.java:308)     org.hibernate.validator.internal.engine.constrainttree.validateconstraints(constrainttree.java:180)     org.hibernate.validator.internal.engine.constrainttree.validateconstraints(constrainttree.java:124)     org.hibernate.validator.internal.metadata.core.metaconstraint.validateconstraint(metaconstraint.java:85)     org.hibernate.validator.internal.engine.validatorimpl.validateconstraint(validatorimpl.java:463) //...  org.springframework.transaction.transactionsystemexception: not commit jpa transaction; nested exception javax.persistence.rollbackexception: error while committing transaction     org.springframework.orm.jpa.jpatransactionmanager.docommit(jpatransactionmanager.java:526)     org.springframework.transaction.support.abstractplatformtransactionmanager.processcommit(abstractplatformtransactionmanager.java:757)     org.springframework.transaction.support.abstractplatformtransactionmanager.commit(abstractplatformtransactionmanager.java:726) //...  javax.persistence.rollbackexception: error while committing transaction     org.hibernate.jpa.internal.transactionimpl.commit(transactionimpl.java:94)     org.springframework.orm.jpa.jpatransactionmanager.docommit(jpatransactionmanager.java:517) 

i use spring 4 if necessary , grateful help, thanks!

my environment spring-boot, , below code org.springframework.stereotype.component annotation validation class working, fyr.

@component public class foovalidator implements constraintvalidator<foo, object> {    @autowired   myservice service;    @override   public void initialize(foo constraintannotation) {   }    @override   public boolean isvalid(object value, constraintvalidatorcontext context) {     return service.isvalid(value);   } } 

Comments