2015-03-29 3 views
1

Я новичок в 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, но ничего не смог найти. :(

Пожалуйста, наставит меня к решению или любой уже существующей линии.

Благодаря

+1

Либо поставьте '@Transactional (readOnly =" true ")' на те методы, которые это касается. Если вы хотите использовать подстановочные знаки, как и раньше, отключите автоматическое магия для транзакций и включите ваш xml с помощью '@ImportResource()' или поместите его в java config. –

+1

Спасибо @M. Deinum. Ваш ответ прекрасен, и он работал с аннотацией @ImportResource(). Проблема с '@Transactional (readOnly =" true ")' заключается в том, что мне нужно поместить ее на каждый метод. И преимущество в подходе шаблона xml заключается в том, что он сохраняет дополнительные строки кода для каждого метода. Еще одна вещь, которую я хотел бы упомянуть, заключается в том, что без '@ImportResource()' annotation также spring boot читает файл 'applicationContext.xml', как это было на пути к классам (я думаю), и это имя было стандартным (' applicationContext.xml') Я отвечу на вопрос. – Pratz

+1

К сожалению ... Я возвращаю слова. Сохранение файла 'applicationContext.xml' в пути к классам не происходит напрямую. Вы должны упомянуть об этом в '@ImportResource()'. На самом деле я забыл удалить файл 'application.properties' из pathpath и думал, что db config взят из' applicationContext.xml'. Извините за путаницу. – Pratz

ответ

0

Как отметил М. Дейн, если вы не можете пропустить xml-конфигурацию, вы можете использовать его с помощью аннотации @ImportResource и указать свое имя файла xml. Xml должен быть доступен в classpath.

0

Из справочной док, Вы можете сделать это

@Configuration 
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 
public class MyConfiguration { 
} 

В случае, если вы вы можете отключить конфигурацию в целом

Ссылка на источник.

http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html

+1

Эй, Арун, вопрос в том, как применить xml-конфигурацию к весенней загрузке. Я столкнулся с этой настройкой исключения конкретной конфигурации, как вы объяснили в своем ответе, но затем я боролся с тем, как предоставить конфигурацию xml, если я исключаю конфигурацию по умолчанию или application.properties. Ответ Дейна - это то, что я искал. Также прочитайте мой ответ на комментарий deinum относительно поведения по умолчанию весенней загрузки. – Pratz

Смежные вопросы