2016-10-13 3 views
3

У меня есть следующий простая структура проекта:Spring - Монго путь к классу конфигурации

enter image description here

Здесь находится реализация этих файлов:

Tryton - загрузочный класс

@SpringBootApplication 
public class Tryton { 
    public static void main(String[] args) { 
     SpringApplication.run(Tryton.class, args); 
    } 
} 

UserRepository - Монгонский репозиторий

public interface UserRepository extends MongoRepository<User, String> { 
} 

UserController - REST контроллер

@RestController 
public class UserController { 

    private final UserRepository userRepository; 

    @Autowired 
    public UserController(UserRepository userRepository) { 
     this.userRepository = userRepository; 
    } 
} 

MongoConfig

@Configuration 
@EnableMongoRepositories 
@ConfigurationProperties("foo") 
class MongoConfig extends AbstractMongoConfiguration { 

    @Value("${mongodb.host}") 
    private String host; 
    @Value("${mongodb.port}") 
    private int port; 
    @Value("${mongodb.databaseName}") 
    private String databaseName; 

    @Override 
    protected String getDatabaseName() { 
     return databaseName; 
    } 

    @Override 
    public Mongo mongo() throws Exception { 
     return new Mongo(host, port); 
    } 

} 

Это очень простое приложение: я впрыснуть UserRepository в UserController. Затем я конфигурирую детали подключения MongoDB в MongoConfig. Теперь все работает нормально. Но когда я перехожу MongoConfig в /конфиги пакета, то возникает проблема:

enter image description here

А теперь приложение не может начать.

*************************** 
APPLICATION FAILED TO START 
*************************** 

Description: 

Parameter 0 of constructor in com.tryton.controllers.UserController required a bean of type 'com.tryton.repositories.UserRepository' that could not be found. 


Action: 

Consider defining a bean of type 'com.tryton.repositories.UserRepository' in your configuration. 

Почему MongoConfig изменить расположение делает весна не в состоянии признать UserRepository как MongoRepository?

ответ

3

после перехода в конфигурационный пакет по умолчанию изменен @EnableMongoRepositories. Или, точнее, базовый пакет был изменен на com.tryton.configs.*. Spring ищет теперь репозитории mongo в этом пакете.

вы должны теперь добавить basePackages в @EnableMongoRepositories - аннотация:

@Configuration 
@EnableMongoRepositories(basePackages = {"com.tryton.repositories"}) 
@ConfigurationProperties("foo") 
public class MongoConfig extends AbstractMongoConfiguration { 
     [...] 
} 

Убедитесь, что ваш MongoConfig является общедоступным.

+0

Он все еще не работает. – Humberd

+0

убедитесь, что MongoConfig является общедоступным. – dit

+0

Все еще не работает – Humberd

Смежные вопросы