本教程以 SOFABoot Core 工程为例,示范如何获取 resources/config/application.properties
中配置的属性信息。其他类型的 SOFABoot 工程也是采用类似方法,不再一一赘述。
前置条件
单击 下载示例工程。
用 IDE 打开主 pom.xml 所在文件夹。用 IDE 打开工程的更多详情,可参考 SOFABoot 快速开始。
说明一个没有引入任何中间件的 SOFABoot 工程就是一个标准的 Spring Boot 工程。关于 Spring Boot 的学习可以 参考这里。
获取 properties 配置信息
通过 mvn 命令生成工程原型后,可以通过下述操作获取 properties 配置的属性:
通过 @Value 注解来加载对应的配置属性。
通过注入的方式来获取配置属性。
通过 @Value 注解来加载对应的配置属性
对于 application.properties
中的属性值,如果有某个类需要获取对应值,操作步骤如下:
将该类配置为一个 Bean。
通过
@Value("${属性key}")
注入属性值。
代码逻辑,示例如下:
@Component
public class AppConfig{
@Value("${app.config.first}")
private String appConfigFirst;
public String getAnnotationAppConfigFirst(){
return appConfigFirst;
}
}
将类配置为 Bean 的 2 种方式
以上述 AppConfig
为例:
方式 a:在待配置类上加一个
@Component
注解即可。SOFABoot 基于 Spring boot,不需要再声明包扫描标签
<context:component-scan base-package="com.alipay.APPNAME">
在 SOFABoot 的启动函数
SpringBootSpringApplication
中,已添加了注解@org.springframework.boot.autoconfigure.SpringBootApplication
。通过这个注解可以自动配置包扫描路径。
方式 b 操作步骤示例如下:
删除
@Component
注解。在工程的配置文件中,例如
SOFABoot_coreDemo-service
模块下src/main/resources/META-INF/SOFABoot_coreDemo/SOFABoot_coreDemo-service.xml
中配置这个 Bean。示例如下:<!--通过@Value注入 sofa-config --> <bean id="appConfig" class="com.alipay.APPNAME.configuration.AppConfig"/>
验证获取的配置信息
操作步骤如下:
在
application.properties
中,配置键值对:app.config.first=FirstConfig
。在
SOFABoot_coreDemo-service
模块下启动类 src/main/java/com/alipay/APPNAME/SOFABootSpringApplication.java 中,通过示例代码,可以实现下述目标:获取配置信息。
向控制台输出获取的信息。
通过 TestCase 对期待信息和实际获取的信息进行比对。
代码逻辑,示例如下:
//configed in application.properties
final String expectedValue ="FirstConfig";
//get AppConfig
AppConfig appConfig = applicationContext.getBean(AppConfig.class);
//get value by annnotation
//获取配置
String annotationValue = appConfig.getAnnotationAppConfigFirst();
//控制台输出
System.out.println("FirstAppConfigByAnnotation = "+ annotationValue);
//通过 TestCase 进行测试:
TestCase.assertEquals(expectedValue,annotationValue);
更多信息,参见 注解 @SpringBootApplication 及 Spring Boot 代码结构最佳实践。
通过注入 Bean 来获取 properties 配置的属性值
通过注入 org.springframework.core.env.Environment
类型的 Bean 来获取 properties
配置的属性值,操作步骤如下:
将该类配置为一个 Bean。具体的 2 种配置方式,参见 将类配置为 Bean 的 2 种方式。
注入
Environment
对象。通过
getProperty()
方法获取属性值。
代码逻辑,示例如下:
@Component
public class AppConfig{
@Autowired
private Environment environment;
public String getEnvFirstConfigValue(){
return environment.getProperty("app.config.first");
}
}
验证获取的配置信息
操作步骤如下:
在
application.properties
中,配置键值对:app.config.first=FirstConfig
。在
SOFABoot_coreDemo-service
模块下启动类 src/main/java/com/alipay/APPNAME/SOFABootSpringApplication.java 中,通过示例代码,可以实现下述目标:获取配置信息。
向控制台输出获取的信息。
通过 TestCase 对期待信息和实际获取的信息进行比对。
获取配置信息的代码逻辑,示例如下:
//configed in application.properties
final String expectedValue ="FirstConfig";
//get AppConfig
AppConfig appConfig = applicationContext.getBean(AppConfig.class);
//get value by environment
String envValue = appConfig.getEnvFirstConfigValue();
//控制台输出获取到的属性
System.out.println("FirstAppConfigByEnvironment = "+ envValue);
//通过 TestCase 进行测试
TestCase.assertEquals(envValue,annotationValue);