我正在使用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服务器)。
感谢。
答案 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
更多信息: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");
}
}