2014-10-19 1 views
1

Я использую Spring + Jpa, и я хотел бы иметь EntityManager в моем классе @Configuration.Spring - получить EntityManager из класса @Configuration

Теперь мой класс что-то вроде этого:

@Configuration 
@PropertySource("classpath:base.properties") 
public class Config { 
    private static final Logger log = Logger.getLogger(Config.class); 

    @Bean 
    public SpringContextManager contextManager() { 
     return new SpringContextManager(new DefaultApplication()); 
    } 

    @Bean(initMethod = "start", destroyMethod = "stop") 
    public ServerSession serverSession() throws Exception {  
     try { 
      ServerSession serverSession = new ServerSession(urlGateway, useSsl, hostGateway, portGateway); 
      serverSession.setDefaultTimeToLive(5000); 
      return serverSession; 
     } catch (Throwable e) { 
      log.error("", e); 
      return null; 
     } 
    } 



@Bean 
    public PluginManager pluginManager() { 
     PluginManager pluginManager = new PluginManager(); 
     ThreadLocalManager.set(pluginManager); 
    return pluginManager; 
    } 

Я знаю, что я не могу добавить @PersistenceContext в @Configuration класс, так что я не знаю, как получить EntityManager в этой точке.

Цель этого заключается в том, что entityManager запускается при запуске приложения, потому что мне нужно установить его в класс ThreadLocal (мне нужен этот класс, чтобы использовать entityManager внутри объекта сущностей JPA, где инкремент persistenceContext не работает).

Теперь я получаю entityManager из службы, аннотированной с помощью @Service, но было бы проще сделать эти настройки в классе @Configuration. Кажется более чистым.

Благодарим за помощь.

+0

Если вам это нужно внутри слушателя, просто выполните поиск в слушателе. Также, если это обычная инъекция весеннего слушателя, нужно просто работать. –

+0

Можете ли вы привести пример, пожалуйста? С простым @inject не работают. благодаря – drenda

ответ

0

Я нашел хороший пример для решения моей проблемы. Это ссылка учебника: link