Discuss / Java / 注入配置 (PS:jdbc.properties文件, #username=mavenMVC 不能正确读取到username,不知道为啥,读取出来不正确,总是为 L 字样)

注入配置 (PS:jdbc.properties文件, #username=mavenMVC 不能正确读取到username,不知道为啥,读取出来不正确,总是为 L 字样)

Topic source

净净一隅

#1 Created at ... [Delete] [Delete and Lock User]

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


  • 1

Reply