Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 创建DataSource的实例并在构造函数内部使用_Spring_Spring Boot_Spring Security Oauth2 - Fatal编程技术网

Spring 创建DataSource的实例并在构造函数内部使用

Spring 创建DataSource的实例并在构造函数内部使用,spring,spring-boot,spring-security-oauth2,Spring,Spring Boot,Spring Security Oauth2,在我当前的spring boot项目中,我有这样一个类: @Component public class OauthTokenStore extends JdbcTokenStore { public OauthTokenStore() { super(...); } } super(…)的atribute应该是有效的数据源。我的应用程序中有此配置。属性: # jdbc.X spring.datasource.driverClassName=com.mysql.jdbc.Dri

在我当前的spring boot项目中,我有这样一个类:

@Component
public class OauthTokenStore extends JdbcTokenStore {
  public OauthTokenStore() {
    super(...);
  }
}
super(…)
的atribute应该是有效的数据源。我的
应用程序中有此配置。属性

# 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

有没有办法创建一个数据源实例并在这个构造函数中使用?

您需要注入一个
数据源
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;
    }
}