Ich verwende Mongo-Repositories, um CRUD-Operationen wie im folgenden Code auszuführen. Obwohl dieser Code funktioniert, aber die Dokumente und Sammlungen werden in einer anderen Datenbank erstellt als die, die ich möchte. Wie kann ich explizit einen DB-Namen angeben, in dem Dokumente gespeichert werden?Wie man den Datenbanknamen im Frühjahr angibt mongoDB
Die POJO Klasse:
@Document(collection = "actors")
public class Actor
{
@Id
private String id;
...
//constructor
//setters & getters
}
Das Repository:
public interface ActorRepository extends MongoRepository<Actor, String>
{
public Actor findByFNameAndLName(String fName, String lName);
public Actor findByFName (String fName);
public Actor findByLName(String lName);
}
Der Dienst, der das Repository verwendet:
@Service
public class ActorService
{
@Autowired
private ActorRepository actorRepository;
public Actor insert(Actor a)
{
a.setId(null);
return actorRepository.save(a);
}
}
Und ich Zugriff auf den Dienst von einer REST-Controller-Klasse:
@RestController
public class Controllers
{
private static final Logger logger = Logger.getLogger(Controllers.class);
private static final ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
@Autowire
private ActorService actorService;
@RequestMapping(value="/createActor", method=RequestMethod.POST)
public @ResponseBody String createActor(@RequestParam(value = "fName") String fName,
@RequestParam(value = "lName") String lName,
@RequestParam(value = "role") String role)
{
return actorService.insert(new Actor(null,fName,lName,role)).toString();
}
...
}
Ich habe diese Frühjahr mongoDB-Konfigurationsklasse erstellt, die die Möglichkeit hat, DB-Namen zu setzen, aber konnte nicht herausfinden, wie man es mit den oben genannten Repositories verwendet.
@Configuration
public class SpringMongoConfig extends AbstractMongoConfiguration
{
@Bean
public GridFsTemplate gridFsTemplate() throws Exception
{
return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
}
@Override
protected String getDatabaseName()
{
return "MyDB";
}
@Override
@Bean
public Mongo mongo() throws Exception
{
return new MongoClient("localhost" , 27017);
}
public @Bean MongoTemplate mongoTemplate() throws Exception
{
return new MongoTemplate(mongo(), getDatabaseName());
}
}
Haben Sie Ihre Antwort gefunden? Hat nach dem folgenden Tutorial mit demselben Problem festgestanden: https://spring.io/guides/gs/accessing-mongodb-data-rest/ – Mussa
Leider nein. – Sami