一,SpringBoot项目启动时初始化操作的几种方式:
1.给方法加上@PostConstruct 注解:@PostConstruct会在所在类的构造函数执行之后执行,在serverlet的init()方法执行之前执行
2.实现 @CommandLineRunner 接口并重写run()方法,多个实现类可以并存并且根据order注解排序顺序执行
3.实现 @ApplicationRunner 接口并重写run()方法,多个实现类可以并存并且根据order注解排序顺序执行
以上三种方式,类均需@Component注解
二丶读取resource目录下的文件方式:
1.ClassPathResource类
ClassPathResource classPathResource = new ClassPathResource("static/assets/test.txt");
InputStream inputStream = classPathResource.getInputStream();
2.ClassLoader.getSystemResources(PLUGIN_PATH)
3.ClassLoader cl = ClassUtils.getDefaultClassLoader();
cl.getResources(PLUGIN_PATH)
三.导出xml文件:
导出xml文件可以使用org.jdom类来操作
四.jdk1.8日期工具:
LocalTime--时间(时分秒) LocalDate--日期(年月日) LocalDateTime--日期时间(年月日时分秒)
1.Duration计算两个时间之间的间隔(LocalTime,Instant)
2.Period计算两个日期之间的间隔(LocalDate)
3.TemporalAdjuster时间校正器,如获取下一个周日的时间
LocalDateTime localDate = LocalDateTime.now();
System.out.print(localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)));
4.DateTimeFormatter 时间格式化
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_DATE;
DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
System.out.print(localDate.format(dateTimeFormatter2));
五.RabbitMQ Client的重连机制
RabbitMQ Java Client提供了重连机制,不过在RabbitMQ Java Client 4.0版本之前,自动重连默认是关闭的。从Rabbit Client 4.0版本开始,自动重连默认是打开的。控制自动重连的属性是com.rabbitmq.client.ConnectionFactory类的automaticRecovery和topologyRecovery属性。
设置automaticRecovery属性为true时,会执行以下recovery:
1)Connection的重连。
2)侦听Connection的Listener的恢复。
3)重新建立在Connection基础上的Channel。
4)侦听Channel的Listener的恢复。
5)Channel上的设置,如basicQos,publisher confirm以及事务属性等的恢复。
当设置topologyRecovery属性为true时,会执行以下recovery:
1)exchange的重新定义(不包含预定义的exchange)
2)queue的重新定义(不包含预定义的queue)
3)binding的重新定义(不包含预定义的binding)
4)所有Consumer的恢复
六. mandatory、publisher-confirms、publisher-return属性区别
1.publiser-confirm模式可以确保生产者到交换器exchange消息有没有发送成功
2.publisher-return模式可以在消息没有被路由到指定的queue时将消息返回,而不是丢弃
3.mandatory:交换器无法根据自身类型和路由键找到一个符合条件的队列时的处理方式
true:RabbitMQ会调用Basic.Return命令将消息返回给生产者
false:RabbitMQ会把消息直接丢弃
生产者通过调用channel.addReturnListener()方法来添加ReturnListener监听器,实现获取没有被正确路由到合适队列的消息