[프리코스] 우테코 프리코스 4주차 회고

꺄악 운석이다·2022년 11월 28일
0

우테코 프리코스

목록 보기
1/7

사실 저번 주 수요일에 과제를 제출함으로써 프리코스의 모든 과정이 되었으나 이제서야 회고를 쓰게 되었다.

4주차 과제는 다리 건너기 게임 구현이었다.

규칙은 한 때 유명했던 오징어게임의 다리 건너기랑 비슷하다고 생각하면 된다.

4주차 과제에는 아쉬움이 다소 많이 남아있다.

처음 구현할 때 도메인별로 책임을 나누고 도메인과 입출력 부분을 분리하긴 했으나

컨트롤러 구현이 어려워 일단 하나의 메소드에 다 구현해버리고 이후에 분리를 하자 라는 생각으로 구현을 하였더니 이후 분리가 어려워졌다.

이로 인해 컨트롤러 부분에 비즈니스 로직이 들어가기도 하였고 한번에 알아보기 힘든 코드가 되었다.

이후 서비스나 DTO를 넣어보려했으나 이미 완성된 로직에 투입하기에는 너무 어렵다고 느껴져 포기했었다.

그래도 저번 주차에는 적용하지 못한 AppConfig를 적용해 볼 수 있어서 좋았다.


AppConfig

알다시피 스프링에 빈을 주입하는 방법에는 여러 방법이 있으나 이 중 @Configuration을 이용하여 스프링 컨테이너를 하나 만든 후 @Bean 어노테이션을 사용하여 스프링 컨테이너에 등록하는 방법이 있다.

@Configuration
public class AppConfig {
    @Bean
    UserRepository userRepository(){
    	return new UserRepositoryImpl();
    }
    
    @Bean
    PasswordEncoder passwordEncoder(){
    	return new BCyptPasswordEncoder();
    }
    
    @Bean
    UserService userService(){
    	return new UserServiceImpl(userRepository(), passwordEncoder());
    }
}

위의 방식을 응용해서 아래와 같이 만들었다.

public class AppConfig {

    public static Controller config() {
        return new Controller(new InputView(validation()),
                new BridgeGame(),
                new BridgeMaker(bridgeNumberGenerator()),
                new OutputView());
    }

    public static BridgeNumberGenerator bridgeNumberGenerator() {
        return new BridgeRandomNumberGenerator();
    }

    public static Validation validation() {
        return new Validation();
    }
}

비록 Spring이 아닌 순수 Java인지라 AppConfig에서 직접 객체를 생성하고 DI를 해주는 방법이었으나 그럼에도 좋은 시도라고 생각한다.

profile
멸종은 면하자

0개의 댓글