Я новичок в Spring Boot. Я пытался использовать Spring Boot с hibernate и mysql DB. Я пытался найти, как использовать весеннюю транзакционную конфигурацию, используя весеннюю загрузку. В обычном применении пружинного где у вас есть XML-файлы, которые вы определите транзакцию с использованием АОПА, как показано нижеВесенний ботинок с транзакционной конфигурацией
<!-- this is the service object that we want to make transactional -->
<bean id="fooService" class="x.y.service.DefaultFooService"/>
<!--the transactional advice (what 'happens'; see the
<aop:advisor/>bean below)-->
<tx:advice id="txAdvice" transaction-manager="txManager">
<!--the transactional semantics...-->
<tx:attributes>
<!--all methods starting with 'get' are read-only-->
<tx:method name="get*" read-only="true"/>
<!--other methods use the default transaction settings (see below)-->
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!--ensure that the above transactional advice runs for any execution
of an operation defined by the FooService interface-->
<aop:config>
<aop:pointcut id="fooServiceOperation" expression="execution(* x.y.service.FooService.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceOperation"/>
</aop:config>
<!--don't forget the DataSource-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@rj-t42:1521:elvis"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</bean>
<!--similarly, don't forget the PlatformTransactionManager-->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
Использованием выше конфигурации вы можете попросить пружину прикрепить транзакцию только для чтения, чтобы получить только * способ и транзакция по умолчанию для всех других методов.
Как вы это достигаете (определение транзакции в методах с использованием подстановочных знаков) с использованием Spring Boot?
Пробовал поиск в google, но ничего не смог найти. :(
Пожалуйста, наставит меня к решению или любой уже существующей линии.
Благодаря
Либо поставьте '@Transactional (readOnly =" true ")' на те методы, которые это касается. Если вы хотите использовать подстановочные знаки, как и раньше, отключите автоматическое магия для транзакций и включите ваш xml с помощью '@ImportResource()' или поместите его в java config. –
Спасибо @M. Deinum. Ваш ответ прекрасен, и он работал с аннотацией @ImportResource(). Проблема с '@Transactional (readOnly =" true ")' заключается в том, что мне нужно поместить ее на каждый метод. И преимущество в подходе шаблона xml заключается в том, что он сохраняет дополнительные строки кода для каждого метода. Еще одна вещь, которую я хотел бы упомянуть, заключается в том, что без '@ImportResource()' annotation также spring boot читает файл 'applicationContext.xml', как это было на пути к классам (я думаю), и это имя было стандартным (' applicationContext.xml') Я отвечу на вопрос. – Pratz
К сожалению ... Я возвращаю слова. Сохранение файла 'applicationContext.xml' в пути к классам не происходит напрямую. Вы должны упомянуть об этом в '@ImportResource()'. На самом деле я забыл удалить файл 'application.properties' из pathpath и думал, что db config взят из' applicationContext.xml'. Извините за путаницу. – Pratz