Today when I start my spring boot(v2.1.12.RELEASE) app with Java 8, shows error like this:
11:24:33.652 logback [main] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'reportFactory' defined in class path resource [com/sportswin/soa/misc/config/mq/log/LogRabbitConfig.class]: Unsatisfied dependency expressed through method 'firstFactory' parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
I have no idea what was happen. This is my LogRabbitConfig.java define:
package com.sportswin.soa.misc.config.mq.log;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@Slf4j
public class LogRabbitConfig {
@Bean(name = "reportConnectionFactory")
public ConnectionFactory firstConnectionFactory(
@Value("${rabbitmq.server.report.host}") String host,
@Value("${rabbitmq.server.report.port}") int port,
@Value("${rabbitmq.server.report.username}") String username,
@Value("${rabbitmq.server.report.password}") String password,
@Value("${rabbitmq.server.report.virtual.hostname}") String virtualHost
) {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
connectionFactory.setVirtualHost(virtualHost);
connectionFactory.setPublisherConfirms(true);
connectionFactory.setPublisherReturns(true);
connectionFactory.setConnectionTimeout(2000);
return connectionFactory;
}
@Bean(name = "reportRabbitTemplate")
public RabbitTemplate firstRabbitTemplate(
@Qualifier("reportConnectionFactory") ConnectionFactory connectionFactory
) {
RabbitTemplate firstRabbitTemplate = new RabbitTemplate(connectionFactory);
firstRabbitTemplate.setMandatory(true);
firstRabbitTemplate.setReplyTimeout(2000);
firstRabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
if (ack) {
} else {
}
});
firstRabbitTemplate.setReturnCallback((message, replyCode, replyText,
exchange, routingKey) -> {
});
return firstRabbitTemplate;
}
@Bean(name = "reportFactory")
public SimpleRabbitListenerContainerFactory firstFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer,
@Qualifier("reportConnectionFactory") ConnectionFactory connectionFactory
) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}
}
and this is my AppStart.java:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
RabbitAutoConfiguration.class,
DruidDataSourceAutoConfigure.class})
@EnableDiscoveryClient
@EnableApolloConfig
@ImportResource(locations = {"classpath:mybatis/mybatis-config.xml"})
@ComponentScan(basePackages = {
"com.sportswin.soa.job",
"com.sportswin.soa.misc.config",
"com.sportswin.soa.misc.spring.advice",
"com.sportswin.soa.misc.interceptor.db",
"com.sportswin.soa.user"
},excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,value = LogRabbitConfig.class)
})
@EnableScheduling
@EnableFeignClients(basePackages = {
"com.sportswin.soa.analysis.controller"
}, basePackageClasses = {
IAppController.class,
IEnvelopRoomController.class,
IHubReportProfitInnerController.class,
ITenantOverviewController.class,
IReconciliationAnalysisController.class,
IRedEnvelopeInnerController.class,
IHappyRainInnerController.class,
IHappyCardInnerController.class,
IHappyBombInnerController.class,
ITickInnerController.class,
ITenantInnerController.class,
IReportWhoruAppWordController.class,
IZhuolianUserListReportController.class
})
public class AppStarter {
public static void main(String[] args) {
SpringApplication.run(AppStarter.class, args);
}
}
what should I do to fix this problem? I have tried to remove the RabbitAutoConfiguration.class annotation but still did not fix this problem.