【244期门诊集锦】入木三分、鞭辟入里掌握Spring

企业动态
在精典的SSH开源组合框架中,也许你会用Spring MVC替换Struts,用myBatis替换Hibernate,唯一难以舍弃的就是Spring。不管新技术如何层出不穷,各领风骚,但Spring始终历久弥香,散发着无穷的魅力。Spring涵盖了Java企业应用开发的纲络,学习Spring不应局限于Spring本身,而应以Java应用开发的大视野入木三分、鞭辟入里地学习并掌握Spring,以期在驾驭大型Java应用开发中做到气定神闲,游刃有余。
    技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问。从热门技术到前沿知识,从技术答疑到职业规划。每期一个主题,站在***最热的技术前沿为你引航!

  本期特邀知名作家、开源框架专家陈雄华老师,针对Spring学习过程中遇到的问题给予解答。欢迎网友积极提问,与专家一起讨论!     

 

查看本期门诊精彩实录:http://doctor.51cto.com/develop-258.html

精选本期网友提问与专家解答,以供网友学习参考。

Q:老师好:如何学习Spring?需要掌握哪些知识?Spring 3.0比2.0有哪些差异及改进?
A:
1)核心API更新到Java 5.0
2)新增Spring表达式语言

3)可通过Java类提供IoC配置信息
4)通用类型转换系统和属性格式化系统
5)数据访问层新增OXM功能
6)Spring 3.0最令人振奋的一个增强是Spring MVC提供了对REST风格编程的支持
7)声明式模型验证,全面支持JSR-303的Bean验证API
8)对JavaEE 6的支持
9)支持内嵌的数据库
 

Q:老师您好,学习Spring需要掌握哪些Java基础知识?如果深入了解并掌握Spring?


 

A:大致需要以下的知识:
   1)Java反射知识;
   2)Java动态代理知识;
   3) Java注解知识;
   4) PropertyEditor的知识;
   5) ThreadLocal的知识;
   6) 国际化消息的知识;
   这些Java基础知识在《Spring 3.x企业应用开发实战》中都有介绍,为读者做好的Java基础知识的铺垫,减少了读者阅读的难度。

如果深入了解并掌握Spring?先尝试在项目中使用Spring,然后再有机会了解Spring的技术内幕,技术内幕在书的第3,5章有讲解,再此基础上建议你开始读读Spring的源码.读了Spring源码,一定会让你的Java功力和OOA,OOP能力大增!

 

 

Q:老师好:您好,公司有个项目,其中一个LogicImpl里面执行了除常用biz logic之外的,侏儒去外网抓取一些数据,socket和其他系统之间的通信的功能(使用还比较频繁)。有一次,系统突然D了,一看,JDBC pool全满了。后来该类实现了spring的ApplicationContextAware接口,后面在用的时候就通过applicationcontex上下文的getBean去取本类的实例。这样就解决了。想必这个接口您应该也熟悉吧。区别在于改动后,吧一些操作交给了spring的来管理,限于原因,没仔细去追究,spring源码也一直没时间去细看。不知道您是否遇到过,能否详细的说明一下这个事情的原因?如果没遇到过,您也可以对这个接口说一下您自己的看法,谢谢
A:
感谢您的提问。
我的猜测是,你的这个业务类方法由于执行时间较长,他持有Connection的时间就长,所以并发性就差。 因此需要把数据库访问的逻辑放在一个事务方法中,数据访问完成后,就马上将连接释放给连接池。引入ApplicationContextAware后,通过getBean的方法和直接Autowried 是没有区别的,因此你的问题,我觉得还是没有彻底解决。我不知道,你原来这个LogicImpl是不是单实例的, 在Spring中管理的Bean都是单实例的,它可以有效提高并发性。建议你将对外网操作这些逻辑和数据库访问逻辑分开来,对外网的操作较重,可以放到一个异步操作中去做,不要和数据库访问放在一起,这样可以降低对数据库连接占用的时间,提高并发性。
 

Q:专家们好,你好!在用SPRING管理数据库数据源时一般都会显示用户名和密码等敏感信息,用sping来加载数据源,如何保障安全性的问题?
A:
这个问题很好,说明你对Spring的应用已经比较深了。可以覆盖PropertyPlaceholderConfigurer类的以下几个方法:
1)void convertProperties(Properties props):属性文件中的所有属性值都封装在props中,覆盖此方法,可以对所有的属性值进行转换处理。
2)String convertProperty(String propertyName, String propertyValue):在加载属性文件并读取文件中的每个属性时,都会调用此方法进行转换处理。
3)String convertPropertyValue(String originalValue):和上一个方法类似,只不过没有传入属性名。
 

Q:陈老师您好,我用SSH开发了两个企业门户系统,开发起来很容易,可正式上线后,就感觉系统速度不够流畅了,而且越运行就会越慢,人家服务商那边说我们的系统老是把他们的服务器内存跑爆掉,真不知道是什么原因引起的,不知Spring有没有什么好的解决方案?
A:
非常感谢您的问题。
如果是互联网的项目,不在建议使用Hibernate,因为Hibernate对缓存的管理层面比较高,不方便做经细化的缓存管理。我现在的项目也是互联网项目,我是采用Spring MVC+Spring +myBatis+memcached+freemaker.Spring本身是不会耗资源的,阿里巴巴就是使用Spring的。

责任编辑:51CTO互动部 来源: http://doctor.51cto.com
相关推荐

2012-04-19 14:32:46

2012-04-26 13:34:55

技术门诊技术人虚拟化

2012-05-30 17:59:17

2012-05-25 17:21:49

技术门诊技术人软考

2012-05-25 18:12:48

技术门诊技术人软考

2021-12-17 07:47:37

IT风险框架

2022-03-26 09:06:40

ActorCSP模型

2017-03-15 15:11:52

开发者

2009-10-29 16:22:10

VB.NET操作MyS

2017-11-20 10:37:03

2024-08-05 00:04:00

JSWeb应用

2023-12-23 18:04:40

服务Eureka工具

2022-02-16 19:42:25

Spring配置开发

2017-11-20 10:35:36

2024-05-16 11:13:16

Helm工具release

2021-09-16 10:29:05

开发技能代码

2023-01-18 07:48:32

缓存穿透缓存击穿redis

2009-11-09 12:55:43

WCF事务

2017-09-11 14:08:50

技术坐诊

2017-07-12 14:21:41

技术坐诊
点赞
收藏

51CTO技术栈公众号