Я перехожу с конфигурации XML на конфигурацию контекста Spring. Вместо этого, когда я пытаюсь использовать функционально эквивалентный @EnableTransactionManagement в конфигурации Java Spring 4.0.3.RELEASE, мой контекст Spring не может создать экземпляр со следующим исключением:
java.lang.IllegalStateException: не удалось загрузить ApplicationContext
в org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)
на org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:101)
на org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependologies(DependencyInjectionTestExecutionListener.java:109)
на org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
на org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:319)
на org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:212)
на org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
в org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
на org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
на org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
на org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
на org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
на org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
на org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
на org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
на org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
в org.junit.runners.ParentRunner.run(ParentRunner.java:309)
в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
в org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:236)
на org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:134)
на org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:113)
на sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод)
на sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
на sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
на java.lang.reflect.Method.invoke(Method.java:597)
на org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
на org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
на org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
на org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:103)
в org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)
Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания Компонент с именем «baseMySQLTest.TestConfig»: не удалось инициализировать компонент; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «org.springframework.transaction.config.internalTransactionAdvisor», определенным в ресурсе пути к классу [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]: создание экземпляра bean-компонента не удалось; вложенным исключением является org.springframework.beans.factory.BeanDefinitionStoreException: фабричный метод [public org.springframework.transaction.intercep...skipping...
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1558)
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
... еще 45
Вызвано: org.springframework.beans.factory.BeanDefinitionStoreException: Фабричный метод [public] org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration.transactionAdvisor()] выдал исключение; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «transactionInterceptor», определенным в ресурсе пути к классу [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]: не удалось вызвать метод init; вложенным исключением является java.lang.IllegalArgumentException: требуется свойство «transactionManager»
в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188)
в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:586)
... еще 62
Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «transactionInterceptor», определенным в ресурсе пути к классу [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]: не удалось вызвать метод init; вложенным исключением является java.lang.IllegalArgumentException: требуется свойство «transactionManager»
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
на org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
на org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
на org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
на org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
на org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:324)
на org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$83a12634.transactionInterceptor()
на org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration.transactionAdvisor(ProxyTransactionManagementConfiguration.java:45)
на org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$83a12634.CGLIB$transactionAdvisor$0()
на org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$83a12634$$FastClassBySpringCGLIB$$cc829ae.invoke()
на org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
в org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312)
в org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$83a12634.transactionAdvisor()
на sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
на sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
на sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
на java.lang.reflect.Method.invoke(Method.java:597)
на org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
... еще 63
Вызвано: java.lang.IllegalArgumentException: свойство 'transactionManager' требуется
в org.springframework.transaction.interceptor.TransactionAspectSupport.afterPropertiesSet(TransactionAspectSupport.java:195)
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
... еще 82
Это происходит в модульном тесте, но когда это работает здесь, я могу использовать его в рабочем коде.
Вот мой модуль тестовый базовый класс, в котором происходит связывание Spring:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {PropertyPlaceholderConfigurer.class, BaseMySQLTest.TestConfig.class})
public class BaseMySQLTest расширяет AbstractTransactionalJUnit4SpringContextTests {
@Configuration
@Import(DaoConfig.class)
@PropertySource("classpath:/jdbc.properties")
@EnableTransactionManagement
public static class TestConfig {
@Bean
public PlatformTransactionManager ProvideTransactionManager(ListableBeanFactory beanFactory) {
return new DataSourceTransactionManager(beanFactory.getBean(DataSource.class));
}
и вот подкласс, который использует этот базовый класс и конфигурацию:
публичный класс UserDaoImplTest расширяет BaseMySQLTest {
@Autowired
частный UserDao userDao;
@Test
public void testById() выдает исключение {
jdbcTemplate.execute("вставить в значения пользователей (email) ('bob@example.com')");
...
}
Как можно видеть, мой Spring TestConfig имеет определенный компонент менеджера транзакций, который, согласно Javadoc
http://docs.spring.io/spring/docs/3.1.x ... ement.html
, означает, что мне не нужно давать имя bean-компоненту (хотя я дал ему имя, пытаясь заставить это работать). Фактически, контекст Spring ведет себя так, как если бы он был настроен с помощью конфигурации XML, несмотря на отсутствие компонента с явным именем «transactionManager».
Чего не хватает в моей конфигурации Java, чтобы контекст Spring не мог использовать этот компонент менеджера транзакций для удовлетворения своих требований во время создания экземпляра?
Спасибо за любые полезные наблюдения.
РЕДАКТИРОВАТЬ:
(Я не уверен, куда следует внести это изменение, поэтому попробую здесь. ae6rt)
Вот новый тестовый класс, который приводит к той же ошибке, что и исходная работа:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {BaseMySQLTest.TestConfig.class})
публичный класс BaseMySQLTest расширяет AbstractTransactionalJUnit4SpringContextTests {
protected int LastInsertId() {
return jdbcTemplate.queryForInt("select LAST_INSERT_ID()");
@Autowired
Private UserDao userDao;
@Test
public void testById() выдает исключение {
jdbcTemplate.execute("вставить в значения mgdb.users (email) ('bob@example.com')");
int userId = LastInsertId();
Необязательный xoomUserOptional = userDao.byId(userId);
AssertThat(xoomUserOptional.isPresent(), EqualTo(true));
XoomUser user = xoomUserOptional.get();
AssertThat(user.getEmailAddress(), равныйTo("bob@example.com"));
@Configuration
@Import(DaoConfig.class)
@PropertySource("classpath:/jdbc.properties")
@EnableTransactionManagement
public static class TestConfig {
@Bean
public PlatformTransactionManager ProvideTransactionManager(ListableBeanFactory beanFactory) {
return new DataSourceTransactionManager(beanFactory.getBean(DataSource.class));
}
Мне на самом деле здесь не нужна конфигурация свойств
@ContextConfiguration(classes = {BaseMySQLTest.TestConfig.class})
поэтому я удалил его. Надеюсь, это соответствует духу этого раунда.
Подробнее здесь: https://stackoverflow.com/questions/237 ... management
Проблемы с конфигурацией Spring Java и @EnableTransactionManagement ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1769022205
Anonymous
Я перехожу с конфигурации XML на конфигурацию контекста Spring. Вместо этого, когда я пытаюсь использовать функционально эквивалентный @EnableTransactionManagement в конфигурации Java Spring 4.0.3.RELEASE, мой контекст Spring не может создать экземпляр со следующим исключением:
java.lang.IllegalStateException: не удалось загрузить ApplicationContext
в org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)
на org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:101)
на org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependologies(DependencyInjectionTestExecutionListener.java:109)
на org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
на org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:319)
на org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:212)
на org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
в org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
на org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
на org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
на org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
на org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
на org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
на org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
на org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
на org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
в org.junit.runners.ParentRunner.run(ParentRunner.java:309)
в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
в org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:236)
на org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:134)
на org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:113)
на sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод)
на sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
на sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
на java.lang.reflect.Method.invoke(Method.java:597)
на org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
на org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
на org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
на org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:103)
в org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)
Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания Компонент с именем «baseMySQLTest.TestConfig»: не удалось инициализировать компонент; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «org.springframework.transaction.config.internalTransactionAdvisor», определенным в ресурсе пути к классу [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]: создание экземпляра bean-компонента не удалось; вложенным исключением является org.springframework.beans.factory.BeanDefinitionStoreException: фабричный метод [public org.springframework.transaction.intercep...skipping...
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1558)
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
... еще 45
Вызвано: org.springframework.beans.factory.BeanDefinitionStoreException: Фабричный метод [public] org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration.transactionAdvisor()] выдал исключение; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «transactionInterceptor», определенным в ресурсе пути к классу [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]: не удалось вызвать метод init; вложенным исключением является java.lang.IllegalArgumentException: требуется свойство «transactionManager»
в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188)
в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:586)
... еще 62
Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «transactionInterceptor», определенным в ресурсе пути к классу [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]: не удалось вызвать метод init; вложенным исключением является java.lang.IllegalArgumentException: требуется свойство «transactionManager»
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
на org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
на org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
на org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
на org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
на org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:324)
на org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$83a12634.transactionInterceptor()
на org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration.transactionAdvisor(ProxyTransactionManagementConfiguration.java:45)
на org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$83a12634.CGLIB$transactionAdvisor$0()
на org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$83a12634$$FastClassBySpringCGLIB$$cc829ae.invoke()
на org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
в org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312)
в org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$83a12634.transactionAdvisor()
на sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
на sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
на sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
на java.lang.reflect.Method.invoke(Method.java:597)
на org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
... еще 63
Вызвано: java.lang.IllegalArgumentException: свойство 'transactionManager' требуется
в org.springframework.transaction.interceptor.TransactionAspectSupport.afterPropertiesSet(TransactionAspectSupport.java:195)
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
... еще 82
Это происходит в модульном тесте, но когда это работает здесь, я могу использовать его в рабочем коде.
Вот мой модуль тестовый базовый класс, в котором происходит связывание Spring:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {PropertyPlaceholderConfigurer.class, BaseMySQLTest.TestConfig.class})
public class BaseMySQLTest расширяет AbstractTransactionalJUnit4SpringContextTests {
@Configuration
@Import(DaoConfig.class)
@PropertySource("classpath:/jdbc.properties")
@EnableTransactionManagement
public static class TestConfig {
@Bean
public PlatformTransactionManager ProvideTransactionManager(ListableBeanFactory beanFactory) {
return new DataSourceTransactionManager(beanFactory.getBean(DataSource.class));
}
и вот подкласс, который использует этот базовый класс и конфигурацию:
публичный класс UserDaoImplTest расширяет BaseMySQLTest {
@Autowired
частный UserDao userDao;
@Test
public void testById() выдает исключение {
jdbcTemplate.execute("вставить в значения пользователей (email) ('bob@example.com')");
...
}
Как можно видеть, мой Spring TestConfig имеет определенный компонент менеджера транзакций, который, согласно Javadoc
http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html
, означает, что мне не нужно давать имя bean-компоненту (хотя я дал ему имя, пытаясь заставить это работать). Фактически, контекст Spring ведет себя так, как если бы он был настроен с помощью конфигурации XML, несмотря на отсутствие компонента с явным именем «transactionManager».
Чего не хватает в моей конфигурации Java, чтобы контекст Spring не мог использовать этот компонент менеджера транзакций для удовлетворения своих требований во время создания экземпляра?
Спасибо за любые полезные наблюдения.
РЕДАКТИРОВАТЬ:
(Я не уверен, куда следует внести это изменение, поэтому попробую здесь. ae6rt)
Вот новый тестовый класс, который приводит к той же ошибке, что и исходная работа:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {BaseMySQLTest.TestConfig.class})
публичный класс BaseMySQLTest расширяет AbstractTransactionalJUnit4SpringContextTests {
protected int LastInsertId() {
return jdbcTemplate.queryForInt("select LAST_INSERT_ID()");
@Autowired
Private UserDao userDao;
@Test
public void testById() выдает исключение {
jdbcTemplate.execute("вставить в значения mgdb.users (email) ('bob@example.com')");
int userId = LastInsertId();
Необязательный xoomUserOptional = userDao.byId(userId);
AssertThat(xoomUserOptional.isPresent(), EqualTo(true));
XoomUser user = xoomUserOptional.get();
AssertThat(user.getEmailAddress(), равныйTo("bob@example.com"));
@Configuration
@Import(DaoConfig.class)
@PropertySource("classpath:/jdbc.properties")
@EnableTransactionManagement
public static class TestConfig {
@Bean
public PlatformTransactionManager ProvideTransactionManager(ListableBeanFactory beanFactory) {
return new DataSourceTransactionManager(beanFactory.getBean(DataSource.class));
}
Мне на самом деле здесь не нужна конфигурация свойств
@ContextConfiguration(classes = {BaseMySQLTest.TestConfig.class})
поэтому я удалил его. Надеюсь, это соответствует духу этого раунда.
Подробнее здесь: [url]https://stackoverflow.com/questions/23711363/problems-with-spring-java-config-and-enabletransactionmanagement[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия