簡體   English   中英

與使用存儲庫相比,使用服務有什么區別? Spring 開機

[英]What's the difference between using a Service compared to using a repository? Spring Boot

這是兩個例子。

示例 1:

使用EntityRepositoryService創建一個 CRUD 數據庫。 https://github.com/alejandro-du/crudui/tree/master/demo/src/main/java/org/vaadin/crudui/demo

代碼的使用可以在這里展示: https://github.com/alejandro-du/crudui/blob/master/demo/src/main/java/org/vaadin/crudui/demo/ui/view/SimpleCrudView .java

在這里我們可以看到UserService userServiceGroupService groupService被用於在 CRUD 數據庫中存儲值。

示例 2:

這是我使用@Autowired Repository的示例

https://github.com/DanielMartensson/OpenSourceLogger/tree/master/src/main/java/se/danielmartensson/views

這里: https://github.com/DanielMartensson/OpenSourceLogger/blob/master/src/main/java/se/danielmartensson/views/MySQLView.java

題:

使用Service Object而不是使用@Autowired Repository有什么區別

例子:

如果我在這里使用@Autowired Repository backend ,我可以在這里寫入 CRUD 數據庫。

    crud.setCrudListener(new CrudListener<User>() {
    @Override
    public Collection<User> findAll() {
        return backend.findAllUsers();
    }
    @Override
    public User add(User user) {
        return backend.add(user);
    }

    @Override
    public User update(User user) {
        return backend.update(user);
    }

    @Override
    public void delete(User user) {
        backend.remove(user);
    }
});

如果我像這樣使用服務 object。 我還可以寫入 CRUD 數據庫。

@Route(value = "simple", layout = MainLayout.class)
public class SimpleCrudView extends VerticalLayout {

    public SimpleCrudView(UserService userService, GroupService groupService) {
        // crud instance
        GridCrud<User> crud = new GridCrud<>(User.class);

        // grid configuration
        crud.getGrid().setColumns("name", "birthDate", "maritalStatus", "email", "phoneNumber", "active");
        crud.getGrid().setColumnReorderingAllowed(true);

        // form configuration
        crud.getCrudFormFactory().setUseBeanValidation(true);
        crud.getCrudFormFactory().setVisibleProperties(
                "name", "birthDate", "email", "salary", "phoneNumber", "maritalStatus", "groups", "active", "mainGroup");
        crud.getCrudFormFactory().setVisibleProperties(
                CrudOperation.ADD,
                "name", "birthDate", "email", "salary", "phoneNumber", "maritalStatus", "groups", "active", "mainGroup",
                "password");
        crud.getCrudFormFactory().setFieldProvider("mainGroup",
                new ComboBoxProvider<>(groupService.findAll()));
        crud.getCrudFormFactory().setFieldProvider("groups",
                new CheckBoxGroupProvider<>(groupService.findAll()));
        crud.getCrudFormFactory().setFieldProvider("groups",
                new CheckBoxGroupProvider<>("Groups", groupService.findAll(), Group::getName));
        crud.getCrudFormFactory().setFieldProvider("mainGroup",
                new ComboBoxProvider<>("Main Group", groupService.findAll(), new TextRenderer<>(Group::getName), Group::getName));

        // layout configuration
        setSizeFull();
        add(crud);
        crud.setFindAllOperationVisible(false);

        // logic configuration
        crud.setOperations(
                () -> userService.findAll(),
                user -> userService.save(user),
                user -> userService.save(user),
                user -> userService.delete(user)
        );
    }

}

IMO,當你在服務層工作時,你可以注入多個存儲庫,但如果你使用存儲庫,那么只有 1 個實體 object。

基本上只是 1 個實體 object 上的 CRUD,服務並沒有太多優勢。 但是當你從兩個在業務邏輯上有某種聯系的實體工作時,服務就更有意義了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM