我目前正试图从我的应用程序连接数据库。属性文件以获取不同类中的JDBC连接。我用了下面的方法来做这件事。
@Component
public class databaseConn {
public static int counter=0;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
//Retrieves Everything from the database and sends it to the front end
public ArrayList<Alert> datacon() throws ClassNotFoundException, SQLException {
ArrayList<Alert> giveBack = new ArrayList<Alert>();
Statement stmt = null;
Connection conn=null;
System.out.println(url);
System.out.println(username);
System.out.println(password);
try {
conn = DriverManager.getConnection(url, username, password);
}
catch (Exception e){
System.out.println("Couldn't Connect");
}
由于某些原因,当我打印这些值时,它们显示为Null并且无法连接。我做错了什么?
编辑:这是应用程序。属性文件。我编辑了每个字段的值,但其他所有内容都可以看到
spring.application.name=sampleApp
spring.datasource.url=xxxx
spring.datasource.username=username
spring.datasource.password=password
spring.http.encoding.enabled=false
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
何时调用datacon()?如果是从构造函数中进行操作,则这些值尚未设置(除非使用构造函数注入将属性添加到构造函数中,否则这些属性是在构造类之后注入的)。如果你想验证它们是否被设置,从代码和你的属性来看,它们应该是,添加一个postconstruct方法。
import javax.annotation.PostConstruct;
...
@PostConstruct
public void verifyMyPrope() {
System.out.println(username);
}
作为旁注,除非这是测试代码,否则避免使用System。出去,这是顽皮的:)