Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
Java 使用弹簧&x27;s TransactionAwareDataSourceProxy在代码中,而不是xml中_Java_Spring_Jooq_Spring Transactions - Fatal编程技术网

Java 使用弹簧&x27;s TransactionAwareDataSourceProxy在代码中,而不是xml中

Java 使用弹簧&x27;s TransactionAwareDataSourceProxy在代码中,而不是xml中,java,spring,jooq,spring-transactions,Java,Spring,Jooq,Spring Transactions,除了使用代码而不是XML配置之外,我正在尝试。我认为这应该很简单 // inside @Configuration annotated class @Bean public DataSource makeTransactionAware(DataSource fromConnectionPool) { return new TransactionAwareDataSourceProxy(fromConnectionPool); } 除此之外,我需要告诉Spring,注入的数据源与从方法返回

除了使用代码而不是XML配置之外,我正在尝试。我认为这应该很简单

// inside @Configuration annotated class
@Bean
public DataSource makeTransactionAware(DataSource fromConnectionPool) {
  return new TransactionAwareDataSourceProxy(fromConnectionPool);
}

除此之外,我需要告诉Spring,注入的
数据源
与从方法返回的数据源不同。我该怎么做呢?

Bean自定义命名和限定符应该可以为您完成这项工作


示例代码只是一个起点。

Bean自定义命名和限定符应该为您完成这项工作

示例代码只是一个起点。

来自共享


将配置为

@Configuration
@PropertySource("classpath:config.properties")
public class DataSourceConfig{

    @Value("${db.username}")
    private String username;
    @Value("${db.password}")
    private String password;
    @Value("${db.url}")
    private String url;

        @Bean
        public DataSource dataSource() {
            BasicDataSource basicDataSource = new BasicDataSource();
            basicDataSource.setDriverClassName("<driver class name>"); // Spring will load the driver discovered if not specified explicitly.
            basicDataSource.setUsername(username);
            basicDataSource.setPassword(password);
            basicDataSource.setUrl(url);
         return basicDataSource;
        }

        @Bean
        public TransactionAwareDataSourceProxy transactionAwareDataSource(DataSource dataSource) {
            return new TransactionAwareDataSourceProxy(dataSource)
        }
    }
@配置
@PropertySource(“classpath:config.properties”)
公共类数据源配置{
@值(“${db.username}”)
私有字符串用户名;
@值(${db.password}”)
私有字符串密码;
@值(“${db.url}”)
私有字符串url;
@豆子
公共数据源数据源(){
BasicDataSource BasicDataSource=新的BasicDataSource();
basicDataSource.setDriverClassName(“”;//如果未明确指定,Spring将加载发现的驱动程序。
basicDataSource.setUsername(用户名);
basicDataSource.setPassword(密码);
basicDataSource.setUrl(url);
返回源;
}
@豆子
public TransactionAwareDataSourceProxy transactionAwareDataSource(数据源数据源){
返回新的TransactionWaredatasourceProxy(数据源)
}
}
希望这有助于分享


将配置为

@Configuration
@PropertySource("classpath:config.properties")
public class DataSourceConfig{

    @Value("${db.username}")
    private String username;
    @Value("${db.password}")
    private String password;
    @Value("${db.url}")
    private String url;

        @Bean
        public DataSource dataSource() {
            BasicDataSource basicDataSource = new BasicDataSource();
            basicDataSource.setDriverClassName("<driver class name>"); // Spring will load the driver discovered if not specified explicitly.
            basicDataSource.setUsername(username);
            basicDataSource.setPassword(password);
            basicDataSource.setUrl(url);
         return basicDataSource;
        }

        @Bean
        public TransactionAwareDataSourceProxy transactionAwareDataSource(DataSource dataSource) {
            return new TransactionAwareDataSourceProxy(dataSource)
        }
    }
@配置
@PropertySource(“classpath:config.properties”)
公共类数据源配置{
@值(“${db.username}”)
私有字符串用户名;
@值(${db.password}”)
私有字符串密码;
@值(“${db.url}”)
私有字符串url;
@豆子
公共数据源数据源(){
BasicDataSource BasicDataSource=新的BasicDataSource();
basicDataSource.setDriverClassName(“”;//如果未明确指定,Spring将加载发现的驱动程序。
basicDataSource.setUsername(用户名);
basicDataSource.setPassword(密码);
basicDataSource.setUrl(url);
返回源;
}
@豆子
public TransactionAwareDataSourceProxy transactionAwareDataSource(数据源数据源){
返回新的TransactionWaredatasourceProxy(数据源)
}
}

希望这有帮助

好的,这是一个好的开始。现在,限定符和新bean需要哪些名称,以便在正确的位置使用它们?这些都是由Spring自己配置的,我无法控制它们。那么是否可以使用@Primary注释进行操作?是否要将这两个bean(“数据源”和“txAwareDS”)连接到指定的位置?因此,在一种情况下(这是Spring OOTB功能),您确实需要事务感知,但在另一种情况下(这也是Spring OOTB功能),您确实希望使用简单的数据源?好的,这是一个良好的开端。现在,限定符和新bean需要哪些名称,以便在正确的位置使用它们?这些都是由Spring自己配置的,我无法控制它们。那么是否可以使用@Primary注释进行操作?是否要将这两个bean(“数据源”和“txAwareDS”)连接到指定的位置?因此,在一种情况下(这是SpringOOTB功能),您确实需要事务感知,但在另一种情况下(这也是SpringOOTB功能),您确实希望使用简单的数据源?
@Configuration
@PropertySource("classpath:config.properties")
public class DataSourceConfig{

    @Value("${db.username}")
    private String username;
    @Value("${db.password}")
    private String password;
    @Value("${db.url}")
    private String url;

        @Bean
        public DataSource dataSource() {
            BasicDataSource basicDataSource = new BasicDataSource();
            basicDataSource.setDriverClassName("<driver class name>"); // Spring will load the driver discovered if not specified explicitly.
            basicDataSource.setUsername(username);
            basicDataSource.setPassword(password);
            basicDataSource.setUrl(url);
         return basicDataSource;
        }

        @Bean
        public TransactionAwareDataSourceProxy transactionAwareDataSource(DataSource dataSource) {
            return new TransactionAwareDataSourceProxy(dataSource)
        }
    }