Chcę Autowire MongoRepository w mojej klasie usług, i nie jestem w stanie to zrobić. Używam konfiguracji java. To jest mój repozytorium klasa:Autowire MongoRepository in Spring MVC
@Repository
public interface UserRepository extends MongoRepository<User, String> {
public User findByFirstName(String firstName);
public List<User> findByLastName(String lastName);
}
Jest to usługa, która wykorzystuje UserRepository:
@Service
public class TestService {
@Autowired
private UserRepository repository;
public void save(User user) {
repository.save(user);
}
}
Jest to część mojego kontrolera, który wykorzystuje usługę:
@Controller
public class TestController {
@Autowired
private TestService service;
mój główny java config Klasa wygląda następująco:
@Configuration
@EnableWebMvc
@EnableMongoRepositories
@Import({MjurAppConfig.class, MongoConfiguration.class})
@ComponentScan({"prv.makro.mjur.controller"})
public class MjurWebAppConfig extends WebMvcConfigurerAdapter {
MjurAppConfig:
@Configuration
@ComponentScan({"prv.makro.mjur.dao", "prv.makro.mjur.repository"})
public class MjurAppConfig {
@Bean
public User getUser() {
return new User();
}
@Bean
public TestService getTestService() {
return new TestService();
}
}
I Mongo config:
@Configuration
public class MongoConfiguration {
@Bean
public MongoFactoryBean mongo() {
MongoFactoryBean mongo = new MongoFactoryBean();
mongo.setHost("localhost");
mongo.setPort(27017);
return mongo;
}
@Bean
public MongoTemplate mongoTemplate() throws Exception{
return new MongoTemplate(mongo().getObject(),"mjur");
}
}
Wyjątek:
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private prv.makro.mjur.repository.UserRepository
prv.makro.mjur.service.impl.FirstService.repository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [prv.makro.mjur.repository.UserRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
szukałem rozdzielczość dla tego problemu, ale nie mogłem znaleźć niczego. Skanowanie komponentu IMO powinno znaleźć repozytorium i powiąż je z kontekstem sprężyny. Niestety to nie działa w ten sposób.
Ten sam problem! Dzięki! – Enrichman