创建 DataSource 的实例并使用内部构造函数
create an instance of DataSource and use inside constructor
在我当前的 spring-boot 项目中,我有这个 class:
@Component
public class OauthTokenStore extends JdbcTokenStore {
public OauthTokenStore() {
super(...);
}
}
super(...)
的属性应该是有效的数据源。我的 application.properties
:
中有这个配置
# jdbc.X
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/lojacms
spring.datasource.username=root
spring.datasource.password=
# hibernate.X
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=validate
有什么方法可以创建数据源的实例并在此构造函数中使用?
您需要注入一个 DataSource
bean,然后您可以使用 @Inject
.
将其传递给您的 OauthTokenStore
构造函数
@Component
public class OauthTokenStore extends JdbcTokenStore {
@Inject
public OauthTokenStore(DataSource ds) {
super(ds);
}
}
如果您还没有在您的应用程序中定义 DataSource
类型的 bean,您将需要一个:
@Configuration
public class Config {
@Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost/lojacms");
dataSource.setUsername("root");
dataSource.setPassword("");
return dataSource;
}
}
在我当前的 spring-boot 项目中,我有这个 class:
@Component
public class OauthTokenStore extends JdbcTokenStore {
public OauthTokenStore() {
super(...);
}
}
super(...)
的属性应该是有效的数据源。我的 application.properties
:
# jdbc.X
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/lojacms
spring.datasource.username=root
spring.datasource.password=
# hibernate.X
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=validate
有什么方法可以创建数据源的实例并在此构造函数中使用?
您需要注入一个 DataSource
bean,然后您可以使用 @Inject
.
OauthTokenStore
构造函数
@Component
public class OauthTokenStore extends JdbcTokenStore {
@Inject
public OauthTokenStore(DataSource ds) {
super(ds);
}
}
如果您还没有在您的应用程序中定义 DataSource
类型的 bean,您将需要一个:
@Configuration
public class Config {
@Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost/lojacms");
dataSource.setUsername("root");
dataSource.setPassword("");
return dataSource;
}
}