Всегда подключайте тестовую базу данных к mongodb с помощью Spring Boot.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Всегда подключайте тестовую базу данных к mongodb с помощью Spring Boot.

Сообщение Anonymous »

Я изучал mongodb с помощью Spring Boot
Я устанавливаю mongo с помощью docker-compose, использую Mongo Compass для взаимодействия с базой данных mongo и создаю базу данных продуктов

Код: Выделить всё

version: "3.8"
services:
mongodb:
image : mongo
container_name: mongodb
environment:
- PUID=1000
- PGID=1000
volumes:
- ./database/product-service/mongodb:/data/db
ports:
- 27017:27017
restart: unless-stopped
Код Spring Boot
Контроллер

Код: Выделить всё

@RestController
@RequestMapping("/api/v1/product")
@RequiredArgsConstructor
public class ProductController {
private final ProductService productService;

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void createProduct(@RequestBody ProductRequest productRequest) {
productService.createProduct(productRequest);
}

@GetMapping
@ResponseStatus(HttpStatus.OK)
public List getAllProducts() {
return productService.getAllProducts();
}
}

Сервис

Код: Выделить всё

@Service
@RequiredArgsConstructor
@Slf4j
public class ProductService {
private final ProductRepository productRepository;

public void createProduct(ProductRequest productRequest) {
Product product = Product.builder()
.name(productRequest.getName())
.description(productRequest.getDescription())
.price(productRequest.getPrice())
.build();
productRepository.save(product);
log.info("Product {} is saved", product.getId());
}

public List getAllProducts() {
Listproducts = productRepository.findAll();
log.info("Get all products");
return products.stream().map(product -> map2ProductResponse(product)).toList();
}

private ProductResponse map2ProductResponse(Product product) {
return ProductResponse.builder()
.id(product.getId())
.name(product.getName())
.description(product.getDescription())
.price(product.getPrice())
.build();
}
}
entity

Код: Выделить всё

@Document(value = "product")
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class Product {
private String id;
private String name;
private String description;
private BigDecimal price;
}

В приложении Spring Boot я настроил файл appllication.properties следующим образом.

Код: Выделить всё

spring.data.mongodb.uri=mongodb://127.0.0.1:27017/product
Поскольку я нашел несколько сообщений
Я попробовал заменить это, ничего не изменилось

Код: Выделить всё

spring.data.mongodb.port=27017
spring.data.mongodb.database=product
spring.data.mongodb.host=localhost
когда я проверяю Mongo Compass, он всегда подключается к базе данных test, хотя я указываю базу данных product, например application.properties
введите описание изображения здесь
Я также нашел аналогичный вопрос, я пробовал использовать это решение, оно у меня не работает, и решение слишком сложное для меня. Возникает ошибка

Код: Выделить всё

Error creating bean with name 'mongoConfig': Injection of autowired dependencies failed
И я не могу решить эту проблему, потому что я новичок в mongo.
Как я могу изменить подключение приложения Spring Boot к другой базе данных?>

Подробнее здесь: https://stackoverflow.com/questions/772 ... pring-boot
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»