送分啦!可以从其余的途径获取原来由@PersistenceContext注解得到的EntityManager吗!

送分啦!!!可以从其他的途径获取原来由@PersistenceContext注解得到的EntityManager吗!!!
通过以下的注解和spring配置文件就可以实现事务的管理了,验证起来是这样的,查了很多资料 发现通过@PersistenceContext注解得到的EntityManager 是由PersistenceAnnotationBeanPostProcessor调用SharedEntityManagerCreator.createSharedEntityManager(
emf, this.properties, this.synchronizedWithTransaction, getResourceType()) ,再由代理创建的,如果想通过注入的方式放到SimpleJpaRepository里 而不是现在显示的调用构造函数的话 可以做到吗
想po脑袋还是觉得不行啊 首先我不会在配置文件里给SimpleJpaRepository的构造函数的参数把容器管理的EntityManager翻进去,不知道怎么获取,如果不获取容器里的 而是自己创建EntityManager 那还有意义吗  就得自己管理了吧
各位走过 路过 不要错过啊,欢迎拍砖 欢迎分享 
public class JpaDaox<T>{
@PersistenceContext
private EntityManager entityManager;

private SimpleJpaRepository simpleJpaRepository;

public Object get(Class<?>T,Serializable id){
simpleJpaRepository=new SimpleJpaRepository(T,entityManager);
Object object= simpleJpaRepository.findOne(id);
return object;
}
@Transactional
public void save(T t) {
Class clazz=t.getClass();
simpleJpaRepository=new SimpleJpaRepository(clazz,entityManager);
simpleJpaRepository.save(t);
//throw new RuntimeException("dddd");


}}

	<context:annotation-config />
<context:component-scan base-package="jpa_data" />  

<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="META-INF/persistence.xml" />
<property name="persistenceUnitName" value="SimplePU" />
</bean>
<bean id="jpaDao" class="spring.data.jpa.JpaDaox">
</bean>

------解决思路----------------------
不用构造,利用EntityManagerFactory.createEntityManager();你的EntityManagerFactory已经交给spring管理了,只要利用spring的applicationContext.getBean("entityManagerFactory")就可以获得EntityManagerFactory实例
------解决思路----------------------
楼主的代码问题太多你的JpaDao是不是已经在spring容器里面跑了,如果是楼主在JpaDao里面又用new ClassPathXmlApplicationContext("meta-inf/beans.xml");等于又启用了一个spring容器,问题大大的。还有你的SimpleJpaRepository simpleJpaRepository干嘛要一直new啊
------解决思路----------------------
引用:
好吧  我确实理解的太浅了,一直听大家说容器,正在实践中加深理解呢
SimpleJpaRepository类的构造参数需要  domainclass和 entitymanager ,我不知道怎么通过其他的方式传进去啊 而且还是在domainclass不固定时,想让这个Dao操作多个实体类,可以在SimpleJpaRepository实例中先注入entitymanager,再在具体的方法如 save delete方法中给定domainclass 的值么?

作为一名菜鸟 确实挺让你们这些大神无奈的吧,好在我一直在前行,未曾放弃!

你的JpaDao已经是dao层了干嘛还要用SimpleJpaRepository,直接用entityManager操作就行了,simpleJpaRepository应该是给你的JpaDao继承用的应该是JapDao<T> extends SimpleJpaRepository<T>,直接用spring的@PersistenceContext注入entityManager就行了,没必要整那么多