读《expert one-on-one J2EE Development without EJB 》
简单翻阅了一下这本经典书籍,并没有像有些读者那样的醍醐灌顶,大彻大悟的感觉。一是可能入行时间短,从开始使用框架进行web的开发就一只使用spring,对于EJB没有亲身使用经验。二是可能道行太浅,没有理解书中作者的深刻思想。博客用于简单记录读书过程中感觉有价值的一些点,可能是思想上的也可能是一些概念理论,没有章法。
前几章节的EJB不作记录,不知道他在说啥
第六章:轻量级容器与控制反转
工厂模式学习:https://blog.****.net/Hnkuo/article/details/80950565
无状态会话bean:SLSB bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。但无状态会话bean并非没有状态,如果它有自己的属性(变量),那么这些变量就会受到所有调用它的用户的影响,这是在实际应用中必须注意的。
有状态会话bean:每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。
针对接口编程,而非针对类编程
1.站在你的角度:没有实现接口自己直接写类,例如我要写一个PersonDao类.首先我就要想返回一个什么值给你呢 ?返回一个具体参数值呢还是返回一个对象给你呢?好吧.不知道...去翻别人的类的代码.(烦死了)...我CAO别人还没写..没得翻!!!!纠结!!去问项目经理你要什么值!!!项目经理不在????.....好吧晕了......到方法名了:方法名代表了这个方法的意义:例如保存一个对象.有些人爱用SAVE(),有些爱用ADD().到底用哪个呢?
2.你的同事(使用你的类.你的类调用者):我CAO.为毛有些人返回给我的是参数.有些人返回给我的对象.搞毛线啊.怎么处理啊!!!为什么有些用SAVE方法.有些用ADD方法名????去翻你代码,晕了
总结一下:JAVA的JDBC就是一种接口规范.SUN公司写好一系列接口.规定返回值.各大数据库厂商的代码我不管你怎么实现.命名.返回值.传入值是定死的.方便了调用者.也方便了实现者.这就是编程规范.
对内的业务功能可以只有实现类干掉接口
优先使用策略模式而不是继承
策略模式:https://blog.****.net/Hnkuo/article/details/81033336
第七章:Spring框架简介
spring核心主要两部分:
(1)aop:面向切面编程,扩展功能不是修改源代码实现
AOP学习:https://blog.****.net/Hnkuo/article/details/81040222
(2)ioc:控制反转
IOC学习:https://blog.****.net/Hnkuo/article/details/81040222
尽可能将资源查找代码从应用对象中移出,应用对象应该从外部获得连接工厂,这是将IOC的基本原则应用于资源之上,在任何环境下都可以灵活地配置应用对象,并且——同样重复地——轻松地测试它们。
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。目录服务是命名服务的一种自然扩展。两者之间的关键差别是目录服务中对象不但可以有名称还可以有属性(例如,用户有email地址),而命名服务中对象没有属性
尽量使用普遍性高,特殊性少的接口
第八章:基于AOP概念的声明性中间件
代码重复是最糟糕的代码臭味,只要出现重复的代码,必定有什么地方存在严重的问题,要么设计有问题,要么是实现有问题。
装饰器模式学习:https://blog.****.net/Hnkuo/article/details/81035167
观察者模式学习:http://www.runoob.com/design-pattern/observer-pattern.html
责任链模式学习:
CGLIB动态代理:https://www.jianshu.com/p/9a61af393e41?from=timeline&isappinstalled=0
元数据:又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的 信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能
任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文 件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode...)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
元数据是指用来描述数据的数据,更通俗一点,就是描述代码间关系,或者代码与其他资源(例如数据 库 表)之间内在联系的数据。在一些技术框架,如struts、EJB、hibernate就不知不觉用到了元数据。对struts来说,元数据指的是struts-config.xml;对EJB来说,就是ejb-jar.xml和厂商自定义的xml文件;对hibernate来说就是hbm文件。以上阐述的几种元数据都是基于xml文件的或者其他形式的单独配置文件。这样表示有些不便之处。一、与被描述的文件分离,不利于一致性的维护;第二、所有这样文件都是ASCII文件,没有显式的类型支持。基于元数据的广泛应用,JDK5.0引入了Annotation的概念来描述元数据。在java中,元数据以标签的形式存在于java代码中,元数据标签的存在并不影响程序代码的编译和执行。
第九章:事务管理
不要为不必要的需求买单
第十一章:远程调用
未完待续....