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

tech2026-08-12  1

出错的代码

@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; }
最新回复(0)