jd学习笔记2

来源:互联网 发布:网络运营推广方案模板 编辑:程序博客网 时间:2024/05/24 01:48

Demo学习笔记:

一、首先这个Demo是分成4个module:

1.common:里边有些复用性高,其他module共用的代码比如(导出,分页,workEngine)。

2.project:里边有项目中用到的代码,包括:基于MVC设计模式的代码实现,工具类,自定义的枚举类等等。
3.web:里边包括spring容器(其中包括springMVC,velocity,mybatis的集成)的配置,jsf的配置,项目中用到的页面,网页中用到的资源等等。

4.worker:里边包括项目中的任务配置(包括定时任务和事件驱动任务)。

二、项目中module之间的调用关系

1.project模块和worker模块都会调用到common模块中的代码,所以**common会打成jar包添加到   project和worker的maven中。**2.**project也会打成jar包添加到web的maven中。**3.**web和worker将会打成war包进行部署。**

三、基于velocity页面设计方式

1.首先在配置velocity的时候可以先指定一个页面的默认的layout, 里边有页面重复的代码。**    包括页面的header,bottom  包括用到的jar包,和网站的信息、<html><body></body></html>标签。**2.根据不同的请求、响应,创建不同的子页面,子页面只需要实现某个<div>或者是<class>中的内容,然后填充在默认模板中**$screen_content**的占位符中。

四、velocity渲染页面的过程:

velocity把请求的模板进行渲染,然后将渲染的结果(String类型的字符串),作为参数返回给layout页面,参数名称就是screen_content(这时它就相当于一个变量),然后就相当于velocity调用这个变量,产生页面。

代码学习笔记:

一、关于命名方式

除了包名,配置文件名,其他(包括类名,属性名,方法名)都应遵照驼峰式命名规则。

二、关于方法的参数

方法中所需要参数应保持格式整齐和必要的缩进,方便查找和修改。

三、关于SQL语句的格式

在Mybatis中的映射文件中,sql语句应该垂直编写,不同的列属性应垂直排放,方便查看

四、必要的数据校验

在controller中应该对请求中大部分参数设置默认值,并且的必要的参数进行校验,防止程序异常。

五、对数据库敏感操作 添加状态值判断

在进行整体更新或者删除操作时,应该添加状态值 ,避免出重复更新,幻读的现象
在进行数据库操作时,应该对成功与否进行判断,如果失败了即使抛出异常,好让事务进行回滚,进行回滚,进行回滚,说三遍。

六、应该给整个项目添加全局异常处理

添加springMVC的全局异常处理器,给程序兜底,防止没有拦截到的错误暴露给客户,终止程序。

JSF学习笔记:

JSF适合于分布式架构下,服务与服务之间的同步调用,解决同时访问一个服务造成并发量大的问题。也就是同一个服务可以分散开。

JSF 特性:

    水平扩展:一个服务有多个服务器可以选择,JSF会自动选择负载娇小的服务器 已达到负载均衡。      多次请求:同过JSF调用的服务如果响应失败不会立即返回错误结果,而是会在注册中心多次尝试直到超时。

1.JSF的发布:
在配置文件中添加服务的实现类(相应的Bean)
在配置文件中声明JSF的注册中心 比如:i.jsf.jd.com
添加Server 指明端口号、协议 等等
发布服务 interface地址/alias/引用的实现(注册的Bean)/注册的Server

2.JSF的调用:
在配置文件声明服务的注册中心
消费服务 指明interface地址/alias/protocol/timeout等属性。

注意

同一个接口不能同时发布两个服务,这样会导致第二个服务发布不了,因为这时接口已经被第一个服务导出。

如图所示

             请求服务  customer ———————————registry—————————————provider                                返回相应实现

worker学习笔记:

Demo中的worker是基于Quartz实现的,所以使用worker 需要往spring中声明WorkerQuartzUtil的bean,并指明一些必要属性包括ApplicationId,taskManager,basePages(用来扫描包下的workerEngine),或者自己注入任务类。自定的worker任务类需要实现CycleWorkerEngine或者MysqlTaskWorkerEngine接口然后重写一些方法(类似getWorkTypeCode),相当于在TaskManager中注册相应的任务类。
原创粉丝点击