[英]Spring Boot with Morphia Configuration: BeanCreationException
[英]Spring Boot configuration with Morphia?
我不想利用Spring DATA MongoDB支持。 我想利用名为Morphia的MongoDB的ORM。
https://github.com/mongodb/morphia
我想用Spring Boot配置Morphia。 我想以一种遵循Spring Boot理念的方式外化Morphia的配置。
我想利用环境变量来配置Morphia属性。
实现这一目的的Spring Boot方法是什么?
在一个简单的主程序中会做以下事情以使Morhpia ORM正常工作。
private Morphia morphia;
private MongoClient mongoClient;
morphia = new Morphia();
// Person is an entity object with Morphia annotations
morphia.map(Person.class);
// THESE properties MUST be read from environment variables in Spring BOOT.
final String host = "localhost";
final int port = 27017;
mongoClient = new MongoClient(host, port);
//Set database
// this instance would be autowired all data access classes
Datastore ds = morphia.createDatastore(mongoClient, "dataStoreInstanceId");
// this is how instance would be used in those data accesses classes
Person p = ds.find(Person.class, "username", "john").get();
类似Spring Boot的方法是创建一个具有所需属性的AutoConfiguration,它创建一个Datastore
实例作为bean。
在参考指南中,您将了解如何设置属性并连接到MongoDB。
Morphia的AutoConfiguration可能如下所示:
@Configuration
public class MorphiaAutoConfiguration {
@Autowired
private MongoClient mongoClient; // created from MongoAutoConfiguration
@Bean
public Datastore datastore() {
Morphia morphia = new Morphia();
// map entities, there is maybe a better way to find and map all entities
ClassPathScanningCandidateComponentProvider entityScanner = new ClassPathScanningCandidateComponentProvider(true);
entityScanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
for (BeanDefinition candidate : scanner.findCandidateComponents("your.basepackage")) { // from properties?
morphia.map(Class.forName(candidate.getBeanClassName()));
}
return morphia.createDatastore(mongoClient, "dataStoreInstanceId"); // "dataStoreInstanceId" may come from properties?
}
}
然后,您可以通常的方式在其他Spring bean中自动装配数据存储区:
@Autowired
private Datastore datastore;
如果某些点不正确或不清楚,请查看Spring Boot中现有的*AutoConfiguration
类。
我正在为春季启动工作,这是回购。 很容易使用,在某些日子里会在maven中心更新它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.