Discuss
/
Java
/
注入配置 (PS:jdbc.properties文件, #username=mavenMVC 不能正确读取到username,不知道为啥,读取出来不正确,总是为 L 字样)
注入配置 (PS:jdbc.properties文件, #username=mavenMVC 不能正确读取到username,不知道为啥,读取出来不正确,总是为 L 字样)
Topic source- 1
净净一隅
1. 自定义读取db配置文件: MySqlConfig,返回一个HikariConfig
package com.config;
import com.zaxxer.hikari.HikariConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Configuration
@PropertySource("jdbc.properties")
@Component
public class MySqlConfig {
@Value("${account}")
String username;
@Value("${jdbcUrl}")
String jdbcUrl;
@Value("${password}")
String password;
@Value("${connectionTimeout}")
String connectionTimeout;
@Value("${idleTimeout}")
String idleTimeout;
@Value("${maximumPoolSize}")
String maximumPoolSize;
@Value("${autoCommit}")
String autoCommit;
public HikariConfig getConfig(){
HikariConfig config = new HikariConfig();
config.setJdbcUrl(jdbcUrl);
config.setUsername(username);
config.setPassword(password);
config.addDataSourceProperty("connectionTimeout", connectionTimeout); // 连接超时
config.addDataSourceProperty("idleTimeout", idleTimeout); // 空闲超时
config.addDataSourceProperty("maximumPoolSize", maximumPoolSize); // 最大连接数
config.addDataSourceProperty("autoCommit", autoCommit); // 自动提交
return config;
}
}
2. AppConfig,定义DataSource
@Configuration
@ComponentScan
public class AppConfig {
public static ApplicationContext context;
@Autowired
private MySqlConfig mySqlConfig;
/*
@Autowired
private DBService dbService;
//使用Resources+properies方法
@Bean
DataSource createDataSource() throws IOException {
HikariConfig config = new HikariConfig();
Properties props= dbService.getDbProperty();
config.setJdbcUrl(props.getProperty("jdbcUrl"));
config.setUsername(props.getProperty("account"));
config.setPassword(props.getProperty("password"));
config.addDataSourceProperty("connectionTimeout", props.getProperty("connectionTimeout")); // 连接超时
config.addDataSourceProperty("idleTimeout", props.getProperty("idleTimeout")); // 空闲超时
config.addDataSourceProperty("maximumPoolSize", props.getProperty("maximumPoolSize")); // 最大连接数
config.addDataSourceProperty("autoCommit", props.getProperty("autoCommit")); // 自动提交
DataSource ds = new HikariDataSource(config);
return ds;
}
*/
//使用PropertySource注解注入配置
@Bean
DataSource createDataSource() throws IOException {
HikariConfig config = mySqlConfig.getConfig();
DataSource ds = new HikariDataSource(config);
return ds;
}
}
3. resources/jdbc.properties文件
#mysql数据库配置
jdbcUrl = jdbc:mysql://localhost:3306/learnjdbc?useUnicode=true&characterEncoding=utf-8
#username=mavenMVC 不能正确读取到username,不知道为啥,读取出来不正确,总是为 L 字样
account = mavenMVC
password = 123456
# 连接超时:1秒
connectionTimeout = 10000
# 空闲超时:60秒
idleTimeout = 60000
# 最大连接数:10
maximumPoolSize = 10
# 自动提交
autoCommit = true