java开发的基本框架

211 阅读3分钟

Controller层

Controller层(有时也被称为Web层或表示层)是处理HTTP请求的入口点。它的主要职责是:

接收来自客户端(如浏览器或其他HTTP客户端)的请求。

调用Service层的方法来处理业务逻辑。

返回响应给客户端,通常是以HTML、JSON或XML格式。

处理异常和错误,并将适当的错误消息返回给客户端。

可以进行数据的简单转换和格式化,以符合客户端的需求。

Controller类通常使用Spring MVC的注解,如@RestController、@RequestMapping、@GetMapping、@PostMapping等,来定义路由和处理HTTP方法。

职责

  • 接收HTTP请求并返回响应。
  • 调用Service层处理业务逻辑。
  • 处理异常并返回适当的错误消息。
  • 示例代码

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public ResponseEntity<UserDTO> getUserById(@PathVariable Long id) {
        UserDTO user = userService.getUserById(id);
        return ResponseEntity.ok(user);
    }

    @PostMapping
    public ResponseEntity<UserDTO> createUser(@RequestBody UserDTO userDTO) {
        UserDTO createdUser = userService.createUser(userDTO);
        return ResponseEntity.status(HttpStatus.CREATED).body(createdUser);
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
    }
}

Service层

Service层(也被称为业务逻辑层)是应用程序的核心,它包含了执行特定业务任务的逻辑。它的主要职责是:

实现应用程序的业务逻辑。

调用Mapper层(或DAO层)的方法来与数据库交互。

执行数据验证和转换。

处理业务规则和逻辑。

管理事务。

可以调用其他服务(如外部API)来执行集成操作。

Service类通常不包含与特定HTTP方法或路由相关的代码,而是专注于实现可重用的业务功能。

职责

  • 实现业务逻辑。
  • 调用Mapper层与数据库交互。
  • 处理业务规则和验证。

示例代码

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public UserDTO getUserById(Long id) {
        User user = userMapper.findById(id);
        return convertToDTO(user);
    }

    public UserDTO createUser(UserDTO userDTO) {
        User user = convertToEntity(userDTO);
        userMapper.insert(user);
        return convertToDTO(user);
    }

    private UserDTO convertToDTO(User user) {
        // 转换逻辑
    }

    private User convertToEntity(UserDTO userDTO) {
        // 转换逻辑
    }
}

Mapper层

Mapper层(也被称为数据访问层或DAO层)负责与数据库交互。它的主要职责是:

定义与数据库表对应的接口。

使用MyBatis的注解或XML映射文件来编写SQL语句。

执行CRUD(创建、读取、更新、删除)操作。

处理数据库连接和事务。

将数据库查询结果映射到Java对象(实体或DTO)。

职责

  • 定义与数据库表对应的接口。
  • 编写SQL语句并执行CRUD操作。
  • 处理数据库连接和事务。

示例代码

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM users WHERE id = #{id}")
    User findById(Long id);

    @Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")
    void insert(User user);

    // 其他CRUD操作
}

总结

以上代码展示了一个简单的用户管理模块的结构。每一层都有明确的职责,确保了代码的可维护性和可扩展性。通过使用Spring MVC的注解,Controller层处理HTTP请求,Service层负责业务逻辑,Mapper层则与数据库进行交互。这样的分层架构使得应用程序更易于测试和管理。