创建一个DataSource实例并使用内部构造函数

时间:2015-09-29 23:00:57

标签: spring spring-boot spring-security-oauth2

在我目前的spring-boot项目中,我有这个课程:

@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

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

1 个答案:

答案 0 :(得分:0)

您需要注入DataSource bean,然后使用OauthTokenStore将其传递给@Inject构造函数。

@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;
    }
}