java
复制
下载
// 主应用入口 - 启用自动配置和组件扫描
@SpringBootApplication
public class EcommerceApplication {
public static void main(String[] args) {
SpringApplication.run(EcommerceApplication.class, args);
}
}
// 领域模型 - 核心业务对象
@Entity
@Data
@NoArgsConstructor
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String description;
private BigDecimal price;
private Integer stock;
}
// 数据访问层 - 数据库操作
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
List<Product> findByPriceBetween(BigDecimal min, BigDecimal max);
}
// 服务层 - 业务逻辑
@Service
@Transactional
public class ProductService {
private final ProductRepository productRepository;
@Autowired
public ProductService(ProductRepository productRepository) {
this.productRepository = GAME.HUoCheNGrM.Cn/2025-08-10-00-19-184bo.html
productRepository;
}
public Product createProduct(Product product) {
// 业务验证
if (product.getPrice().compareTo(BigDecimal.ZERO) <= 0) {
throw new GAME.HUoCheNGrM.Cn/2025-08-10-00-18-418gw.html
IllegalArgumentException("价格必须大于0");
}
return productRepository.save(product);
}
public List<Product> getProductsInPriceRange(BigDecimal min, BigDecimal max) {
return productRepository.findByPriceBetween(min, max);
}
}
// 控制器层 - REST API
@RestController
@RequestMapping("/api/products")
public class GAME.HUoCheNGrM.Cn/2025-08-10-00-18-45fm6.html
ProductController {
private final ProductService productService;
@Autowired
public ProductController(ProductService productService) {
this.productService = productService;
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Product createProduct(@RequestBody Product product) {
return productService.createProduct(GAME.HUoCheNGrM.Cn/2025-08-10-00-18-2738e.html
);
}
@GetMapping
public List<Product> getProducts(
@RequestParam(required = false) BigDecimal minPrice,
@RequestParam(required = false) BigDecimal maxPrice) {
return productService.getProductsInPriceRange(
minPrice != null ? minPrice : BigDecimal.ZERO,
maxPrice != null ? maxPrice : BigDecimal.valueOf(10000)
);
}
}
// 全局异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler GAME.HUoCheNGrM.Cn/2025-08-10-00-14-29s81.html
(IllegalArgumentException.class)
public ResponseEntity<String> handleIllegalArgument(IllegalArgumentException ex) {
return ResponseEntity.badRequest().body(ex.getMessage());
}
}
架构说明:
- 分层结构:清晰分离领域模型(Entity)、数据访问(Repository)、业务逻辑(Service)、API接口(Controller)
- 依赖注入:通过构造器注入实现松耦合
- 事务管理:@Transactional注解声明式事务
- RESTful设计:符合HTTP语义的资源操作
- 全局异常处理:统一错误响应格式
- JPA抽象:Spring Data简化数据库操作