针对远程连接(数据库、RabbitMq)等,一般有两种方式。
第一种使用传统方式:
//1 创建一个ConnectionFactory, 并进行配置
ConnectionFactory connectionFactory = new ConnectionFactory(Host,Port,Username,Password);
//2 通过连接工厂创建连接
Connection connection = connectionFactory.newConnection();
//3 通过connection创建一个Channel
Channel channel = connection.createChannel();
//4 通过Channel发送数据
for(int i=0; i < 5; i++){
String msg = "Hello RabbitMQ!";
channel.basicPublish("", "test001", null, msg.getBytes());
}
//5 记得要关闭相关的连接
channel.close();
connection.close();
第二种使用SpringBoot自动装配
@Configuration
public class RabbitMQTemplateConfig {
@Value("{rabbit.addresses}")
private String ADDRESSES;
@Value("{rabbit.virtual_host}")
private String VIRTUAL_HOST;
@Value("{rabbit.user_name}")
private String USER_NAME;
@Value("{rabbit.password}")
private String PASSWORD;
@Bean
public CachingConnectionFactory cachingConnectionFactory() {
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setAddresses(ADDRESSES);
cachingConnectionFactory.setVirtualHost(VIRTUAL_HOST);
cachingConnectionFactory.setUsername(USER_NAME);
cachingConnectionFactory.setPassword(PASSWORD);
return cachingConnectionFactory;
}
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate rabbitTemplate = new RabbitTemplate(cachingConnectionFactory());
rabbitTemplate.setMessageConverter(jackson2JsonMessageConverter());
return rabbitTemplate;
}
@Bean
public MessageConverter jackson2JsonMessageConverter() {
Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter();
return jackson2JsonMessageConverter;
}
}
那么在第二种使用SpringBoot自动装配时,CachingConnectionFactory并没有手动释放,是不是创建CachingConnectionFactory的Bean交给IOC以后,不用释放?