Java Spring安全性-以编程方式读取配置

Java Spring安全性-以编程方式读取配置,java,spring,spring-security,Java,Spring,Spring Security,我正在使用带有自定义登录表单的Spring安全性。我使用配置类自定义了配置: public class WebSecurityConfig extends WebSecurityConfigurerAdapter { ... @Override protected void configure(HttpSecurity http) throws Exception { http .formLogin()

我正在使用带有自定义登录表单的Spring安全性。我使用配置类自定义了配置:

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...    
    @Override
    protected void configure(HttpSecurity http) throws Exception {          
        http
        .formLogin()
        .loginPage("/signin")
        .successForwardUrl("/landing")
        .failureForwardUrl("/signinfailed");
    }
...
}
正如代码段所示,我的登录URL不是标准的。现在我必须将这些URL硬编码到我的应用程序中的很多地方:模板、一些具有自定义登录要求的控制器、集成测试。我觉得这种做法违反了一点原则。如果有一天我必须更改URL,我需要确保所有出现的URL都被修改,等等

有没有一种方法可以访问Spring安全配置,或者至少以编程方式登录form part,这样我就可以使用配置的值,而无需在多个位置重复指定的值


我已经检查了
HttpSecurity
类,似乎在类设计中没有读取权限。一个可能的选择是在configuration类中构建访问机制,但它也有自己的问题(需要硬编码默认值,如果自定义项的数量增加,可读性差,等等)如果有一种直接的方式来访问配置会更方便。

为什么不简单地将登录URL提取到常量(
private final static login\u URL
)并在需要的地方使用它呢?这绝对是一种可能的方式,但是,如果我跳过任何配置项,我必须引用这些URL的默认值。例如,我没有在配置中指定成功转发URL,那么我仍然必须为它定义一个常量,并像
private final static String success_forward_URL=“/”那样定义它。我试图避免重复Spring安全实现中定义的默认值。您可以将这些URL保存在外部属性文件中。您可以在应用程序启动时加载这些URL。这样您就需要更新单个文件,并且这些URL也可以配置。@InfiniteFactor您找到解决方案了吗?