복붙노트

[SPRING] Spring 4 MVC에서 컨트롤러를 내부 클래스로 중첩 할 수 있습니까?

SPRING

Spring 4 MVC에서 컨트롤러를 내부 클래스로 중첩 할 수 있습니까?

나는 컨트롤러를 / site /에 매핑하고 그 두 개의 다른 컨트롤러 내에서 다음과 같이 보길 원합니다.

@Controller
@RequestMapping(value="/api")
public class ApiController {
    @Controller
    @RequestMapping(value="/foo")
    public class FooController {
        //Some /foo/* methods here
    }

    @Controller
    @RequestMapping(value="/bar")
    public class BarController {
       //Some /bar/* methods here
    }

    //Other methods that don't match /foo or /bar
}

괜찮습니까? 또는 / site / foo 및 / site / bar 매핑을 사용하여 두 개의 별도 컨트롤러로 나누는 것이 더 좋습니다.

해결법

  1. ==============================

    1.클래스 계층 구조를 리소스 계층 구조에 연결하는 것이 여기있는 주요 디자인 드라이버가되어서는 안됩니다.

    클래스 계층 구조를 리소스 계층 구조에 연결하는 것이 여기있는 주요 디자인 드라이버가되어서는 안됩니다.

    Spring MVC에서 컨트롤러는 테스트하기 쉽도록 간단한 POJO이며, 상속에 비해 컴포지션이 우선하며, 주석은 의미를 전달하고 코드를 읽기 쉽도록 만들어줍니다.

    제어기 아래의 중첩 제어기는 이러한 목표 중 몇 가지를 무효화합니다.

  2. ==============================

    2.매핑을위한 클래스가 아닌 메소드를 사용해야합니다. 코드는 다음과 같이 작성해야합니다.

    매핑을위한 클래스가 아닌 메소드를 사용해야합니다. 코드는 다음과 같이 작성해야합니다.

    @Controller
    @RequestMapping(value="/site")
    public class ApiController {
        @RequestMapping(value="/foo", method=RequestMethod.GET)
        public String doFoo {
            // Foo Logic
            return "Running Foo";
        }
        @RequestMapping(value="/bar", method=RequestMethod.GET)
        public String doBar {
            // Bar Logic
            return "Running Bar";
        }
    }
    
  3. from https://stackoverflow.com/questions/28056787/is-it-possible-to-nest-controllers-have-controllers-as-inner-classes-in-spring-4 by cc-by-sa and MIT license