SpringBoot自动装配时,Connection需要手释放吗?

nnnnyyyy 2021-03-31 05:13:11
针对远程连接(数据库、RabbitMq)等,一般有两种方式。
第一种使用传统方式:

针对远程连接(数据库、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以后,不用释放?
...全文
296 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin351550660 2021-04-02
  • 打赏
  • 举报
回复
原理是spring 是个容器 它专门负责管理 对象的 生命周期 , 你这个玩意 不用总是用一次 new1次 然后用完销毁 他直接放在内存里,等你下次用的时候 再拿出来用,用完放回内存。相当于 你做菜需要菜刀,你买来放家里就好了,下次炒菜还能继续用。 不用每次做菜都要去厂家生产一把 然后炒完一次菜 就直接销毁。
nnnnyyyy 2021-04-02
  • 打赏
  • 举报
回复
引用 1 楼 lin351550660 的回复:
是的,不用释放
请问原理是什么?为什么不用手动释放呢?
Colt_filly 2021-04-01
  • 打赏
  • 举报
回复
应该在springboot中有后置处理器自动帮我们释放资源了
lin351550660 2021-04-01
  • 打赏
  • 举报
回复
是的,不用释放

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧