我用Spring Boot研究过MongoDB
我用docker-compose安装了Mongo,用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代码
控制器
@Rest控制器
@RequestMapping("/api/v1/product")
@RequiredArgsConstructor
public class Product控制器 {
private final Product服务 product服务;
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void createProduct(@RequestBody ProductRequest productRequest) {
product服务.createProduct(productRequest);
}
@GetMapping
@ResponseStatus(HttpStatus.OK)
public List<ProductResponse> getAllProducts() {
return product服务.getAllProducts();
}
}
服务
@服务
@RequiredArgsConstructor
@Slf4j
public class Product服务 {
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<ProductResponse> getAllProducts() {
List<Product>products = 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();
}
}
实体
@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
因为我找到了大约posts个
我试着换成这个,没什么变化
spring.data.mongodb.port=27017
spring.data.mongodb.database=product
spring.data.mongodb.host=localhost
当我判断Mongo Compass时,它总是连接到test个数据库,尽管我指定了product个数据库,如Applation.Properties
我也找到了类似的question,我试过那个解决方案,它对我不起作用,这个解决方案对我来说太复杂了.它会引发错误
Error creating bean with name 'mongoConfig': Injection of autowired dependencies failed
我不能解决这个问题,因为我对Mongo还不熟悉
我如何才能更改春装应用程序连接到另一个数据库?