spring-projects / spring-boot

Spring Boot
https://spring.io/projects/spring-boot
Apache License 2.0
74.58k stars 40.55k forks source link

No Bean named TransactionManager #37049

Closed ddhananjay closed 1 year ago

ddhananjay commented 1 year ago

Getting No bean named 'transactionManager' available: No matching TransactionManager bean found for qualifier 'transactionManager error in Spring Boot 3.0.7 upgrade, not present error in 2.7 version

============================

Spring Starter Data JPA- 3.0.7 Spring Boot Version: 3.0.7 Spring-data-jpa: 3.0.6 Oracle jar: com.oracle.database.jdbc', name: 'ojdbc11', version: '21.7.0.0 Application has Couchbase, Elastic and Oracle dependencies

====dependencies added====

implementation("org.springframework.boot:spring-boot-starter-webflux") {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
}

// SPRING BOOT
implementation('org.springframework.boot:spring-boot-starter')

// SPRING BOOT - SPRING DATA - COUCHBASE
implementation('org.springframework.boot:spring-boot-starter-data-couchbase')
implementation('org.springframework.boot:spring-boot-starter-data-couchbase-reactive')
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation group: 'com.oracle.database.jdbc', name: 'ojdbc11', version: '21.7.0.0'
//Elastic Search
implementation('org.springframework.boot:spring-boot-starter-data-elasticsearch')
// SPRING KAFKA
implementation('org.springframework.kafka:spring-kafka')

// LOMBOK
compileOnly 'org.projectlombok:lombok:1.18.26'
annotationProcessor 'org.projectlombok:lombok:1.18.26'
testCompileOnly 'org.projectlombok:lombok:1.18.26'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.26'

// REACTOR
//implementation 'io.reactivex.rxjava3:rxjava:3.1.5'
implementation 'io.projectreactor.addons:reactor-extra:3.5.1'
// implementation 'io.reactivex:rxjava-reactive-streams:1.2.1'
//implementation 'jakarta.validation:jakarta.validation-api:3.0.2'
//implementation 'io.reactivex:rxjava:1.3.8'

implementation group: 'commons-codec', name: 'commons-codec', version: '1.15'
implementation group: 'commons-io', name: 'commons-io', version: '2.11.0'
implementation group: 'net.sf.flexjson', name: 'flexjson', version: '3.3'
// implementation group: 'javax.inject', name: 'javax.inject', version: '1'
testImplementation('org.springframework.boot:spring-boot-starter-test')
testImplementation('io.projectreactor:reactor-test')

// implementation group: 'io.reactivex', name: 'rxnetty-common', version: '0.5.2'
//implementation group: 'io.reactivex', name: 'rxnetty-http', version: '0.5.2'
// Start - Added for AWS Token generation
implementation('com.google.code.gson:gson:2.10.1')
implementation(group: 'org.jsoup', name: 'jsoup', version: '1.16.1')

implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.14'
// End - Added for AWS Token generation

// DEVTOOLS
implementation("org.springframework.boot:spring-boot-devtools")

// PowerMockito
testImplementation(group: 'org.mockito', name: 'mockito-all', version: '1.10.19')
testImplementation(group: 'org.powermock', name: 'powermock-api-mockito', version: '1.7.4')
testImplementation(group: 'org.powermock', name: 'powermock-module-junit4', version: '1.7.4')
//Spring actuator dependency for health check
implementation("org.springframework.boot:spring-boot-starter-actuator")
// Commons-lang
implementation 'org.apache.commons:commons-lang3:3.12.0'
testImplementation 'org.mockito:mockito-core:4.8.1'

//Grafana and Prometheus 
implementation 'io.micrometer:micrometer-registry-prometheus'

//Jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5','io.jsonwebtoken:jjwt-jackson:0.11.5'

implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'

// Parameterized test cases
testImplementation(group: 'pl.pragmatists', name: 'JUnitParams', version: '1.1.1')

//Get Content Type depend on file extention
implementation group: 'org.apache.tika', name: 'tika-core', version: '2.7.0'

//for reading .xls files
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.2'
implementation group: 'com.neovisionaries', name: 'nv-i18n', version: '1.29'

//AWS S3 Client
implementation group: 'com.amazonaws', name: 'aws-java-sdk-core', version: '1.11.642'
implementation group: 'com.amazonaws', name: 'aws-java-sdk-s3', version: '1.11.642'

//AWS EC2
//aws-java-sdk-sts
implementation group: 'com.amazonaws', name: 'aws-java-sdk-sts', version: '1.12.295'
testImplementation group: 'software.amazon.awssdk', name: 'sts', version: '2.17.264'

//aws-java-sdk-code-generator
implementation group: 'com.amazonaws', name: 'aws-java-sdk-code-generator', version: '1.12.294'

//aws-java-sdk
implementation group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.12.294'
implementation group: 'org.eclipse.core', name: 'commands', version: '3.3.0-I20070605-0010'

====Error=============

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'transactionManager' available: No matching TransactionManager bean found for qualifier 'transactionManager' - neither qualifier match nor bean name match!
at org.springframework.beans.factory.annotation.BeanFactoryAnnotationUtils.qualifiedBeanOfType(BeanFactoryAnnotationUtils.java:136)
at org.springframework.beans.factory.annotation.BeanFactoryAnnotationUtils.qualifiedBeanOfType(BeanFactoryAnnotationUtils.java:95)
at org.springframework.transaction.interceptor.TransactionAspectSupport.determineQualifiedTransactionManager(TransactionAspectSupport.java:518)
at org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:499)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:345)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:163)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
at jdk.proxy4/jdk.proxy4.$Proxy184.save(Unknown Source)
at com.mayo.imt..service.impl.CMSServiceImpl.saveDCLinkPayload(CMSServiceImpl.java:399)
at com.mayo.imt..service.impl.CMSServiceImpl.processDcBundleMessage(CMSServiceImpl.java:122)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)
at com.mayo.imt..service.impl.CMSServiceImpl$$SpringCGLIB$$0.processDcBundleMessage()
at com.mayo.imt..consumer.dc.DcBundleConsumer.receive(DcBundleConsumer.java:56)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:169)
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:119)
at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:56)
at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:366)
at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:92)
at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:53)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:2924)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:2904)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.lambda$doInvokeRecordListener$58(KafkaMessageListenerContainer.java:2822)
at io.micrometer.observation.Observation.observe(Observation.java:562)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:2820)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:2672)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:2558)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:2200)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeIfHaveRecords(KafkaMessageListenerContainer.java:1555)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:1519)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:1394)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
at java.base/java.lang.Thread.run(Thread.java:833)
2023-05-24 23:42:19 ACTION=ERROR CORRELATION_ID=cb899653-12fb-43d3-ad35-731b4c6bd166 Exception occurred while consuming
scottfrederick commented 1 year ago

@ddhananjay Thanks for getting in touch. Unfortunately, there is not enough information in this issue for us to help you figure out why you are getting this exception.

If you would like us to spend some time investigating, please provide a complete minimal sample that reproduces the problem. You can share it with us by pushing it to a separate repository on GitHub or by zipping it and attaching it to this issue. The sample should have the smallest set of dependencies necessary to reproduce the problem, so please take some time to reduce the full list of dependencies shown here. If you could provide a version of the sample that works with Spring Boot 2.7 and doesn't work with Spring Boot 3.0, that would be ideal.

ddhananjay commented 1 year ago

Hi Scott, attached here complete test project

https://github.com/ddhananjay/Test

ddhananjay commented 1 year ago

Hi Scott, couldn't upload as project, its a sample project having Couchbase and oracle as dependencies

snicoll commented 1 year ago

Hi Scott, attached here complete test project

Unfortunately, that's not really the minimal sample we were hoping for. We can't justify spending time around the additional noise in the project. Besides, running the app does not fail as you've indicated bur rather with the following:

java.lang.IllegalArgumentException: URL must start with 'jdbc'

If you want support, please attach a small sample that reproduces the problem you've described.

spring-projects-issues commented 1 year ago

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

spring-projects-issues commented 1 year ago

Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.