当Spring代理具体类时,无法获取具体类



我得到了类似的东西

@Transactional
public class ListController {
@PersistenceContext
EntityManager entityManager;

@GetMapping("/save/avion")
public ResponseEntity<String> save() {
Avion avion = new Avion();
entityManager.persist(avion);
}
}

我只想知道Spring用于EntityManager的实现的名称。但我总是得到一些lijke。。

我只试了4种方法。。

System.out.println("==> " + entityManager.getClass());
System.out.println("==> " + AopProxyUtils.ultimateTargetClass(entityManager));
system.out.println("==> " + AopUtils.getTargetClass(entityManager).getName());
System.out.println("==> " + entityManager.getClass().getCanonicalName());

但我系统地获得了。。

==> class com.sun.proxy.$Proxy110
==> class com.sun.proxy.$Proxy110
==> com.sun.proxy.$Proxy110
==> com.sun.proxy.$Proxy110

所以。。我可以获得具体课程吗?

如果要求获得工厂下bean的名称,则entityManagerbean上的.toString()将提供该信息。

两个

System.out.println(entityManager);

String entityManagerName = entityManager.toString();
System.out.println(entityManagerName);

会在我的测试项目中打印

目标工厂的共享EntityManager代理[org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@4f7d3ab3]

请仔细阅读文章(尤其是B节注释处理下的第5点)详细理解框架代码。

最新更新