配置spring boot中standalone.xml中提到的属性/属性

时间:2017-07-19 05:09:45

标签: java xml spring-boot

我正在使用Spring启动构建一个新应用程序,并尝试在现有的 module-option 属性中配置 name value 属性申请如下图所示:
<security-domain name="someDomainName">
   <authentication>
        <login-module code="someClassName" module="someModule">
           <module-option name="someName" value="someValue"/>
        </login-module>
   </authentication>
</security-domain>

现在,如何在Spring-Boot中配置standalone.xml(使用JBoss应用程序服务器)中提到的上述属性(注意我正在使用Apache Tomcat Web服务器)。

感谢。

1 个答案:

答案 0 :(得分:0)

根据我的理解,您要在新的spring boot java配置中创建和使用属性。弹簧启动创建和设置属性的最佳做法是为它们创建bean,如下所示:

@Component
@ConfigurationProperties(prefix = "my")
public class MyProperties {
    private String myFirstProperty;

    public String getMyFirstProperty() {
        return this.myFirstProperty;
    }

    public void setMyFirstProperty(String myFirstProperty) {
        this.myFirstProperty = myFirstProperty;
    }
}

现在,如果将属性my.my-first-property=value放在application.properties src/main/resources弹出启动中,将自动按定义的前缀(在这种情况下为my)选择属性并尝试将其与bean注释@ConfigurationProperties匹配。

执行此操作后,您可以在Java配置中的任何位置注入此bean,以将属性用作标准POJO。

您现在可以使用此bean通过类,枚举,列表,地图等创建更复杂的配置,我建议您通过将application.properties更改为application.yml

来使用YAML语法

更多信息:docs

编辑:示例如何在配置类中使用属​​性:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    private final MyProperties myProperties;

    public WebSecurityConfig(MyProperties myProperties) { // inject the property class using constructor injections
        this.myProperties = myProperties;
    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .ldapAuthentication()
                .userDnPatterns(myProperties.getMyFirstProperty()) // here i use a property loaded from external source (application.properties/yml)
                .groupSearchBase("ou=groups")
                .contextSource(contextSource())
                .passwordCompare()
                    .passwordEncoder(new LdapShaPasswordEncoder())
                    .passwordAttribute("userPassword");
    }

}