如何将当前连接从Spring上下文传递给iReport?

时间:2014-12-22 14:31:08

标签: java spring jasper-reports

我想从Spring上下文中获取当前连接,然后传递给我的JasperPrint对象。

这样的事情:

 //java.sql.Connection con = StringContext.getConnection();
 JasperPrint jp = JasperFillManager.fillReport("reports/my_report.jasper", parameters, con);

我该如何使其有效?

ps:我尝试过使用DataSourceUtils,但是getConnection()方法需要一个DataSource对象作为参数,我在哪里可以得到这个对象?

2 个答案:

答案 0 :(得分:0)

你可能需要这样的东西:

@Component
class JRExporter{
    @Autowired
    protected DataSource localDataSource;

    public void export(){
      java.sql.Connection con = localDataSource.getConnection()
      JasperPrint jp = JasperFillManager.fillReport("reports/my_report.jasper", parameters, con);
    }

答案 1 :(得分:0)

最好的方法是使用DataSourceUtils.getConnection()

使用当前事务的连接(如https://stackoverflow.com/a/8428795/6230007所示)
@Autowired
private ApplicationContext applicationContext; 
...

JasperPrint jp = JasperFillManager.fillReport("my_report.jasper", params,
DataSourceUtils.getConnection((DataSource)applicationContext.getBean("dataSource")));