2017-08-02 90 views
1

所以我爲defaultdev並在每個配置中的兩個配置有一個春天開機自動裝配的EntityManager具體到配置

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

現在我想在一些組件注入EntityManager像這樣

@Autowired 
private EntityManager em; 

但我收到

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

爲什麼EntityManager從默認不注入?

+0

這聽起來像二者的配置被加載,不是嗎?他們是否受配置文件控制?你打算如何選擇只有一個? – DaveyDaveDave

+0

每個配置都有一個@Profile(「...」),同時也設置了活動配置文件。 – Bart

+0

@Bart是否使用'--spring.profiles.active'來提及配置文件? –

回答

2

defaultdev maven個人資料?如果是的話,那麼你應該選擇的每一個配置的配置與使用@Profile

@Profile("dev") 
@Configuration 
public class DevConfig 

或者,第二種方法 - 標記豆類中的一個作爲主:

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

謝謝@尼古拉 – Oleksii