powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / spring transactionManager в другой библиотеке ... с двумя transactionManager'ами
6 сообщений из 6, страница 1 из 1
spring transactionManager в другой библиотеке ... с двумя transactionManager'ами
    #39236696
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день .

Решил вынести общие части в отдельную библиотеку , но ни разу не думал как будет все это работать ?

И так есть jar ( maven) проект с набором entity и Repository

MRepository.jar

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
@Entity
public class MProperties implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    private Long id;

}

public interface MRepository  {
  MProperties getMProperties ();
}


@Repository
@Transactional
public class MRepositoryImpl implements MRepository {

    @PersistenceContext
    private EntityManager em;

    @Override
    public MRepository getMProperties(){
   }




Над Repository стоит аннотация Transactional

Далее есть основной проект - в нем в pom указал мой MRepository.jar

но в моем проекте есть 2 transactionManager !


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional("order")
public @interface OrderTx {
}

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional("account")
public @interface AccountTx {
}  
...
Рейтинг: 0 / 0
spring transactionManager в другой библиотеке ... с двумя transactionManager'ами
    #39236701
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два transactionManager

@Transactional("order")
и

@Transactional("account")

как мне создать в конфигурации основного проекта мой MRepository и указать ему под каким transactionManager он будет работать ?

я хочу чтобы он работал под @Transactional("account")
...
Рейтинг: 0 / 0
spring transactionManager в другой библиотеке ... с двумя transactionManager'ами
    #39236710
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
каким образом мне создавать бин MRepository ?

я могу просто указать его пакет в ComponentScan "ru.repositores"

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Configuration
@EnableTransactionManagement
@ComponentScan({
        "ru.repositores"
})
public class AppConfig {

}



сможет ли спринг просканировать другой jar ? ( в данном случае MRepository.jar )

или нужно убрать

@ComponentScan({
"ru.repositores"
})

(такого пакета в основном проекте нет !!!)

и указать явно :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Configuration
@EnableTransactionManagement
public class AppConfig {


// как тут указать что исполняться он будет под @Transactional("account")
 @Bean
 public MRepository mRepository(){
return new MRepositoryImpl();
}

}


[/SRC]
...
Рейтинг: 0 / 0
spring transactionManager в другой библиотеке ... с двумя transactionManager'ами
    #39236712
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Решил вынести общие части в отдельную библиотеку

Общие для чего?

Atum1 но в моем проекте есть 2 transactionManager !

Назначь один по-умолчанию.
http://stackoverflow.com/a/15949340
...
Рейтинг: 0 / 0
spring transactionManager в другой библиотеке ... с двумя transactionManager'ами
    #39236742
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum1Решил вынести общие части в отдельную библиотеку

Общие для чего?


ну вот решили что слой Entity|DAO|Repository|

один и решили вынести его в jar ///

а App серверов , которые его используют - они же проекты - много ... так вот пусть этот слой и будет зависимостью ... в каждом из app серверов ...


Atum1 но в моем проекте есть 2 transactionManager !

Назначь один по-умолчанию.
http://stackoverflow.com/a/15949340

@Primary - конечно хорошо , но ! не работает ... видит 2 transactionManager'a и не знает под каким ему исполняться ...





вот если явно прописать :

@Transactional("account")
и
@PersistenceContext(name="accountPersistenceContext")

в MRepositoryImpl

все ок!

но тогда вопрос ! это нарушение SOLID архитектуры итд ...

откуда либа должна знать имя PersistenceContext и transactionManager под которыми она будет исполняться ????

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Repository
@Transactional("account")
public class MRepositoryImpl implements MRepository {

    @PersistenceContext(name="accountPersistenceContext")
    private EntityManager em;

    @Override
    public MRepository getMProperties(){
   }
...
Рейтинг: 0 / 0
spring transactionManager в другой библиотеке ... с двумя transactionManager'ами
    #39254016
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-meta-annotations

в спринг 4 говорят что можно перенести атрибуты в свою аннотацию и это буде работать ?!

Код: java
1.
2.
3.
4.
5.
6.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional(value = "Custom", readOnly = true)
public @interface CustomTransactional {
    Propagation propagation() default Propagation.SUPPORTED;
}





тогда вопрос а можно ли таким же образом задать через spel имя для transactionManager в базовом классе ?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / spring transactionManager в другой библиотеке ... с двумя transactionManager'ами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]