IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> swing-浅谈swing整合spring的启动优化 -> 正文阅读

[Java知识库]swing-浅谈swing整合spring的启动优化

在这里插入图片描述

启动日志

15:19:05.342 INFO  [main] cn.note.swing.ViewApplication (ViewApplication.java:36) : start time 
15:19:05.534 DEBUG [main] o.s.c.a.AnnotationConfigApplicationContext (AbstractApplicationContext.java:629) : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@77cd7a0 
15:19:05.546 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor' 
15:19:05.628 DEBUG [main] o.s.c.a.ClassPathBeanDefinitionScanner (ClassPathScanningCandidateComponentProvider.java:435) : Identified candidate component class: file [\note-swing-core\target\classes\cn\note\swing\core\util\core\SpringContext.class] 
15:19:05.631 DEBUG [main] o.s.c.a.ClassPathBeanDefinitionScanner (ClassPathScanningCandidateComponentProvider.java:435) : Identified candidate component class: file [\note-swing-single\target\classes\cn\note\swing\formatter\CodeFormatterView.class] 
15:19:05.634 DEBUG [main] o.s.c.a.ClassPathBeanDefinitionScanner (ClassPathScanningCandidateComponentProvider.java:435) : Identified candidate component class: file [\note-swing-single\target\classes\cn\note\swing\single\SingleAutoHelper.class] 
15:19:05.705 INFO  [AWT-EventQueue-0] cn.note.swing.ViewApplication (ViewApplication.java:66) : show gui application 
15:19:05.760 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerProcessor' 
15:19:05.759 INFO  [AWT-EventQueue-0] c.n.s.config.SpringBeanConfig (SpringBeanConfig.java:47) : 异步注册: @Component&ItemView==>CodeFormatterView 
15:19:05.761 INFO  [AWT-EventQueue-0] c.n.s.config.SpringBeanConfig (SpringBeanConfig.java:47) : 异步注册: @Component&ItemView==>SingleAutoHelper 
15:19:05.769 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerFactory' 
15:19:05.770 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor' 
15:19:05.772 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.annotation.internalCommonAnnotationProcessor' 
15:19:05.781 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'springBeanConfig' 
15:19:05.785 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'springContext' 
15:19:05.786 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'codeFormatterView' 
15:19:06.047 INFO  [AWT-EventQueue-0] cn.note.swing.ViewApplication (ViewApplication.java:69) : slider menu load complete 
register==>JSON
15:19:06.200 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'singleAutoHelper' 
15:19:06.927 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'application' 
15:19:07.000 INFO  [main] cn.note.swing.ViewApplication (ViewApplication.java:55) : gui launch milli time:1659 15:19:05.342 INFO  [main] cn.note.swing.ViewApplication (ViewApplication.java:36) : start time 
15:19:05.534 DEBUG [main] o.s.c.a.AnnotationConfigApplicationContext (AbstractApplicationContext.java:629) : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@77cd7a0 
15:19:05.546 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor' 
15:19:05.628 DEBUG [main] o.s.c.a.ClassPathBeanDefinitionScanner (ClassPathScanningCandidateComponentProvider.java:435) : Identified candidate component class: file [\note-swing-core\target\classes\cn\note\swing\core\util\core\SpringContext.class] 
15:19:05.631 DEBUG [main] o.s.c.a.ClassPathBeanDefinitionScanner (ClassPathScanningCandidateComponentProvider.java:435) : Identified candidate component class: file [\note-swing-single\target\classes\cn\note\swing\formatter\CodeFormatterView.class] 
15:19:05.634 DEBUG [main] o.s.c.a.ClassPathBeanDefinitionScanner (ClassPathScanningCandidateComponentProvider.java:435) : Identified candidate component class: file [\note-swing-single\target\classes\cn\note\swing\single\SingleAutoHelper.class] 
15:19:05.705 INFO  [AWT-EventQueue-0] cn.note.swing.ViewApplication (ViewApplication.java:66) : show gui application 
15:19:05.760 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerProcessor' 
15:19:05.759 INFO  [AWT-EventQueue-0] c.n.s.config.SpringBeanConfig (SpringBeanConfig.java:47) : 异步注册: @Component&ItemView==>CodeFormatterView 
15:19:05.761 INFO  [AWT-EventQueue-0] c.n.s.config.SpringBeanConfig (SpringBeanConfig.java:47) : 异步注册: @Component&ItemView==>SingleAutoHelper 
15:19:05.769 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerFactory' 
15:19:05.770 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor' 
15:19:05.772 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'org.springframework.context.annotation.internalCommonAnnotationProcessor' 
15:19:05.781 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'springBeanConfig' 
15:19:05.785 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'springContext' 
15:19:05.786 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'codeFormatterView' 
15:19:06.047 INFO  [AWT-EventQueue-0] cn.note.swing.ViewApplication (ViewApplication.java:69) : slider menu load complete 
register==>JSON
15:19:06.200 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'singleAutoHelper' 
15:19:06.927 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory (DefaultSingletonBeanRegistry.java:225) : Creating shared instance of singleton bean 'application' 
15:19:07.000 INFO  [main] cn.note.swing.ViewApplication (ViewApplication.java:55) : gui launch milli time:1659 

在这里插入图片描述

优化一: main线程不要阻塞UI线程

spring的扫描bean时不要阻塞gui的渲染.

优化二: UI应该更早的显示

在使用UI框架渲染完成时,可以将JFrame立刻显示出来,

  • 在上图日志中大概只有0.4s, 此时看到的了GUI的外科轮廓
  • 这时GUI已经加载好了内置的UIManager
  • 此时spring还没有扫描bean完成

优化三: 框架应该与业务合理的解耦

左侧菜单为@Compoent注解的菜单项, 如何获取更多的菜单信息

  • 自定义注解,实现图标/ 分组 /描述等功能
    在这里插入图片描述
    在这里插入图片描述

  • 此时可以有好多好处
    1. spring内置的IOC使该业务可以解耦, 既可以作为独立应用测试, 也可以作为子应用注册.把控权在业务.
    2. 如果该业务不想作为左侧菜单项时, 可以直接去除@ItemView注解,UI上的解耦

  • 左侧菜单可以只扫描部分注解, 理论上肯定比spring加载快,因为spring还需要加载默认注解

  • 因为左侧菜单使用AWT 线程加载, spring在MAIN线程加载, 所以spring加载完成时, 需要判断左侧视图是否加载完成, 加载完成再去激活第一个视图
    在这里插入图片描述

优化四: 适当的使用缓存

 当左侧菜单加载完成时,可以去激活第一个视图, 此时左侧的菜单的图形UI已经显示
  • 通过建立SpringUtil上下文管理工具, 直接动态获取bean的名称,可以实现右侧视图的动态渲染
  • 每次渲染的视图 和他的class 类路径 可以分别作为缓存Map的value和key

优化的目的: 更快的看到,更快的更新,更快的切换

那么你的Swing小工具的速度 可以faster faster faster
请添加图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:28:38  更:2022-04-26 11:31:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:32:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码