想使用SpringAOP来简化javaSwing中各种基础结构功能的开发,来降低藕合性。做法如下:某设定表读取在程序中使用缓存机制,为了方便同步数据库与缓存,
使用AOP编写了一个Aspect来监控DAO中的insert和update操作,
并实时同步更新程序中的缓存值。当此Aspect在单线程中跑时一切正常,一旦同时开启另一个线程来作业
就会出现问题,传入到DAO中的Connection会被莫名的关闭,直接导致程序Crash.
去搜索线程和AOP等资料,也没有找到有用的信息,麻烦各位大大能给予指导。在此谢过!
使用AOP编写了一个Aspect来监控DAO中的insert和update操作,
并实时同步更新程序中的缓存值。当此Aspect在单线程中跑时一切正常,一旦同时开启另一个线程来作业
就会出现问题,传入到DAO中的Connection会被莫名的关闭,直接导致程序Crash.
去搜索线程和AOP等资料,也没有找到有用的信息,麻烦各位大大能给予指导。在此谢过!
获得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莫名被关闭掉。
不过一般关闭连接的可能也不是很多,或许是在开启另一个线程时导致了对相同文件的挣抢
引起了死锁吧.关闭连接也是必然的.
ps:猜测而已
我现在在想怎么能让每次获得的实体bean都是单独的实体,而不是同一个呢,因为程序的DAO已经封装死了,不可能继承于clonable对象,有点麻烦,或者看有没有其它更好的方法。
看看各位大有没有好些的方法,SpringWeb中是怎么来控制和处理,当在server startup时加载xml配置档,在使用时直接用context.getBean就OK了,他每次获得的应该都是新的物件,否则要是同一个物件程序肯定挂掉了,得找一找Spring高后来帮忙挖掘挖掘。
此问题最终的解决方式是暂取消SpringAOP在Swing中的就用,执行效率暂时还不可接受,到研究更加透彻时再在Swing中启用AOP。
谢谢各位! 结贴!