Spring基于注解讀取外部配置文件
一、使用注解@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()}') 表示將從配置文件讀取的值轉(zhuǎn)為大寫,?可以不填,表示如果沒有user.username的配置,則忽略例子
config.properties內(nèi)容
ps.datasource.driverClassName=com.mysql.jdbc.Driverps.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=trueps.datasource.username=rootps.datasource.password=rootps.datasource.minIdle=1ps.datasource.maxPoolSize=10ps.datasource.connectionTimeout=3000ps.datasource.idleTimeout=300000
配置類
/** * 使用@PropertySource指定具體的配置文件,用@Value設(shè)置具體的屬性值, 不支持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
/** * Environment可以獲取classpath下配置的屬性值,無需指定具體的配置文件。 不支持yml */@Componentpublic class UserProperties { @Autowired private Environment env; public String getUserName() { return env.getProperty('user.name'); } public String getPassword() { return env.getProperty('user.password'); }}
三、使用PropertiesLoaderUtils
try { Properties properties = PropertiesLoaderUtils.loadAllProperties('config.properties'); System.out.println(properties.getProperty('user.name')); } catch (IOException e) { e.printStackTrace(); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Django-simple-captcha驗證碼包使用方法詳解2. js+h5 canvas實現(xiàn)圖片驗證碼3. CSS3實例分享之多重背景的實現(xiàn)(Multiple backgrounds)4. 解決VUE 在IE下出現(xiàn)ReferenceError: Promise未定義的問題5. Docker暴露2375端口導(dǎo)致服務(wù)器被攻擊問題及解決方法6. 匹配模式 - XSL教程 - 47. 解決VUE項目使用Element-ui 下拉組件的驗證失效問題8. 3分鐘學(xué)會如何上手supervisor看門狗9. .NET使用YARP通過編碼方式配置域名轉(zhuǎn)發(fā)實現(xiàn)反向代理10. 輕松學(xué)習(xí)XML教程

網(wǎng)公網(wǎng)安備