在 PurchaseOrderServiceImpl.java
中添加日志记录,以便在保存订单时输出参数进行调试。可以使用 Spring 的日志框架(SLF4J 和 Logback)来实现这一点。
添加日志记录
引入 SLF4J 依赖: 确保项目中已经包含了 SLF4J 和 Logback 的依赖。通常在 Maven 或 Gradle 项目中,默认会包含这些依赖。
在
PurchaseOrderServiceImpl.java
中添加日志记录:- 引入
org.slf4j.Logger
和org.slf4j.LoggerFactory
。 - 在类中声明一个
Logger
实例。 - 使用
logger.info
方法记录日志。
- 引入
修改后的 PurchaseOrderServiceImpl.java
以下是修改后的 PurchaseOrderServiceImpl.java
文件示例,其中包含了日志记录功能:
package com.mechanical.erp.modules.purchase.service.impl;
import com.mechanical.erp.modules.purchase.entity.PurchaseOrder;
import com.mechanical.erp.modules.purchase.repository.PurchaseOrderRepository;
import com.mechanical.erp.modules.purchase.service.PurchaseOrderService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class PurchaseOrderServiceImpl implements PurchaseOrderService {
private static final Logger logger = LoggerFactory.getLogger(PurchaseOrderServiceImpl.class);
@Autowired
private PurchaseOrderRepository purchaseOrderRepository;
@Override
public PurchaseOrder createPurchaseOrder(PurchaseOrder purchaseOrder) {
logger.info("保存订单参数: {}", purchaseOrder);
return purchaseOrderRepository.save(purchaseOrder);
}
@Override
public PurchaseOrder updatePurchaseOrder(Long id, PurchaseOrder purchaseOrder) {
Optional<PurchaseOrder> existingOrder = purchaseOrderRepository.findById(id);
if (existingOrder.isPresent()) {
PurchaseOrder orderToUpdate = existingOrder.get();
orderToUpdate.setSupplier(purchaseOrder.getSupplier());
orderToUpdate.setOrderDate(purchaseOrder.getOrderDate());
orderToUpdate.setStatus(purchaseOrder.getStatus());
// 其他字段...
logger.info("更新订单参数: {}, 新值: {}", id, purchaseOrder);
return purchaseOrderRepository.save(orderToUpdate);
} else {
logger.error("采购订单未找到, ID: {}", id);
throw new RuntimeException("采购订单未找到");
}
}
@Override
public void deletePurchaseOrder(Long id) {
logger.info("删除订单参数: {}", id);
purchaseOrderRepository.deleteById(id);
}
@Override
public PurchaseOrder getPurchaseOrderById(Long id) {
logger.info("获取订单参数: {}", id);
return purchaseOrderRepository.findById(id)
.orElseThrow(() -> {
logger.error("采购订单未找到, ID: {}", id);
throw new RuntimeException("采购订单未找到");
});
}
@Override
public List<PurchaseOrder> getAllPurchaseOrders() {
logger.info("获取所有订单");
return purchaseOrderRepository.findAll();
}
}
解释
引入日志库:
import org.slf4j.Logger; import org.slf4j.LoggerFactory;
声明日志实例:
private static final Logger logger = LoggerFactory.getLogger(PurchaseOrderServiceImpl.class);
添加日志记录:
- 在
createPurchaseOrder
方法中记录保存的订单参数。 - 在
updatePurchaseOrder
方法中记录更新的订单参数和新值。 - 在
deletePurchaseOrder
方法中记录删除的订单参数。 - 在
getPurchaseOrderById
方法中记录获取的订单参数。 - 在
getAllPurchaseOrders
方法中记录获取所有订单的操作。
- 在
日志配置
确保你的项目中有适当的日志配置文件(如 logback-spring.xml
),以便正确输出日志。以下是一个简单的 logback-spring.xml
示例:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
<logger name="com.mechanical.erp" level="debug" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
</configuration>
总结
PurchaseOrderServiceImpl.java
:- 目的: 实现
PurchaseOrderService
接口中的业务逻辑。 - 内容: 提供具体的方法实现,并添加日志记录以输出保存订单的参数。
- 作用: 确保业务逻辑的具体实现,并且可以被其他组件(如控制器)调用,同时提供详细的日志信息以便调试和监控。
- 目的: 实现
通过这种方式,你可以在保存订单时输出参数,便于调试和跟踪应用程序的行为。