DBConfig.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package name.tflucke.ieat2.configs;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.beans.factory.config.BeanDefinition;
  8. import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
  9. import org.springframework.boot.autoconfigure.SpringBootApplication;
  10. import org.springframework.core.type.filter.AnnotationTypeFilter;
  11. import org.apache.log4j.Logger;
  12. import com.mongodb.MongoClient;
  13. import org.mongodb.morphia.Datastore;
  14. import org.mongodb.morphia.Morphia;
  15. import org.mongodb.morphia.annotations.Entity;
  16. @Configuration
  17. @SpringBootApplication
  18. public class DBConfig {
  19. static Logger log = Logger.getLogger(DBConfig.class.getName());
  20. @Value("${spring.data.mongodb.database:ieat}")
  21. private String dbName;
  22. @Autowired
  23. private MongoClient mongoClient;
  24. @Bean
  25. public Datastore datastore() {
  26. Morphia morphia = new Morphia();
  27. ClassPathScanningCandidateComponentProvider entityScanner =
  28. new ClassPathScanningCandidateComponentProvider(true);
  29. entityScanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
  30. try {
  31. for (BeanDefinition candidate : entityScanner.findCandidateComponents("name.tflucke.ieat2.models")) {
  32. morphia.map(Class.forName(candidate.getBeanClassName()));
  33. }
  34. }
  35. catch (ClassNotFoundException cnfe) {
  36. log.error("Class found, then not found: ");
  37. log.error(cnfe);
  38. }
  39. return morphia.createDatastore(mongoClient, dbName);
  40. }
  41. }