Liberty+中的容器管理MongoDB连接;弹簧数据
我们在Liberty+中的容器管理MongoDB连接;弹簧数据,mongodb,spring-boot,spring-data,websphere-liberty,open-liberty,Mongodb,Spring Boot,Spring Data,Websphere Liberty,Open Liberty,我们在springboot+springdata(后端)+MongoDB中开发了一个应用程序,并使用ibmwebsphereliberty作为应用服务器。我们在yml文件中使用了“应用程序管理的数据库连接”,并享受了Spring Boot自动配置的好处 由于策略更改,我们需要在Liberty Server中管理数据库连接(使用mongo功能),在Server.xml中。我花了一整天的时间寻找一个很好的例子来做这件事,但是在Spring的IBMWebSphereLiberty服务器中找不到任何关于
springboot
+springdata
(后端)+MongoDB
中开发了一个应用程序,并使用ibmwebsphereliberty
作为应用服务器。我们在yml
文件中使用了“应用程序管理的数据库连接”,并享受了Spring Boot自动配置的好处
由于策略更改,我们需要在Liberty Server中管理数据库连接(使用mongo功能),在Server.xml
中。我花了一整天的时间寻找一个很好的例子来做这件事,但是在Spring的IBMWebSphereLiberty服务器中找不到任何关于容器管理的MongoDB连接的例子
有人能在这里支持吗?退房。下面是您将如何在Spring Boot应用程序中使用它的扩展
您应该能够以相同的方式注入数据源。您甚至可以将其注入到配置中,并将其包装在SpringDelegatingDataSource
中
@Configuration
public class DataSourceConfiguration {
// This is the last code section from that link above
@Resource(lookup = "jdbc/oracle")
DataSource ds;
@Bean
public DataSource mySpringManagedDS() {
return new DelegatingDataSource(ds);
}
}
然后您应该能够将mySpringManagedDS
数据源
注入到您的组件
、服务
等中。过去,Liberty为server.xml提供了一个专用的mongodb-2.0
功能,但是该功能提供的好处微乎其微,因为您仍然需要带上自己的MongoDB库。此外,随着时间的推移,MongoDB对其API进行了重大的突破性更改,包括MongoDB的配置方式
由于MongoDB API在不同版本之间变化如此之大,我们发现最好不要在Liberty中提供任何新的MongoDB功能,而是建议用户只需使用如下CDI生产者:
CDI生产者(也可保存任何配置):
@ApplicationScoped
public class MongoProducer {
@Produces
public MongoClient createMongo() {
return new MongoClient(new ServerAddress(), new MongoClientOptions.Builder().build());
}
@Produces
public MongoDatabase createDB(MongoClient client) {
return client.getDatabase("testdb");
}
public void close(@Disposes MongoClient toClose) {
toClose.close();
}
}
@Inject
MongoDatabase db;
@POST
@Path("/add")
@Consumes(MediaType.APPLICATION_JSON)
public void add(CrewMember crewMember) {
MongoCollection<Document> crew = db.getCollection("Crew");
Document newCrewMember = new Document();
newCrewMember.put("Name",crewMember.getName());
newCrewMember.put("Rank",crewMember.getRank());
newCrewMember.put("CrewID",crewMember.getCrewID());
crew.insertOne(newCrewMember);
}
用法示例:
@ApplicationScoped
public class MongoProducer {
@Produces
public MongoClient createMongo() {
return new MongoClient(new ServerAddress(), new MongoClientOptions.Builder().build());
}
@Produces
public MongoDatabase createDB(MongoClient client) {
return client.getDatabase("testdb");
}
public void close(@Disposes MongoClient toClose) {
toClose.close();
}
}
@Inject
MongoDatabase db;
@POST
@Path("/add")
@Consumes(MediaType.APPLICATION_JSON)
public void add(CrewMember crewMember) {
MongoCollection<Document> crew = db.getCollection("Crew");
Document newCrewMember = new Document();
newCrewMember.put("Name",crewMember.getName());
newCrewMember.put("Rank",crewMember.getRank());
newCrewMember.put("CrewID",crewMember.getCrewID());
crew.insertOne(newCrewMember);
}
@Inject
MongoDatabase db;
@职位
@路径(“/add”)
@使用(MediaType.APPLICATION_JSON)
公共无效添加(乘员乘员乘员){
MongoCollection crew=db.getCollection(“crew”);
Document newCrewMember=新文档();
newCrewMember.put(“Name”,crewMember.getName());
newCrewMember.put(“Rank”,crewMember.getRank());
newCrewMember.put(“CrewID”,crewMember.getCrewID());
乘务员insertOne(新乘务员);
}
这只是基础知识,但下面的博文将更详细地介绍代码示例: