我有一段代码-
@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文件中
auth.mode
fixed
securityConfig.properties
我想念什么吗?可能是在课堂上的注释?
您应该将@ConditionalOnProperty注释移至类,而不是方法。
@ConditionalOnProperty
@PropertySource(value = "classpath:securityConfig.properties", ignoreResourceNotFound = true) @Controller @ConditionalOnProperty(name = "auth.mode", havingValue = "fixed") public class IndexController { ... }
这意味着除非满足条件,否则整个控制器将不存在于应用程序上下文中。