最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子。
首先,需要在pom文件中依赖以下jar包
Java代码
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
其次,我们需要一个spring-boot启动类 下载
Java代码
- @SpringBootApplication
- @EnableConfigurationProperties({PropsConfig.class,YmlConfig.class})
- public class ReadApplication {
- public static void main(String[] args) {
- SpringApplication.run(ReadApplication.class, args);
- }
- }
没错,@EnableConfigurationProperties注解里指出的PropsConfig.class,YmlConfig.class分别就是读取props和yml配置文件的类。接下来,我们分别进行读取properties和yml配置文件的具体实现。
1.读取properties配置文件
在类路径下放置一个application.properties文件,大致内容如下: 下载
Java代码
- master.ds.driverClassName=com.mysql.jdbc.Driver
- master.ds.url=jdbc:mysql://localhost:3306/test
- master.ds.username=root
- master.ds.password=root
- master.ds.filters=stat
- master.ds.maxActive=20
- master.ds.initialSize=1
- master.ds.maxWait=60000
- master.ds.minIdle=10
- master.ds.timeBetweenEvictionRunsMillis=60000
- master.ds.minEvictableIdleTimeMillis=300000
- master.ds.validationQuery=SELECT ‘x‘
- master.ds.testWhileIdle=true
- master.ds.testOnBorrow=false
- master.ds.testOnReturn=false
- master.ds.poolPreparedStatements=true
- master.ds.maxOpenPreparedStatements=100
- master.ds.removeAbandoned=true
- master.ds.removeAbandonedTimeout=1800
- master.ds.logAbandoned=true
读取props配置的类,很简单,基本就是一个pojo/vo类,在类上加载@ConfigurationProperties注解即可。
Java代码 下载
- @ConfigurationProperties(prefix = "master.ds",locations = "classpath:application.properties")
- public class PropsConfig {
- private String driverClassName;
- private String url;
- private String username;
- private String password;
- private String filters;
- private String maxActive;
- private String initialSize;
- private String maxWait;
- public String getDriverClassName() {
- return driverClassName;
- }
- public void setDriverClassName(String driverClassName) {
- this.driverClassName = driverClassName;
- }
- public String getUrl() {
- return url;
- }
- public void setUrl(String url) {
- this.url = url;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getFilters() {
- return filters;
- }
- public void setFilters(String filters) {
- this.filters = filters;
- }
- public String getMaxActive() {
- return maxActive;
- }
- public void setMaxActive(String maxActive) {
- this.maxActive = maxActive;
- }
- public String getInitialSize() {
- return initialSize;
- }
- public void setInitialSize(String initialSize) {
- this.initialSize = initialSize;
- }
- public String getMaxWait() {
- return maxWait;
- }
- public void setMaxWait(String maxWait) {
- this.maxWait = maxWait;
- }
- }
单元测试类
Java代码 下载
- @RunWith(SpringJUnit4ClassRunner.class)
- @SpringBootTest(classes = ReadApplication.class)
- public class ReadApplicationPropsTests {
- @Autowired
- private PropsConfig propsConfig;
- @Test
- public void testDisplayPropsValue() {
- String driverClassName = propsConfig.getDriverClassName();
- String url = propsConfig.getUrl();
- String username = propsConfig.getUsername();
- String password = propsConfig.getPassword();
- String filters = propsConfig.getFilters();
- String maxActive = propsConfig.getMaxActive();
- String initialSize = propsConfig.getInitialSize();
- String maxWait = propsConfig.getMaxWait();
- System.out.println("driverClassName -> " + driverClassName);
- System.out.println("url -> " + url);
- System.out.println("username -> " + username);
- System.out.println("password -> " + password);
- System.out.println("initialSize -> " + initialSize);
- System.out.println("maxWait -> " + maxWait);
- }
- }
可以看到在控制台输出的测试内容:
Java代码
- driverClassName -> com.mysql.jdbc.Driver
- url -> jdbc:mysql://localhost:3306/test
- username -> root
- password -> root
- initialSize -> 1
- maxWait -> 60000
2.读取yml配置文件
在类路径下放置一个application.yml文件下载,大致内容如下:
Java代码
- myProps: #自定义的属性和值
- simpleProp: simplePropValue
- arrayProps: 1,2,3,4,5
- listProp1:
- - name: abc
- value: abcValue
- - name: efg
- value: efgValue
- listProp2:
- - config2Value1
- - config2Vavlue2
- mapProps:
- key1: value1
- key2: value2
读取yml配置文件的类。
Java代码
- @ConfigurationProperties(prefix="myProps") //application.yml中的myProps下的属性
- public class YmlConfig {
- private String simpleProp;
- private String[] arrayProps;
- private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值
- private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的属性值
- private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的属性值
- public String getSimpleProp() {
- return simpleProp;
- }
- public void setSimpleProp(String simpleProp) {
- this.simpleProp = simpleProp;
- }
- public List<Map<String, String>> getListProp1() {
- return listProp1;
- }
- public List<String> getListProp2() {
- return listProp2;
- }
- public String[] getArrayProps() {
- return arrayProps;
- }
- public void setArrayProps(String[] arrayProps) {
- this.arrayProps = arrayProps;
- }
- public Map<String, String> getMapProps() {
- return mapProps;
- }
- public void setMapProps(Map<String, String> mapProps) {
- this.mapProps = mapProps;
- }
- }
单元测试类
Java代码 下载
- @RunWith(SpringJUnit4ClassRunner.class)
- @SpringBootTest(classes = ReadApplication.class)
- public class ReadApplicationYmlTests {
- @Autowired
- private YmlConfig ymlConfig;
- @Test
- public void testDisplayYmlValue() throws JsonProcessingException {
- System.out.println("simpleProp: " + ymlConfig.getSimpleProp());
- ObjectMapper objectMapper = new ObjectMapper();
- System.out.println("arrayProps: " + objectMapper.writeValueAsString(ymlConfig.getArrayProps()));
- System.out.println("listProp1: " + objectMapper.writeValueAsString(ymlConfig.getListProp1()));
- System.out.println("listProp2: " + objectMapper.writeValueAsString(ymlConfig.getListProp2()));
- System.out.println("mapProps: " + objectMapper.writeValueAsString(ymlConfig.getMapProps()));
- }
- }
可以看到在控制台输出的测试内容:
Java代码
- simpleProp: simplePropValue
- arrayProps: ["1","2","3","4","5"]
- listProp1: [{"name":"abc","value":"abcValue"},{"name":"efg","value":"efgValue"}]
- listProp2: ["config2Value1","config2Vavlue2"]
- mapProps: {"key1":"value1","key2":"value2"}
时间: 2024-10-10 05:20:10