Spring Boot 分层架构(spring分层架构)

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());

}

}

架构说明:

  1. 分层结构:清晰分离领域模型(Entity)、数据访问(Repository)、业务逻辑(Service)、API接口(Controller)
  2. 依赖注入:通过构造器注入实现松耦合
  3. 事务管理:@Transactional注解声明式事务
  4. RESTful设计:符合HTTP语义的资源操作
  5. 全局异常处理:统一错误响应格式
  6. JPA抽象:Spring Data简化数据库操作

特别声明:[Spring Boot 分层架构(spring分层架构)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

口臭退退退!实用去口臭攻略来拯救社恐的你(口臭好治么)

  在日常社交中,口臭就像一道无形的屏障,让人不敢畅所欲言,甚至影响正常的人际交往。无论是与朋友聊天、职场沟通还是亲密接触,口臭都会带来诸多尴尬。那么,有口臭究竟该怎么去除呢?接下来,就为大家详细介绍一系列有效的解决方法。

口臭退退退!实用去口臭攻略来拯救社恐的你(口臭好治么)

怎么去治疗抑郁症才好的(怎样去治疗抑郁症)

抑郁症可以通过心理治疗、药物治疗、物理治疗、生活方式调整及社会支持等方式综合干预。其成因可能涉及遗传因素、神经递质失衡、应激事件、慢性疾病或人格特质等,常见症状包括情绪低落、兴趣减退、睡眠障碍、食欲改变或自杀倾向

怎么去治疗抑郁症才好的(怎样去治疗抑郁症)

很多个 Word 文档中的doc、docx格式文件批量转换为Excel表格文件(很多个word文档怎么合为一个文件)

当 doc、docx 文件中存在着表格、列表、重复字段等结构化的数据需要用 Excel 表格记录内容时,如何才能将其转换成 xlsx 格式呢?【从文件夹中导入文件】添加整个需要转换为 xlsx 格式的 do…

很多个 Word 文档中的doc、docx格式文件批量转换为Excel表格文件(很多个word文档怎么合为一个文件)

一睡觉就疯狂做梦 这些原因可能正在“捣乱”你的睡眠(一睡觉就做噩梦什么原因)

  你是否有过这样的经历:明明睡了一整晚,第二天却感觉比没睡还疲惫,仔细回想才发现,整个晚上都在不停地做梦,仿佛大脑从未休息。晚上睡觉总是做梦,这是很多人都面临的困扰,它不仅影响睡眠质量,还会让人在白天感到精神萎靡、注意力不集中。那么,究竟

一睡觉就疯狂做梦 这些原因可能正在“捣乱”你的睡眠(一睡觉就做噩梦什么原因)

婆婆钦点、综艺为媒:揭秘向太如何亲手选中郭碧婷做向家儿媳(婆媳综艺叫什么名字)

郭碧婷与向佐的婚姻,从一开始就被称为“向太一手包办的豪门联姻”,从相识、相爱到求婚、婚礼,每个环节都离不开向太的精心策划。在节目中,向佐就对郭碧婷产生好感,而向太更是扮演了“月老”的角色,敏锐地察觉儿子的心意…

婆婆钦点、综艺为媒:揭秘向太如何亲手选中郭碧婷做向家儿媳(婆媳综艺叫什么名字)