gpt4 book ai didi

java - Spring - 如何从 application.properties 中的 spring.datasource 配置 OracleDataSource

转载 作者:行者123 更新时间:2023-12-02 11:49:27 27 4
gpt4 key购买 nike

在我的 application.properties 中,我有一些 spring.datasource 字段

spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.username=talon
spring.datasource.password=talon

这些应该从 @Configuration 带注释的类中检索

@Configuration
public class Db {

@NotNull
private String username;
@NotNull
private String password;
@NotNull
private String url;

public void setUsername(String username) {
this.username = username;
}

public void setPassword(String password) {
this.password = password;
}

public void setUrl(String url) {
this.url = url;
}

public Db() {
OracleDataSource dataSource = null;
try {
dataSource = new OracleDataSource();
dataSource.setUser(username);
dataSource.setPassword(password);
dataSource.setURL(url);
dataSource.setImplicitCachingEnabled(true);
dataSource.setFastConnectionFailoverEnabled(true);
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("select * from BOOK");
rs.next();
System.out.println(rs.getString(2));
} catch (SQLException e) {
e.printStackTrace();
}
}

}

但是我无法从那里检索用户名 密码url,我应该在某处添加另一个注释还是我在做什么

像这样我有错误:java.sql.SQLException:指定的 Oracle URL 无效:OracleDataSource.makeURL

如果我使用 dataSource.setURL("jdbc:oracle:thin:@localhost:1521:XE"); 设置正确的网址,它无法读取用户名password 因为它们为 null 并且我有 java.sql.SQLException: ORA-01017: invalid username/password;登录被拒绝

最佳答案

您有两个问题:

  1. 您需要使用另一个注释才能填充您的字段。因此用 @ConfigurationProperties("spring.datasource") 注释该类

  2. 您无法初始化 OracleDataSource直接在构造函数中(即 Db() ),因为在调用构造函数期间不会填充属性(您的用户名/密码/url 字段),因此您可以做的一件事是创建另一个方法并用 @PostContruct 对其进行注释为了您的dataSource正确创建。

一个例子:

@PostConstruct
private void init() {
// your data source initialization

}

一个建议是更改初始化数据源的方式,而不是尝试在构造函数中创建它,您可以创建一个可以用 @Bean 注释的新方法。并让它返回您的数据源,您可以稍后使用 @Autowired 使用它.

关于java - Spring - 如何从 application.properties 中的 spring.datasource 配置 OracleDataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47984235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com