一尘不染

在控制器的RequestMapping中启用ConditionalOnProperty

spring-mvc

我有一段代码-

    @PropertySource(value = "classpath:securityConfig.properties", ignoreResourceNotFound = true)
    @Controller
    public class IndexController {
        private static final String LOGIN_PAGE           = "login";
        private static final String HOME_PAGE            = "home";
        private static final String LOBBY_PAGE           = "lobby";
        private static final String FORGOT_USER_PAGE     = "forgotUserName";
        private static final String FORGOT_PASSWORD_PAGE = "forgotPassWord";

        @ConditionalOnProperty(name = "auth.mode", havingValue = "fixed")
        @PreAuthorize("isAnonymous()")
        @RequestMapping(method = RequestMethod.GET, value = { "/login" })
        public String getIndexPage() {
            return LOGIN_PAGE;
        }
}

但是,ConditionalOn注释不能按预期工作。我不想控制器执行,如果auth.mode是比其他任何东西fixed。注意-
auth.mode已在securityConfig.properties文件中

我想念什么吗?可能是在课堂上的注释?


阅读 577

收藏
2020-06-01

共1个答案

一尘不染

您应该将@ConditionalOnProperty注释移至类,而不是方法。

@PropertySource(value = "classpath:securityConfig.properties", ignoreResourceNotFound = true)
@Controller
@ConditionalOnProperty(name = "auth.mode", havingValue = "fixed")
public class IndexController {
    ...
}

这意味着除非满足条件,否则整个控制器将不存在于应用程序上下文中。

2020-06-01