当前位置: 首页 > 知识库问答 >
问题:

Spring-在xml配置中注入JpaRepository,而不使用自动连接

杜绍元
2023-03-14

我目前正在着手一个将spring数据与JPA/Hibernate结合使用的项目。现在,我正在使用@Autowired注释在相关属性上注入JpaRepositories,例如:

@Component
public class EmployeeGenerator implements IDataGenerator {
...
    @Autowired
    private IEmployeeDao        dao;
...
}

...在这里,我员工道是一个扩展JpaRepository的接口,注释为@Repository:

@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完成我的大部分Spring配置工作,因为我个人喜欢所有相关配置都在同一个地方并且第一眼就可以看到的想法。

现在,就我所了解的JPA和spring数据而言,存储库实例是由JPA实体管理器以某种方式创建的,因此我应该能够使用..在spring配置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,也就是说)

共有1个答案

曾华翰
2023-03-14

您可以使用

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://www.springframework.org/schema/data/jpa"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/data/jpa
    http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

  <repositories base-package="com.acme.repositories" />

</beans:beans>

在本例中,我们指示Spring扫描com。顶峰存储库及其接口的所有子包扩展存储库或其子接口之一。对于找到的每个接口,它将注册特定于持久性技术的FactoryBean,以创建相应的代理来处理查询方法的调用。这些bean中的每一个都将在从接口名派生的bean名下注册,因此UserRepository的接口将在UserRepository下注册。“基本包”属性允许使用通配符,这样就可以有一个扫描包的模式。

您可以在文档中了解更多信息:http://docs.spring.io/spring-data/jpa/docs/1.3.0.RELEASE/reference/html/repositories.html#repositories.create-实例

 类似资料:
  • 基本上,我想问的是:将Spring Boot自动配置的bean自动导入XML配置文件的等价物是什么? 下面是我的主要Spring Boot入口点,它只是所有文档中列出的标准类: 我主要在一个Spring集成应用程序中使用它,在这个应用程序中Java配置还没有得到很好的支持,框架的核心是基于XML配置的,但是我希望在一些集成元素中使用Spring Boot自动配置的和bean。 https://gi

  • 我正在尝试将现有的传统spring应用程序转换为Spring Boot程序。我已经用@ImportResource和运行应用程序时导入了XML配置。即使这个bean是在XML配置中配置的,它的抛出注入也失败了。我不知道这里出了什么问题 >Application.java

  • 文件规定: 开发自动配置和使用条件 如果您在开发共享库的公司工作,或者如果您在开源或商业库工作,您可能希望开发自己的自动配置。自动配置类可以捆绑在外部罐中,并且仍然可以通过Spring Boot拾取。 如果我对其他所有内容都有注释(甚至是@自动配置后注释或@自动配置前注释), 为什么要维护一个属性文件来指向一个带有注释的类?

  • 1. 前言 本小节目的在于带领大家学习xml 文件配置,应用 xml 文件配置 IoC。 在第二节中我们通过一个入门工程简单的体验了一把 Spring 的使用。在第三节中梳理了一下 Spring 的工作流程。 可能大家有了一个初步认知,Spring 框架的工作脱离不了核心配置文件 applicationContext.xml。 在配置文件中我们目前只用到了一个 bean 标签,而它的作用大家也明白

  • 问题内容: 设置环境变量后,AWS 在http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Java.managing.html中讨论 。一切都很好,除了我不能在我的Spring XML配置代码中调用,也不能调用资源束快捷方式,因为资源束本身必须以某种方式提取这些环境变量来为它们服务。您能帮我将这个示例配置转换为使用

  • 我正在使用Spring配置文件(xml配置)进行Spring自动布线。我想根据一个条件注射豆子。让我详述一下。 有两个类“”和“”,它们实现了接口。在配置文件中为这两个类配置了bean。 > 我有另一个类,其中有一个类型为的实例变量。 我想根据SenderUser.getType()的值将注入到SenderUser的bean中。这意味着首先应该设置sernderuser.type,然后基于它的值(