下面这段代码会编译过程中报错,但是错误原因找不到:
@Configuration
public class RabbitMQConnectionConfig extends RabbitAutoConfiguration {
public static final String connectionFactory = "rabbitMQConnectionFactory";
public static final String template = "rabbitTemplate";
@Primary
@Bean(name = connectionFactory)
public ConnectionFactory rabbitMQConnectionFactory(
@Value("${spring.rabbitmq.host}") String host,
@Value("${spring.rabbitmq.port}") int port,
@Value("${spring.rabbitmq.username}") String username,
@Value("${spring.rabbitmq.password}") String password,
@Value("${spring.rabbitmq.virtual-host}") String virtualHost) {
return connectionFactory(host, port, username, password, virtualHost);
}
@Bean(name = template)
@Primary
public RabbitTemplate rabbitTemplate(@Qualifier(connectionFactory) ConnectionFactory connectionFactory) {
return new RabbitTemplate(connectionFactory);
}
private static CachingConnectionFactory connectionFactory(String host, int port, String username,
String password, String virtualHost) {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
connectionFactory.setVirtualHost(virtualHost);
return connectionFactory;
}
}
编译时出现问题:
java: 不兼容的类型: org.springframework.amqp.rabbit.connection.ConnectionFactory无法转换为java.lang.String
就是@qualifier出现了问题,使用的字符串常量是connectionFactory导致报错,
@Bean(name = template)
@Primary
public RabbitTemplate rabbitTemplate(@Qualifier(connectionFactory) ConnectionFactory connectionFactory) {
return new RabbitTemplate(connectionFactory);
}
然后更改了常量名称就好了,不知道什么是原因,请大神们解释一下。