java - Spring Boot Autowiring 实体管理器特定于配置

标签 java spring jpa entitymanager

所以我有 defaultdev 两种配置,并且在每个配置中都有一个

    @Bean
    @Autowired
    public EntityManager entityManager(EntityManagerFactory entityManagerFactory) {
        return entityManagerFactory.createEntityManager();
    }

现在我想在某个组件中像这样注入(inject)EntityManager

@Autowired
private EntityManager em;

但是我收到了

... required a single bean, but 2 were found:
    - entityManager: defined by method 'entityManager' in class path resource ...

为什么默认的EntityManager没有被注入(inject)???

最佳答案

defaultdev 是 maven 配置文件吗?如果是,那么您应该使用 @Profile

为每个配置文件选择一个配置
@Profile("dev")
@Configuration
public class DevConfig

或者,第二种方法 - 将其中一个 bean 标记为主要:

@Bean
@Primary
@Autowired
public EntityManager entityManager(EntityManagerFactory entityManagerFactory) {
    return entityManagerFactory.createEntityManager();
}

关于java - Spring Boot Autowiring 实体管理器特定于配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45457972/

相关文章:

java - JPA 惰性列表上的流

java - CascadeType.ALL 不适用于 FetchType.EAGER

java - JPA - 无效的 persistence.xml

java - 尽管重置了变量,但它的值并没有改变

java - 为什么整数在 Java 中是不可变的?

java - 使用 Spring MVC、JSR 303 注释将 binidng 表单转换为 bean 时出现异常

java - 如何使用 Spring Cloud Stream 应用程序启动器 TCP 处理消息

java - 在建立连接之前,accept() 方法到底是如何被阻塞的?

java - <? 之间有什么区别?扩展对象> 和 <E 扩展对象>?

java - Spring MVC 中未找到类异常