Skip to content

Commit

Permalink
refactor(mvc): extract controllerScanner
Browse files Browse the repository at this point in the history
  • Loading branch information
goldentrash committed Jan 4, 2025
1 parent b661044 commit 3028bc7
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 11 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,6 @@ git checkout 24YoonByungWook
interface 기반의 컨트롤러와 annotation 기반의 컨트롤러가 공존하는 상태로 정상 동작하도록 구현한다.

- [ ] ControllerScanner 클래스에서 @Controller가 붙은 클래스를 찾을 수 있다.
- [x] ControllerScanner 클래스에서 @Controller가 붙은 클래스를 찾을 수 있다.
- [x] HandlerMappingRegistry 클래스에서 HandlerMapping을 처리하도록 한다.
- [x] HandlerAdapterRegistry 클래스에서 HandlerAdapter를 처리하도록 한다.
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@
import jakarta.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import org.reflections.Reflections;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -29,7 +27,8 @@ public AnnotationHandlerMapping(final Object... basePackage) {
@Override
public void initialize() {
log.info("Initialized AnnotationHandlerMapping!");
registerPackages(basePackage);
ControllerScanner controllerScanner = new ControllerScanner();
controllerScanner.scan(basePackage).forEach(this::registerController);
}

@Override
Expand All @@ -45,13 +44,6 @@ public HandlerExecution getHandler(final HttpServletRequest request) {
return handlerExecutions.get(handlerKey);
}

private void registerPackages(final Object[] packages) {
Arrays.stream(packages).map(Reflections::new)
.map(r -> r.getTypesAnnotatedWith(Controller.class))
.flatMap(Collection::stream)
.forEach(this::registerController);
}

private void registerController(final Class<?> controllerClass) {
String baseValue = controllerClass.getAnnotation(Controller.class).value();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.interface21.webmvc.servlet.mvc.tobe;

import com.interface21.context.stereotype.Controller;
import java.util.Arrays;
import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
import org.reflections.Reflections;

public class ControllerScanner {
public Set<Class<?>> scan(final Object[] packages) {
return Arrays.stream(packages).map(Reflections::new)
.map(r -> r.getTypesAnnotatedWith(Controller.class))
.flatMap(Collection::stream)
.collect(Collectors.toSet());
}
}

0 comments on commit 3028bc7

Please sign in to comment.