【发布时间】:2021-03-27 18:18:54
【问题描述】:
我正在学习 Spring Framework 并尝试从 .properties 文件中注入属性。
这是我的 .properties 文件
sprint.datasource.username=hamnghi
sprint.datasource.password=hamnghi
sprint.datasource.url=jdbc:h2:~/test;
sprint.datasource.driver=org.h2.Driver;
当我尝试将driver 字段传递给Class.forName(drive) 时,程序无法连接到
数据库并抛出了一个java.lang.ClassNotFoundException: org/h2/Driver;,但它将driver变量作为“org.h2.Driver”打印到控制台就好了。
My console screenshot
我也用Class.forName("org.h2.Driver") 运行了这个程序,运行良好;但是,当我用 driver 替换它时,它不起作用
这是我的课。
package H2Database.db_connection;
import H2Database.functionality.Logging;
import org.springframework.beans.factory.annotation.Value;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Logger;
public class H2Connection {
private final static Logger logger = Logging.getLogger();
@Value("${sprint.datasource.url}")
private String url;
@Value("${sprint.datasource.username}")
private String username;
@Value("${sprint.datasource.password}")
private String password;
@Value("${sprint.datasource.driver}")
private String driver;
public Connection open(){
try {
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, username, password);
return connection;
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
return null;
}
}
@Override
public String toString() {
return "H2Connection{" +
"url='" + url + '\'' +
", username='" + username + '\'' +
", driver='" + driver + '\'' +
'}';
}
}
【问题讨论】:
-
当 Boot 为你做这一切时,你为什么要做这一切?此外,您似乎正在学习超过 14 年的教程,因为从那时起就不再需要
Class.forName。
标签: java spring-boot dependency-properties