一,SpringBoot項目啟動時初始化操作的幾種方式:
1.給方法加上@PostConstruct 注解:@PostConstruct會在所在類的構造函數(shù)執(zhí)行之后執(zhí)行,在serverlet的init()方法執(zhí)行之前執(zhí)行
2.實現(xiàn) @CommandLineRunner 接口并重寫run()方法,多個實現(xiàn)類可以并存并且根據(jù)order注解排序順序執(zhí)行
3.實現(xiàn) @ApplicationRunner 接口并重寫run()方法,多個實現(xiàn)類可以并存并且根據(jù)order注解排序順序執(zhí)行
以上三種方式,類均需@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版本開始,自動重連默認是打開的??刂谱詣又剡B的屬性是com.rabbitmq.client.ConnectionFactory類的automaticRecovery和topologyRecovery屬性。
設置automaticRecovery屬性為true時,會執(zhí)行以下recovery:
1)Connection的重連。
2)偵聽Connection的Listener的恢復。
3)重新建立在Connection基礎上的Channel。
4)偵聽Channel的Listener的恢復。
5)Channel上的設置,如basicQos,publisher confirm以及事務屬性等的恢復。
當設置topologyRecovery屬性為true時,會執(zhí)行以下recovery:
1)exchange的重新定義(不包含預定義的exchange)
2)queue的重新定義(不包含預定義的queue)
3)binding的重新定義(不包含預定義的binding)
4)所有Consumer的恢復
六. mandatory、publisher-confirms、publisher-return屬性區(qū)別
1.publiser-confirm模式可以確保生產(chǎn)者到交換器exchange消息有沒有發(fā)送成功
2.publisher-return模式可以在消息沒有被路由到指定的queue時將消息返回,而不是丟棄
3.mandatory:交換器無法根據(jù)自身類型和路由鍵找到一個符合條件的隊列時的處理方式
true:RabbitMQ會調用Basic.Return命令將消息返回給生產(chǎn)者
false:RabbitMQ會把消息直接丟棄
生產(chǎn)者通過調用channel.addReturnListener()方法來添加ReturnListener監(jiān)聽器,實現(xiàn)獲取沒有被正確路由到合適隊列的消息