有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Spring中自动连接业务对象

我正在跟踪控制器->;服务->;刀型。当我调用DAO实现时,我得到一个DTO/数据对象。然后将其传递到服务层,将其各自的业务对象和数据对象结合在一起。像这样:

public User getUserById(int id) {
    return new User(userDAO.getUserById(id));
}

class User {
    private UserDTO userDTO;

    public User(UserDTO userDTO) {
        this.userDTO = userDTO;
    }
}

我想做的是将所有业务逻辑包装在业务类中,但我需要额外的依赖项。 例如,我希望能够做到以下几点:

//... some code

User user = userService.getByUserId(1);

user.delete(); // this should delete the user from the database

为了让我以这种方式删除用户,我需要将UserService自动连接到业务类中,但这不会起作用,因为我正在用户服务中手动实例化用户类

class User {
    @Autowired
    private UserService userService; // this won't work since I call instantiate User myself, ie. new User()
    private UserDTO userDTO;

    public User(UserDTO userDTO) {
        this.userDTO = userDTO;
    }

    public boolean delete() {
        userService.deleteByUserId(userDTO.getId());
    }
}

有没有一种模式可以让我随心所欲


共 (2) 个答案

  1. # 1 楼答案

    我认为将business class作为DTO对象的成员不是一个好的设计。 更合适的方法是将delete方法放在business类中。这将有助于松耦合