2014-10-31 2 views
1

Я пишу код с весенним ботинком, который будет принимать csv в качестве входных данных и создать коллекцию mongodb и вставить его в mongodb.Весенние данные Конфигурация mongodb в весеннем загрузочном проекте

В настоящее время я придерживаюсь использования mongodb в весеннем загрузочном коде. Я получаю NullPointerException при использовании метода сохранения в интерфейсе MongoRepository.

Возможно, эта проблема вызвана неправильной конфигурацией в файле application.yml Ниже приведены конкретные изменения mongodb в application.yml в каталоге src/main/resources.

spring: 
    data: 
     mongodb.host: localhost 
     mongodb.port: 27017 
     mongodb.uri: mongodb://localhost/test 
     mongo.repositories.enabled: true 

Application.java файл ниже:

@Configuration 
@EnableMongoRepositories 
@Import(RepositoryRestMvcConfiguration.class) 
@EnableAutoConfiguration // Sprint Boot Auto Configuration 
@ComponentScan(basePackages = "com.khoubyari.example") 
public class Application extends SpringBootServletInitializer { 

private static final Class<Application> applicationClass = Application.class; 
private static final Logger log = LoggerFactory.getLogger(applicationClass); 

public static void main(String[] args) { 
    SpringApplication.run(applicationClass, args); 
} 


@Override 
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
    return application.sources(applicationClass); 
} 
} 

Если Application.java реализует CommandLineRunner и записи для вставки MongoDB специального кода в перекрытой перспективе метода, код работает отлично. Этот код доступен в этом URL: https://spring.io/guides/gs/accessing-data-mongodb/

, но мой Application.java расширяет класс SpringBootServletInitializer и переопределения сконфигурировать (SpringApplicationBuilder приложения) метод. Пожалуйста, посмотрите выше для моего приложения.java.

Мне нужен один и тот же код (как в том же коде, для которого я упоминал выше в классе Application.java) в классе утилит, существующий в разных пакетах для моего проекта, основанного на весне.

интерфейс пользовательского хранилища ниже:

CustomRepository.java: 

public interface CustomRepository extends MongoRepository<CsvPojo, String>{ 

} 

В полезности класса, я просто хочу, чтобы ввести CustomRepository и использовать метод сохранения, чтобы сохранить созданный CsvPojo в MongoDB. Но я занимаюсь NullPointerException при выполнении строки customRepository.save (csvPojo);

Пожалуйста, предложите! Если вам нужна другая информация, пожалуйста, скажите мне!

С уважением, Shobhit

+0

Прежде всего, почему вы используете класс 'Application', расширяющий' SpringBootServletInitializer'? Во-вторых, пожалуйста, покажите код, который вы используете для своего настраиваемого класса утилиты – geoand

+1

Вы не можете вводить в класс утилиты (я подозреваю, что класс не управляется весной или у вас есть статическое поле, которое вы пытаетесь ввести). Также в вашей конфигурации вы можете удалить '@ EnableMongoRepositories' и' @Import (RepositoryRestMvcConfiguration.class) ', Spring Boot автоматически добавляет их при обнаружении соответствующих данных Spring MongoDB и Spring Data Rest. Кроме того, если ваш класс 'Application' находится в пакете' com.khoubyari.example', вы можете просто '@ ComponentScan'. –

ответ

4

Вызов метода сохранения в контроллере пружинный покоя решен вопрос вместо вызова из служебного класса.

Я просто добавляю интерфейс CustomRepository в контроллер и используя метод сохранения!

Я получил решение после изучения «О службе» раздела из https://github.com/khoubyari/spring-boot-rest-example

мне нужно изучить более весной ботинке, но в любом случае проблема будет решена после того, как выше вывешенные усилий!