One of the causes may be that your bean implements an interface.
When the bean implementing interface becomes @Transactional
, a proxy should be created, as default it will be a JDK Proxy of the interface your class implements.
So because of the proxy, the bean now available only as interface(proxy) and not as the concrete class.
You should probably refactor your class - introduce another interface with service methods and reference it as interface and not as class.