Есть класс
@Repository
@Transactional(readOnly = true)
public class JpaAssetsRepository implements AssetsRepository {
@Override
public boolean save(List<Assets> assets) {
return false;
}
}
Пробую запустить:
public class MainTest {
public static void main(String[] args) {
try (GenericXmlApplicationContext appCtx = new GenericXmlApplicationContext()) {
appCtx.load("spring/spring-app.xml", "spring/spring-db.xml");
appCtx.refresh();
System.out.println("Bean definition names: " + Arrays.toString(appCtx.getBeanDefinitionNames()));
JpaAssetsRepository rep3 = appCtx.getBean(JpaAssetsRepository.class);
rep3.save();
}
}
}
Код валится с ошибкой:
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'тут_название_пакета.repository.jpa.JpaAssetsRepository' available
В spring/spring-app.xml и spring/spring-db.xml есть все необходимое:
<context:annotation-config/>
<tx:annotation-driven/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory"/>
Если из репозитория убрать @Transactional(readOnly = true), то все отрабатывает...