我需要在没有存储库的情况下使服务无效[关闭]

问题描述 投票:1回答:1

我的任务是通过使用Flux / Mono使UserService成为被动的。

我理解通量和单声道是如何工作的,但只使用存储库而不是arraylists。

UserServiceImpl:

@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class UserServiceImpl implements UserService {

    private List<User> users = new ArrayList<>();

    @PostConstruct
    public void postConstruct() {
        this.users.add(User.builder()
                        .id(1L)
                        .username("username1")
                        .age(14)
                        .build());
    }

    @Override
    public User findOne(Long userId) {
        LOGGER.info("UserService: execute findOne(userId) method");
        return this.users.stream()
                .filter(user -> user.getId().equals(userId))
                .findFirst()
                .orElse(null);
    }

    @Override
    public List<User> findAll() {
        LOGGER.info("UserService: execute findAll() method");

        return this.users;
    }

    @Override
    public void add() {
        LOGGER.info("UserService: execute add() method");

        this.users.add(User.builder()
                .id(3L)
                .username("username3")
                .age(34)
                .build());
    }
}
java spring-boot reactive-programming project-reactor reactor
1个回答
1
投票

您可以从List创建Flux。例如:

Flux<User> userStream = Flux.fromIterable(users)

或者如果需要返回一个

Flux.just(user)
Mono.just(user)

在现有流中添加值

userStream = Flux.concat(userStream, Flux.just(newUser));

更多细节:https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html

© www.soinside.com 2019 - 2024. All rights reserved.