Prezados, quando subo meu projeto com vraptor + spring recebo a exceção:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.com.caelum.vraptor.validator.JSR303ValidatorFactory': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'JSR303ValidatorFactory': Unsatisfied dependency expressed through constructor argument with index 0 of type [javax.validation.ValidatorFactory]: : No unique bean of type [javax.validation.ValidatorFactory] is defined: expected single matching bean but found 2: [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0, br.com.caelum.vraptor.validator.ValidatorFactoryCreator]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.validation.ValidatorFactory] is defined: expected single matching bean but found 2: [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0, br.com.caelum.vraptor.validator.ValidatorFactoryCreator]
entendo que existem 2 beans qualificados para injeção, porém o problema é em uma classe interna, alguem passou por tal situação?
abrasss
quando tento subir o mongo com a factory dele configurada no meu applicationContext
<mongo:db-factory dbname="fourDataTest" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mongoConverter" ref="mappingConverter" />
</bean>
ele da isso, vou tentar subir o mongo de outra maneira, porém ainda achei estranho. Seria o caso de sobreescrever a CommonsUploadMultipartInterceptor?
abs
expected single matching bean but found 2: [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0, br.com.caelum.vraptor.validator.ValidatorFactoryCreator]
remova o validator factory do xml do spring.
opa, não tenho um validator factory
o erro dá depois que adiciono isto:
<!-- Config mongoDB -->
<mongo:mapping-converter>
<mongo:custom-converters>
<mongo:converter>
<bean class="br.com.fourdata.util.mongo.converter.DateToLocalDate" />
</mongo:converter>
<mongo:converter>
<bean class="br.com.fourdata.util.mongo.converter.DateToLocalDateTime" />
</mongo:converter>
<mongo:converter>
<bean class="br.com.fourdata.util.mongo.converter.LocalDateTimeToDate" />
</mongo:converter>
<mongo:converter>
<bean class="br.com.fourdata.util.mongo.converter.LocalDateToDate" />
</mongo:converter>
</mongo:custom-converters>
</mongo:mapping-converter>
<mongo:db-factory dbname="fourDataTest" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mongoConverter" ref="mappingConverter" />
</bean>
abrasss
então provavelmente é o “mongo:” que tá adicionando essa validator factory =(
tenta ver se você consegue achar alguma propriedade desse mongo que deixa configurar o validator factory
procurei um outro jeito de subir o mongoTemplate, porém n teve jeito, ele precisa do factory e nao achei uma maneira de configurar o validator factory pro db-factory.
entao para solucionar o problema subi o mongo com configuração programatica.
Retirei as referencias do mongo do meu applicationContext e criei a seguinte classe, sobreescrevendo o metodo que adiciona os converters:
package br.com.fourdata.dao;
import java.net.UnknownHostException;
import java.util.Arrays;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.convert.CustomConversions;
import br.com.fourdata.util.mongo.converter.DateToLocalDate;
import br.com.fourdata.util.mongo.converter.DateToLocalDateTime;
import br.com.fourdata.util.mongo.converter.LocalDateTimeToDate;
import br.com.fourdata.util.mongo.converter.LocalDateToDate;
import com.mongodb.Mongo;
@Configuration
public class SpringMongoSetter extends AbstractMongoConfiguration {
@Override
public Mongo mongo() throws UnknownHostException {
return new Mongo();
}
@Override
public String getDatabaseName() {
return "nomeBanco";
}
@Override
public String getMappingBasePackage() {
return "pacote.de.model";
}
@Bean
@Override
public CustomConversions customConversions() {
return new CustomConversions(Arrays.asList(new DateToLocalDate(), new DateToLocalDateTime(),
new LocalDateTimeToDate(), new LocalDateToDate()));
}
}
funciona!
mto obrigado lucas
grande abrassss