복붙노트

[SPRING] @RestController를 사용하여 봄 부팅을 활성화 / 비활성화 할 수 있습니까?

SPRING

@RestController를 사용하여 봄 부팅을 활성화 / 비활성화 할 수 있습니까?

@RestController가있는 "표준"스프링 부트 응용 프로그램이 제공됩니다 (예 :

@RestController
@RequestMapping(value = "foo", produces = "application/json;charset=UTF-8")
public class MyController {
    @RequestMapping(value = "bar")
    public ResponseEntity<String> bar(
        return new ResponseEntity<>("Hello world", HttpStatus.OK);
    }
}

특정 응용 프로그램 특성이 존재하거나 존재하지 않는 경우 엔트 포인트가 시작되지 못하도록하는 주석 또는 기술이 있습니까?

참고 : 메서드 내에서 속성을 테스트하고 분해하는 것은 솔루션이 아닙니다. 끝 점이 있기 때문입니다.

세분성에 대해서는 신경 쓰지 않습니다. 즉, 단지 메소드를 활성화 / 비활성화하거나 클래스 전체가 괜찮습니다.

프로필은 속성이 아니기 때문에 프로필을 통한 제어로 내 문제가 해결되지 않습니다.

해결법

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

    1.@ConditionalOnExpression을 사용하여 간단한 해결책을 찾았습니다.

    @ConditionalOnExpression을 사용하여 간단한 해결책을 찾았습니다.

    @RestController
    @ConditionalOnExpression("${my.controller.enabled:false}")
    @RequestMapping(value = "foo", produces = "application/json;charset=UTF-8")
    public class MyController {
        @RequestMapping(value = "bar")
        public ResponseEntity<String> bar(
            return new ResponseEntity<>("Hello world", HttpStatus.OK);
        }
    }
    

    이 주석이 추가 된 상태에서, 내가 가지고 있지 않으면

    my.controller.enabled=true
    

    내 application.properties 파일에서 컨트롤러가 전혀 시작되지 않습니다.

    보다 편리하게 사용할 수도 있습니다.

    @ConditionalOnProperty("my.property")
    

    위와 똑같은 행동을합니다. 속성이 있고 "true"이면 구성 요소가 시작되고, 그렇지 않으면 구성 요소가 시작되지 않습니다.

  2. from https://stackoverflow.com/questions/29958231/can-a-spring-boot-restcontroller-be-enabled-disabled-using-properties by cc-by-sa and MIT license