我目前正在開始使用與JPA/Hibernate結合使用spring-data的項目。 現在,我注射JpaRepositories使用上有問題的性質@Autowired註釋,如: Spring - 在不使用自動裝配的情況下在xml-config中注入JpaRepository
@Component
public class EmployeeGenerator implements IDataGenerator {
...
@Autowired
private IEmployeeDao dao;
...
}
..其中IEmployeeDao是被註釋爲@Repository接口擴展JpaRepository:
@Repository
public interface IEmployeeDao extends JpaRepository<Employee, Integer> {
/**
* Finds employees by username.
*
* @param username the username
* @return the list of employees
*/
List<Employee> findByUsername(String username);
一切工作正常使用這種方法 - 但是,我寧願習慣做我的大多數XML配置工作,因爲我個人喜歡所有相關的配置是在同一個地方,乍一看可見的想法。
現在,據我瞭解JPA和spring-data,存儲庫實例以某種方式由JPA實體管理器創建,所以我應該能夠在spring config xml中使用..指定它們作爲bean ..某種工廠方法? 我想我在尋找的線沿線的東西:
<import resource="classpath:spring/db-context.xml"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="..."/>
<property name="dataSource" ref="..."/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
</props>
</property>
</bean>
...
<bean id="employeeDaoImpl" class="IEmployeeDao">
<factory-method="?????"> <!-- Is something like this possible??? -->
</bean>
一些閱讀我猜想,自動裝配的倉庫是「建議」的方式後,我確實看到了一些好處做這樣, 但仍然出於興趣,我希望得到它與純xml配置(或至少沒有@Autowired,這是)