一、使用注解@PropertySource
指定路径
使用 @PropertySource 指定配置文件路径,支持 properties 和 XML 的配置文件,但不支持 yml。
属性赋值
可以用注解 @Value 对属性直接赋值、${}获取配置文件的值、SPEL表达式#{}。
- 直接赋值:@Value("name jack")
- 读取配置文件:@Value("${user.age}")
- 指定默认值:@Value("${user.desc:default desc}") 表示如果没有user.desc的配置,则赋值为default desc
- SPEL表达式:@Value("#{'${user.username}'?.toUpperCase()}") 表示将从配置文件读取的值转为大写,?可以不填,表示如果没有user.username的配置,则忽略
例子
config.properties内容
ps.datasource.driverClassName=com.mysql.jdbc.Driver
ps.datasource.jdbcUrl=jdbc:mysql://localhost:3306/spring?useTimezone=true&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&tcpRcvBuf=1024000&useOldAliasMetadataBehavior=true&useSSL=false&rewriteBatchedStatements=true&useAffectedRows=true
ps.datasource.username=root
ps.datasource.password=root
ps.datasource.minIdle=1
ps.datasource.maxPoolSize=10
ps.datasource.connectionTimeout=3000
ps.datasource.idleTimeout=300000
配置类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | /** * 使用@PropertySource指定具体的配置文件,用@Value设置具体的属性值, 不支持yml */ @Component @PropertySource ( "classpath:config.properties" ) public class DbProperties { @Value ( "${ps.datasource.driverClassName}" ) private String driverClassName; @Value ( "${ps.datasource.jdbcUrl}" ) private String jdbcUrl; @Value ( "${ps.datasource.username}" ) private String username; @Value ( "${ps.datasource.password}" ) private String password; @Value ( "${ps.datasource.minIdle}" ) private int minIdle; @Value ( "${ps.datasource.maxPoolSize}" ) private int maxPoolSize; @Value ( "${ps.datasource.connectionTimeout}" ) private int connectionTimeout; @Value ( "${ps.datasource.idleTimeout}" ) private int idleTimeout; public String getDriverClassName() { return driverClassName; } public void setDriverClassName(String driverClassName) { this .driverClassName = driverClassName; } public String getJdbcUrl() { return jdbcUrl; } public void setJdbcUrl(String jdbcUrl) { this .jdbcUrl = jdbcUrl; } 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 int getMinIdle() { return minIdle; } public void setMinIdle( int minIdle) { this .minIdle = minIdle; } public int getMaxPoolSize() { return maxPoolSize; } public void setMaxPoolSize( int maxPoolSize) { this .maxPoolSize = maxPoolSize; } public int getConnectionTimeout() { return connectionTimeout; } public void setConnectionTimeout( int connectionTimeout) { this .connectionTimeout = connectionTimeout; } public int getIdleTimeout() { return idleTimeout; } public void setIdleTimeout( int idleTimeout) { this .idleTimeout = idleTimeout; } @Override public String toString() { return "DbProperties{" + "driverClassName='" + driverClassName + '\ '' + ", jdbcUrl='" + jdbcUrl + '\ '' + ", username='" + username + '\ '' + ", password='" + password + '\ '' + ", minIdle=" + minIdle + ", maxPoolSize=" + maxPoolSize + ", connectionTimeout=" + connectionTimeout + ", idleTimeout=" + idleTimeout + '}' ; } } |
二、使用Environment
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /** * Environment可以获取classpath下配置的属性值,无需指定具体的配置文件。 不支持yml */ @Component public class UserProperties { @Autowired private Environment env; public String getUserName() { return env.getProperty( "user.name" ); } public String getPassword() { return env.getProperty( "user.password" ); } } |
三、使用PropertiesLoaderUtils
1 2 3 4 5 6 | try { Properties properties = PropertiesLoaderUtils.loadAllProperties( "config.properties" ); System.out.println(properties.getProperty( "user.name" )); } catch (IOException e) { e.printStackTrace(); } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/201380/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)