这篇文章来说一下,如果使用jdbc,如何注入jdbc连接的一些属性呢?
1. 是配置文件中定义jdbc连接的属性
dataSource.driverClassName=com.mysql.cj.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://localhost:3306/mysql?characterEncoding=utf-8&serverTimezone=GMT%2B8
dataSource.username=root
dataSource.password=root
2. 属性注入,是通过@Value("#{}"),
注意:
这种注入方式,并不是spring boot 才有的。应该是spring 的时候就已经有这个注解。
“url”这种命名一直报错,改成了"jdbcUrl"
一定是${}去取,不知道为啥刚开始写成了#{},找了半天异常。
@Component(value = "dataSourceValueConfig")
public class DataSourceValueConfig {
@Value("${dataSource.driverClassName}")
private String driverClassName;
@Value("${dataSource.jdbcUrl}")
private String jdbcUrl;
@Value("${dataSource.username}")
private String username;
@Value("${dataSource.password}")
private String password;
public String getDriverClassName() {
return driverClassName;
}
public String getJdbcUrl() {
return jdbcUrl;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
4. 使用的时候,就正常的注入,
@Resource
private DataSourceValueConfig dataSourceValueConfig;
@Resource
private DataSourceClassConfig dataSourceClassConfig;
private String driverClassName;
private String jdbcUrl;
private String userName;
private String password;
@PostConstruct
public void init(){
//dataSourceConfig = ApplicationContextBeanUtils.getBean("dataSourceConfig", DataSourceConfig.class);
driverClassName = dataSourceValueConfig.getDriverClassName();
jdbcUrl = dataSourceValueConfig.getJdbcUrl();
userName = dataSourceValueConfig.getUsername();
password = dataSourceValueConfig.getPassword();
System.out.println("init.dataSourceConfig.driverClassName--------" + driverClassName);
System.out.println("init.dataSourceConfig.url--------" + jdbcUrl);
System.out.println("init.dataSourceConfig.username--------" + userName);
System.out.println("init.dataSourceConfig.password--------" + password);
driverClassName = dataSourceClassConfig.getDriverClassName();
jdbcUrl = dataSourceClassConfig.getJdbcUrl();
userName = dataSourceClassConfig.getUsername();
password = dataSourceClassConfig.getPassword();
System.out.println("init.dataSourceClassConfig.driverClassName--------" + driverClassName);
System.out.println("init.dataSourceClassConfig.url--------" + jdbcUrl);
System.out.println("init.dataSourceClassConfig.username--------" + userName);
System.out.println("init.dataSourceClassConfig.password--------" + password);
}