javaSwing多线程和Spring AOP结合产生问题

huguolu 2007-10-12 09:36:02
想使用SpringAOP来简化javaSwing中各种基础结构功能的开发,来降低藕合性。

做法如下:某设定表读取在程序中使用缓存机制,为了方便同步数据库与缓存,
使用AOP编写了一个Aspect来监控DAO中的insert和update操作,
并实时同步更新程序中的缓存值。当此Aspect在单线程中跑时一切正常,一旦同时开启另一个线程来作业
就会出现问题,传入到DAO中的Connection会被莫名的关闭,直接导致程序Crash.
去搜索线程和AOP等资料,也没有找到有用的信息,麻烦各位大大能给予指导。在此谢过!
...全文
205 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huguolu 2007-10-14
  • 打赏
  • 举报
回复
以上问题的解决方法是:不使用Static,而是每次使用时重新装载Context,这种做法执行效率太差。
此问题最终的解决方式是暂取消SpringAOP在Swing中的就用,执行效率暂时还不可接受,到研究更加透彻时再在Swing中启用AOP。
谢谢各位! 结贴!
doctormoney 2007-10-12
  • 打赏
  • 举报
回复
看看你的conn是设置成了单件模式的吗?
logonin 2007-10-12
  • 打赏
  • 举报
回复
三木学长这个问题我还真没遇到过,没有用Aop去操作Swing
不过一般关闭连接的可能也不是很多,或许是在开启另一个线程时导致了对相同文件的挣抢
引起了死锁吧.关闭连接也是必然的.
ps:猜测而已
silver_zhao 2007-10-12
  • 打赏
  • 举报
回复
huguolu 2007-10-12
  • 打赏
  • 举报
回复
补充说明:在程序中全局使用一个静态方法来装载applicationContext.xml配置文件。
获得bean也是使用静态方法获取,
private static ApplicationContext context = new FileSystemXmlApplicationContext("/src/com/pics/system/xml/applicationContext.xml");

public static ApplicationContext getContext()
{
return context;
}
然后在其它bean中来调用此context来获得相应的bean,如下:
settingdao = (DAOInterface)sys.getContext().getBean("settingdao");
settingdao.setConnection(conn);
在程序Crash时,就是此conn莫名被关闭掉。
huguolu 2007-10-12
  • 打赏
  • 举报
回复
如果不使用static,每次调用getBean方法都需要装载一次applicationContext.xml文件,这太不划算了。
看看各位大有没有好些的方法,SpringWeb中是怎么来控制和处理,当在server startup时加载xml配置档,在使用时直接用context.getBean就OK了,他每次获得的应该都是新的物件,否则要是同一个物件程序肯定挂掉了,得找一找Spring高后来帮忙挖掘挖掘。
huguolu 2007-10-12
  • 打赏
  • 举报
回复
感谢楼上二位的帮助,当前已经查明原因,是因为getContext是static,所以每次getBean所得到的实体物件bean都是同一个,当在单线程中执行时可能是没有问题,当开启新线程时,同一个bean被二个线程调用,且另一个线程中的bean执行完后就把conn关闭掉了,导致主线程中的bean实体的conn一并失效。
我现在在想怎么能让每次获得的实体bean都是单独的实体,而不是同一个呢,因为程序的DAO已经封装死了,不可能继承于clonable对象,有点麻烦,或者看有没有其它更好的方法。
java方向及学习方法 java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习: *第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架; *第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及; *第三阶段:java API:输入输出,多线程,网络编程,反射注解等,java的精华部分; *第四阶段:数据库SQL基础,包括增删改查操作以及多表查询; *第五阶段:JDBC编程:包括JDBC原理,JDBC连接库,JDBC API,虽然现在Hibernate比JDBC要方便许多,但是JDBC技术仍然在使用,JDBC思想尤为重要; *第六阶段:JDBC深入理解高级特性:包括数据库连接池,存储过程,触发器,CRM思想; *第七阶段:HTML语言学习,包括HTML标签,表单标签以及CSS,这是Web应用开发的基础; *第八阶段:JavaScript脚本语言,包括javaScript语法和对象,就这两个方面的内容; *第九阶段:DOM编程,包括DOM原理,常用的DOM元素以及比较重要的DOM编程思想; *第十阶段:Servlet开发,从此开始踏入java开发的重要一步,包括XML,Tomcat服务器的安装使用操作,HTTP协议简单理解,Servlet API等,这个是java web开发的基础。 *第十一阶段:JSP开发:JSP语法和标签,自定义标签,EL,JSTL库了解以及MVC三层架构的设计模式理念; *第十二阶段:AJAX开发:AJAX原理,请求响应处理,AJAX开发库; *第十三阶段:轻量级框架,三大框架之一Struts框架的学习,自此踏入java web开发的精华部分,包括Struts体系架构,各种组件,标签库和扩展性的学习; *第十四阶段:Hibernate框架学习,三大框架之一,包括检索映射技术,多表查询技术,缓存技术以及性能方面的优化; *第十五阶段:Spring框架的学习,三大框架之一,包括了IOC,AOP,DataSource,事务,SSH集成以及JPA集成; *最后呢,还有些java的技术,包括EJB3.0等,可以选择学习,与三大轻量级框架相比,EJB就是当之无愧的重量级了。
目录 第一章:Java开始 1 学习目标 1 Java历史 2 Java技术概述 3 Java技术的优点 3 Java虚拟机 4 类加载器 6 Windows环境变量 8 内容总结 13 独立实践 14 第二章: 面向对象概述 15 学习目标 15 面向对象(Object Oriented) 16 面向对象的主要特性 18 抽象(Abstraction) 18 封装(Encapsulation): 19 多态(Polymorphism) 20 面向对象的优点 22 面向对象的分析、设计和编程 23 面向对象语言的发展简史 26 内容总结 29 独立实践 30 第三章:面向对象的程序设计 31 学习目标 31 类和对象的描述 32 声明类 32 声明属性 33 声明成员方法 34 源文件的布局 36 包的声明 36 包与目录的布局 38 内容总结 45 独立实践 46 第四章: Java语法基础 47 学习目标 47 基本语法元素 48 Java关键字 49 基本Java数据类型 50 变量声明和赋值 52 引用(Reference)类型 52 存储器分配和布局 53 this引用 55 Java编码约定 56 运算符的优先级 58 升级和表达式的类型转换 62 独立实践 70 第五章:数组 71 学习目标 71 数组的描述 72 创建数组 72 多维数组 78 拷贝数组 80 内容总结 83 独立实践 84 第六章:继承 86 学习目标: 86 单继承(single inheritance) 87 访问控制 89 方法重载(method overloading) 91 方法覆盖(method overriding) 93 基于继承的多态实现 94 隐藏(hiding) 95 构造方法在继承中的使用 96 super关键字 97 包装类 97 toString( )方法 100 内容总结 101 独立实践 102 第七章:类的高级特征 103 学习目标 103 static关键字 104 final关键字 106 内部类 106 实例分析 110 抽象类,接口 115 内容总结 120 独立实践 121 第八章:异常 122 学习目标 122 异常的概念 123 异常的分类 123 实例分析 124 自定义异常 126 方法覆盖和异常 127 内容总结 129 第九章:基于文本的应用 131 学习目标 131 程序交互的几种方式 132 常用类方法说明 132 String的方法 132 正则表示式(Regular expression) 133 StringBuffer类 135 StringBuffer与String的区别 136 集合类的使用 136 实例分析 136 内容总结 153 独立实践 154 第十章:JAVA GUI概述 155 学习目标 155 GUI概述及组成 156 Swing优点 157 布局管理器 158 BorderLayout 159 GridLayout 161 CardLayout 162 GridBagLayout 164 实例分析 165 内容总结 172 独立实践 173 第十一章 线程 174 学习目标 174 线程的概念 175 线程状态和调度 ….176 线程中断/恢复的几种方式 178 创建线程的两种方式 179 线程的控制 180 实例分析 182 内容总结 189 独立实践 190 第十二章:高级I/O流 192 学习目标 192 I/O基础知识 193 字节流 193 字符流 194 节点流 194 过程流 194 基本字符流类 198 对象串行化 201 实例分析 203 内容总结 211 独立实践 212 第十三章:网络 213 学习目标 213 TCP/IP协议模型 214 基于Java的网络技术 216 DatagramSocket 219 InetAddress类的使用 221 扩展知识: 227 SocketChannel类 227 内容总结 229 独立实践 230 第十四章:数据结构与算法(上) 231 学习目标 231 算法(algorithm): 232 查找算法: 234 排序算法: 237 递归(recursive): 240 快速排序: 242 内容总结 245 独立实践 246 第十五章:数据结构与算法(下) 247 学习目标 247 数据结构介绍: 248 数组 248 逻辑大小和物理大小 248 链表 248 栈(stack) 249 队列: 250 树: 250 实例分析 252 内容总结 274 独立实践 275 第十六章:数据库(一) 276 学习目标 276 数据库的基本概念 277 数据的描述 277 数据联系的描述 278 数据模型 278 数据库三级模式结构 279 数据库三个范式 280 范式总结 282 创建数据库 283 创建表 287 内容总结 290 独立实践 291 第十七章: 数据库(二) 292 学习目标: 292 查询(从基本到高级) 293 模糊查询 293 排序 295 集合操作-并 296 集合操作-交 297 集合操作-差 297 常用函数 297 数据类型转换函数CAST和CONVERT 298 分组查询 299 五大约束 301 索引 303 数据库的备份与恢复 304 内容总结 308 独立实践 309 第十八章:数据库(三) 310 学习目标: 310 存储过程 311 触发器 313 函数 314 规则 314 事务 315 while语句 317 case语句 317 内容总结: 318 独立实践 319 第十九章: JDBC基础 320 学习目标 320 JDBC的概念 321 连接数据库的几种方式 321 JAVA编程语言和JDBC 323 JDBC编程的步骤 323 实例分析 325 内容总结 335 独立实践 336 第二十章:高级JDBC 337 学习目标 337 使用DDL,DML语言对数据库进行基本操作 338 查询数据库里的数据 339 预编译语句(PreparedStatement) 340 使用事务 341 事务的级别控制 343 使用存储过程 345 操作元数据 347 ResultSetMetaData(结果集元数据) 349 可滚动的和可更新的结果集 350 批处理更新 354 二进制大对象BLOB 357 RowSet 新特性 359 JdbcRowSet 360 FilteredRowSet 361 内容总结 363 独立实践 364 第二十一章:XML基础 366 学习目标 366 XML的概念 367 定义XML文档 368 命名冲突 371 使用前缀解决命名冲突问题 371 使用命名空间 371 命名空间属性 372 统一资源标识符 372 默认的命名空间 372 使用命名空间 373 XML 文档规则 374 XML Schema 379 Schema和DTD的区别: 380 Schema的数据类型 380 样式表(XSL) 384 CSS样式表 384 XSL样式表 385 XSL的基本结构 386 XSL的基本语法 390 节点选择语句 392 循环判断语句 392 条件判断语句 392 内容总结 395 独立实践 395 第二十二章:使用Java解析XML 397 学习目标 397 解析器的介绍 398 DOM以及广义的基于树的处理具有几个优点 399 文档对象模型(DOM)解析实例 402 DOM对象 404 DOM解析的例子: 406 SAX解析实例 409 DOM4J解析实例 412 JDOM解析实例 413 JAVA操纵XML 实例讲解 414 通过JAVA写数据到XML里面 415 内容总结 418 独立实践 418 第二十三章:HTML基础 419 学习目标 419 知识要点 420 HTML元素 420 标签属性 420 HTML基本标签 422 标题元素 422 HTML格式 427 HTML实体 431 不可拆分的空格 431 HTML表格 439 表格 441 HTML列表 461 HTML图像 469 Img标签和src属性 469 HTML背景 475 内容总结 478 独立实践 479 第二十四章:HTML进阶 480 学习目标 480 知识要点 481 表单 481 HTML框架 488 框架 488 在子窗体中访问并控制父窗体中对象 493 内容总结 495 独立实践 496 第二十五章:JavaScript介绍 497 学习目标 497 JavaScript语言概况 498 JavaScript和Java的区别 499 基于对象和面向对象 499 解释和编译 499 强变量和弱变量 500 静态联编和动态联编 500 实例 500 内容总结 503 独立实践 504 第二十六章:JavaScript基础 505 学习目标 505 基本结构 506 JavaScript代码的加入 506 基本数据类型 506 常量 507 表达式和运算符 509 实例 511 JavaScript程序构成 513 事件驱动及事件处理 516 内容总结 519 独立实践 520 第二十七章:JavaScript进阶 521 学习目标 521 基于对象的JavaScript语言 522 对象的基础知识 522 this关键词 523 new运算符 523 常用对象的属性和方法 525 算术函数的math对象 527 创建新对象 529 JavaScript中的数组 532 实例 535 文档对象功能及其作用 538 document中三个主要的对象 539 文档对象的基本元素 541 窗口及输入输出 544 输出流及文档对象 546 简单的输入、输出例子 547 内容总结 551 独立实践 552 第二十八章: Servlet 553 学习目标 553 Java Servlet概述 554 Servlet能够做什么 554 Servlet的生命周期 557 Java Servlet API 560 Web上使用的HTTP Servlet 560 处理HTTP Servlet的关键方法 560 其它相关接口的说明 561 HTTP协议基本概念及其特点 563 获取Cookie 565 HTTP响应报头--Response 566 会话管理 566 Servlet过滤器 569 Servlet监听器 576 内容总结 579 独立实践 580 第二十九章: Jsp 技术 583 学习目标 583 JSP介绍 584 JSP语法 584 模板元素 588 指令元素 588 页面指令 588 标签库指令 593 脚本元素 593 动作元素 597 598 JSP内置对象 605 Session和Application对象 610 JSP的汉字问题的原理 611 自定义标签 613 标准标签的使用 618 内容总结 621 独立实战 622 第三十章:struts入门 623 学习目标 623 Struts简介 624 什么是应用框架 624 WEB框架所要解决的问题 625 建立简单的Struts应用 627 内容总结 636 独立实践 636 第三十一章:Struts基础 637 学习目标 637 MVC 638 struts框架的优势 639 Struts如何实现Model 2, MVC 639 Struts 控制流 639 Struts framework的工作原理和组件 642 Struts ActionServlet控制器对象 642 Struts Action Classes 642 搞定Action对象 643 处理异常 643 Action的分类 643 Struts Action Mapping 646 使用ActionForward导航 647 Struts ActionForm Bean捕获表单数据 648 ActionForm的处理流程 649 Struts的其他组件 652 内容总结 653 独立实践 653 第三十二章:配置Struts组件 654 学习目标 654 三个 XML文件和一个属性文件 655 Web应用部署描述符 web.xml 655 ActionServlet的参数的配置 656 应用资源文件 658 Ant构建文件 659 配置Tiles框架 660 内容总结 661 独立实践 661 第三十三章:Struts标记库 662 学习目标 662 Struts标记库taglib介绍 663 Bean标记 663 逻辑标记 665 转发和重定向标记 668 HTML标记 669 显示错误信息的标记 673 其他HTML标记 673 模板标记 673 内容总结 676 独立实践 676 第三十四章:Hibernate基础 677 学习目标 677 Hibernate简介 678 建立简单的Hibernate应用 678 通过 Hibernate API 操纵数据库 684 Hibernate的初始化 687 访问Hibernate的Session接口 688 Hibernate工作原理图 691 内容总结 693 独立实践 693 第三十五章: 映射继承关系 694 学习目标 694 域模型关系 695 继承关系树的每个具体类对应一个表 696 创建映射文件 696 操纵持久化对象 698 选择继承关系的映射方式 699 映射多对一多态关联 702 内容总结 705 独立实践 705 第三十六章:HQL介绍 706 学习目标 706 HQL的出现 707 进入HQL世界 707 聚合 708 分组 709 在Java中使用HQL 709 内容总结 712 独立实践 712 第三十七章 Spring介绍 713 学习目标 713 Spring简介 714 IOC控制反转 714 Spring的容器 715 AOP面向切面编程 715 AOP的专业术语 715 Spring事务管理 718 Spring与Struts整合 719 Spring与Hibernate整合 721 独立实践 724
一. Java基础 5 (一). Java运行环境 5 1.eclipse的安装 5 2.jdk的安装 5 3.配置环境变量 5 (二).java语言基础 6 1.标识符 6 2. 基本数据类型 6 (三).面向对象 6 1.类和对象 6 2.类的声明 7 3.成员变量的声明 8 4成员方法的声明 8 5.创建对象 9 6.对象的使用 9 7.对象的初始化 10 8.类的封装 11 9.实例成员和类成员 13 (四).类的继承 14 1.创建子类 14 2.this引用、super引用 16 3.最终类和抽象类 18 (五).类的多态性 18 1. 方法的重载 18 2. 方法的覆盖 18 (六).接口 20 1. 定义接口 20 2. 实现接口 21 3. 内部类 23 (七).集合 30 1.Map集合 30 2. ArrayList集合 32 3. LinkedList集合 33 (八).异常处理 34 1. 异常类的产生、捕获与处理 34 2. 抛出异常 36 二. Swing程序设计 38 (一) Swing概述 38 1. 布局管理器 39 2. 流布局管理器 39 3. 边界布局管理器 41 4. 网格布局管理器 42 5. 盒式布局管理器 43 (二) 面板及组件 45 1. JPanel面板 45 2. 事件监听 48 (三) I/O输入输出 63 1. 流及输入输出流概述 63 2. File类 64 3. 带缓存的输入输出流 72 4. 序列化 76 (四) 多线程 80 1. 概念与原理 80 2. 两种实现方式 81 3. 生命周期及状态转换 84 4. 线程调度 85 5. 线程同步 92 三. Jsp 101 (一) myeclipse上配置Tomcat服务器 101 (二) Jsp+servlet+bean版HelloWorld概览 105 (三) Jsp基本页面标签 116 1. <@ page %>标签 116 2. contentType属性 118 3. pageEncoding属性 118 (四) form表单中的action,post和get 119 1. form中的action属性 119 2. from中的get和post 120 (五) jsp内置对象(request,response.session,out) 121 1. request和response 121 2. session 122 (六) Servlet的 xml配置 126 1. xml的文件结构 127 2. 通过web.xml配置文件访问servlet的流程 129 (七) servlet里面的跳转和传参数的方法 130 1. 跳转 130 2. 传参数 131 (八) jsp中文乱码问题 131 1. JSP页面乱码 132 2. 表单提交中文时出现乱码 134 3. 关于jsp在MyEclipse中打开的乱码问题 138 4. 关于html页面在eclipse中打开出现乱码情况 139 5. JSP页面通过URL传递中文参数的乱码问题 139 四、 Struts2 140 (一) 基于struts2的web应用的开发步骤 140 1. MVC设计模式() 140 2. 基于struts的web应用的开发步骤 141 3. 如何写自定义action,实体,以及业务类 141 (二) Struts2 153 1. struts2的拦截器定义以及使用 153 2. struts标签 160 3. Struts 2 标签库说明及使用 160 4. set 描述 169 5. text 描述 170 6. property 描述 170 7. Struts的异常处理 171 8. Struts的上传与下载 178 五、 Hibernate 192 (一) 前言 192 (二) 持久化层 193 (三) ORM介绍 193 (四) Hibernate 核心接口 194 1. Session接口 194 2. SessionFactory接口 194 3. Configuration类 194 4. Transaction接口 195 5. Query和Criteria接口 195 (五) Hibernate的安装和配置 195 1. 安装Hibernate 195 2. 映射文件 197 3. Hibernate配置 200 (六) 通过Session完成基本操作 204 1. 保存数据(源代码:hibernate_0100) 204 2. 删除数据(源代码:hibernate_0200) 205 3. 更新数据(源代码:hibernate_0300) 207 4. 加载数据(源代码:hibernate_0400) 208 5. 缓存 211 6. 对象映射配置 212 7. 元素介绍 212 8. 元素介绍 212 9. 元素介绍 213 10. 元素介绍 214 (七) ID的生成策略 215 1. increment 216 2. identity 216 3. sequence 216 4. hilo 217 5. seqhilo 217 6. uuid 217 7. guid 217 8. native 217 9. assigned 217 10. select 217 11. foreign 218 (八) 复合自然主键实例(源代码hibernate_0500) 218 (九) Hibernate的类型 224 1. Java基本值类型的Hibernate映射 224 2. Java时间和日期类型的Hibernate映射类型 224 3. Java大对象类型的Hibernate映射类型 225 4. 关联关系映射 225 5. Hibernate的事务与并发 238 (十) 数据库 240 1. 数据库的基本概念 240 2. 数据模型 240 3. 关系模型 241 数据流图(Data Flow Diagram,DFD) 241 E-R图 241 4. 关系规范化 242 5. Mysql 的安装 243 6. Transact-SQL 256 7. 物理结构分为三类 257 8. 数据完整性 258 9. 数据库备份: .bak 258 七. Spring 3.X 259 (一) IoC 261 1. 控制反转(IoC) 261 2. 利用Spring IoC方式 编写 263 3. 设置Bean作用域 265 4. 为Bean配置集合(List,Set,Map) 266 5. 调用构造方法创建Bean 271 6. 指定Bean引用与自动装配 276 (二) AOP 278 1. AOP简介 278 (三) Spring 3.X 新特性(JavaConfig,SpEL)简介 285 1. JavaConfig 285 2. SpEL 287

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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