I noticed that you use the @Transactional annotation on class definition. This will create a write transaction for every public method of the annotated class, including read only methods. You should consider using readOnly=true for read methods.
Additionally, I would consider using two data sources, one for write queries and a read only ds for the Q part of CQRS.
Additionally, I would consider using two data sources, one for write queries and a read only ds for the Q part of CQRS.