【Springboot】@Configuration中@Autowired失败空指针异常

出错的代码

@Configuration
@ComponentScan
@EnableTransactionManagement
public class DataSourceConfig {
    
    
	@Autowired
	private PGProperties pgProperties

    @Bean(name = "primaryDataSource",initMethod = "init", destroyMethod = "close")
    @Qualifier("primaryDataSource")
    @Primary
    public DataSource primaryDataSource() {
    
    
        PGXADataSource pgxa=new PGXADataSource();
        pgxa.setURL(pgProperties.getJdbcUrl());
        pgxa.setUser(pgProperties.getUsername());
        pgxa.setPassword(pgProperties.getPassword());

        AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();
        xaDataSource.setXaDataSource(pgxa);
        xaDataSource.setUniqueResourceName("primaryDataSource");
        return xaDataSource;
    }
}

pgProperties.getJdbcUrl()处空指针异常,显然是@Autowired还没注入

解决办法

不使用@Autowired,将对象放在参数上public DataSource primaryDataSource(PGProperties pgProperties)就可以了。

@Configuration
@ComponentScan
@EnableTransactionManagement
public class DataSourceConfig {
    
    

    @Bean(name = "primaryDataSource",initMethod = "init", destroyMethod = "close")
    @Qualifier("primaryDataSource")
    @Primary
    public DataSource primaryDataSource(PGProperties pgProperties) {
    
    

        PGXADataSource pgxa=new PGXADataSource();
        pgxa.setURL(pgProperties.getJdbcUrl());
        pgxa.setUser(pgProperties.getUsername());
        pgxa.setPassword(pgProperties.getPassword());

        AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();
        xaDataSource.setXaDataSource(pgxa);
        xaDataSource.setUniqueResourceName("primaryDataSource");
        return xaDataSource;
    }

猜你喜欢

转载自blog.csdn.net/qq_42158942/article/details/108407322