您可以使用@ConfigurationProperties 将来自application.properties 的值绑定到一个bean。为此,您需要注释创建 bean 的 @Bean 方法:
@Bean
@ConfigurationProperties
public BasicAuthAuthorizationInterceptor interceptor() {
return new BasicAuthAuthorizationInterceptor();
}
作为 bean 初始化的一部分,BasicAuthAuthorizationInterceptor 上的任何属性都将根据应用程序的环境进行设置。例如,如果这是你的 bean 的类:
public class BasicAuthAuthorizationInterceptor {
private Map<String, String> users = new HashMap<String, String>();
public Map<String, String> getUsers() {
return this.users;
}
}
这是你的 application.properties:
users.alice=alpha
users.bob=bravo
然后users 映射将填充两个条目:alice:alpha 和 bob:bravo。
这是一个将所有内容组合在一起的小型示例应用:
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
public class Application {
public static void main(String[] args) throws Exception {
System.out.println(SpringApplication.run(Application.class, args)
.getBean(BasicAuthAuthorizationInterceptor.class).getUsers());
}
@Bean
@ConfigurationProperties
public BasicAuthAuthorizationInterceptor interceptor() {
return new BasicAuthAuthorizationInterceptor();
}
public static class BasicAuthAuthorizationInterceptor {
private Map<String, String> users = new HashMap<String, String>();
public Map<String, String> getUsers() {
return this.users;
}
}
}
查看javadoc for ConfigurationProperties,了解有关其各种配置选项的更多信息。例如,您可以设置一个前缀,将您的配置划分为多个不同的命名空间:
@ConfigurationProperties(prefix="foo")
为了使绑定起作用,您必须在 application.properties 中声明的属性上使用相同的前缀:
foo.users.alice=alpha
foo.users.bob=bravo